001/**
002 * Copyright (C) 2014  Universidade de Aveiro, DETI/IEETA, Bioinformatics Group - http://bioinformatics.ua.pt/
003 *
004 * This file is part of Dicoogle/dicoogle.
005 *
006 * Dicoogle/dicoogle is free software: you can redistribute it and/or modify
007 * it under the terms of the GNU General Public License as published by
008 * the Free Software Foundation, either version 3 of the License, or
009 * (at your option) any later version.
010 *
011 * Dicoogle/dicoogle is distributed in the hope that it will be useful,
012 * but WITHOUT ANY WARRANTY; without even the implied warranty of
013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
014 * GNU General Public License for more details.
015 *
016 * You should have received a copy of the GNU General Public License
017 * along with Dicoogle.  If not, see <http://www.gnu.org/licenses/>.
018 */
019package pt.ua.dicoogle.server.web.servlets.search;
020
021import java.io.IOException;
022import java.util.ArrayList;
023import java.util.HashMap;
024import java.util.concurrent.ExecutionException;
025
026import javax.servlet.ServletException;
027import javax.servlet.http.HttpServlet;
028import javax.servlet.http.HttpServletRequest;
029import javax.servlet.http.HttpServletResponse;
030
031import org.apache.commons.lang3.StringUtils;
032
033import pt.ua.dicoogle.plugins.PluginController;
034import pt.ua.dicoogle.sdk.datastructs.SearchResult;
035import pt.ua.dicoogle.sdk.task.JointQueryTask;
036import pt.ua.dicoogle.sdk.task.Task;
037
038/**
039 * @author Frederico Silva <fredericosilva@ua.pt>
040 * @todo
041 */
042public class WadoServlet extends HttpServlet{
043
044        @Override
045        protected void doGet(HttpServletRequest req, HttpServletResponse resp)
046                        throws ServletException, IOException {
047                
048                String uid = req.getParameter("uid");
049                if (StringUtils.isEmpty(uid)) {
050            resp.sendError(400, "No uid supplied!\n"
051                        + "/wado?uid=UID");
052            return;
053        }
054                
055                String query = "SOPInstanceUID:" + uid;
056                
057                HashMap<String, String> extraFields = new HashMap<>();
058        extraFields.put("SOPInstanceUID", "SOPInstanceUID");
059                
060                PluginController pc = PluginController.getInstance();
061        JointQueryTask task = new MyHolder();
062        
063        Iterable<SearchResult> results = null;
064        try {
065                        results = pc.queryAll(task, query, extraFields).get();
066                } catch (InterruptedException | ExecutionException e) {
067                        e.printStackTrace();
068                }
069        
070        
071        String uri ="not";
072        
073        ArrayList<SearchResult> resultsArr = new ArrayList<>();
074        for (SearchResult r : results) {
075            resultsArr.add(r);
076            
077            uri = r.getURI().toURL().toString();
078        }
079        
080        resp.getWriter().print(uri);
081        }
082        
083         private static class MyHolder extends JointQueryTask {
084         
085                @Override
086                public void onCompletion() {
087                }
088
089                @Override
090                public void onReceive(Task<Iterable<SearchResult>> e) {
091                }
092            }    
093
094}