extensions/net.sf.basedb.meludi/trunk/src/net/sf/basedb/meludi/servlet/ProtocolServlet.java

Code
Comments
Other
Rev Date Author Line
2933 14 Nov 14 olle 1 package net.sf.basedb.meludi.servlet;
2933 14 Nov 14 olle 2
2933 14 Nov 14 olle 3 import java.io.IOException;
2933 14 Nov 14 olle 4
2933 14 Nov 14 olle 5 import javax.servlet.ServletException;
2933 14 Nov 14 olle 6 import javax.servlet.http.HttpServlet;
2933 14 Nov 14 olle 7 import javax.servlet.http.HttpServletRequest;
2933 14 Nov 14 olle 8 import javax.servlet.http.HttpServletResponse;
2933 14 Nov 14 olle 9
2933 14 Nov 14 olle 10 import org.json.simple.JSONArray;
2933 14 Nov 14 olle 11 import org.json.simple.JSONObject;
2933 14 Nov 14 olle 12
2933 14 Nov 14 olle 13 import net.sf.basedb.core.Application;
2933 14 Nov 14 olle 14 import net.sf.basedb.core.DbControl;
2933 14 Nov 14 olle 15 import net.sf.basedb.core.ItemQuery;
2933 14 Nov 14 olle 16 import net.sf.basedb.core.Project;
2933 14 Nov 14 olle 17 import net.sf.basedb.core.Protocol;
2933 14 Nov 14 olle 18 import net.sf.basedb.core.SessionControl;
2933 14 Nov 14 olle 19 import net.sf.basedb.core.query.Hql;
2933 14 Nov 14 olle 20 import net.sf.basedb.core.query.Orders;
2933 14 Nov 14 olle 21 import net.sf.basedb.meludi.JsonUtil;
2933 14 Nov 14 olle 22 import net.sf.basedb.meludi.Meludi;
2933 14 Nov 14 olle 23 import net.sf.basedb.meludi.dao.Subtype;
2933 14 Nov 14 olle 24 import net.sf.basedb.util.error.ThrowableUtil;
2933 14 Nov 14 olle 25
2933 14 Nov 14 olle 26 /**
2933 14 Nov 14 olle 27   Get information about protocols.
2933 14 Nov 14 olle 28   
2933 14 Nov 14 olle 29   @author nicklas
2933 14 Nov 14 olle 30    @since 2.7
2933 14 Nov 14 olle 31 */
2933 14 Nov 14 olle 32 public class ProtocolServlet 
2933 14 Nov 14 olle 33   extends HttpServlet 
2933 14 Nov 14 olle 34 {
2933 14 Nov 14 olle 35
2933 14 Nov 14 olle 36
2933 14 Nov 14 olle 37   private static final long serialVersionUID = -2033935577320928224L;
2933 14 Nov 14 olle 38
2933 14 Nov 14 olle 39   public ProtocolServlet()
2933 14 Nov 14 olle 40   {}
2933 14 Nov 14 olle 41
2933 14 Nov 14 olle 42   @SuppressWarnings("unchecked")
2933 14 Nov 14 olle 43   @Override
2933 14 Nov 14 olle 44   protected void doGet(HttpServletRequest req, HttpServletResponse resp)
2933 14 Nov 14 olle 45     throws ServletException, IOException 
2933 14 Nov 14 olle 46   {
2933 14 Nov 14 olle 47
2933 14 Nov 14 olle 48     String ID = req.getParameter("ID");
2933 14 Nov 14 olle 49     String cmd = req.getParameter("cmd");
2933 14 Nov 14 olle 50     JsonUtil.setJsonResponseHeaders(resp);
2933 14 Nov 14 olle 51     
2933 14 Nov 14 olle 52     JSONObject json = new JSONObject();
2933 14 Nov 14 olle 53     json.put("status", "ok");
2933 14 Nov 14 olle 54   
5468 04 Jun 19 olle 55     //final SessionControl sc = Application.getSessionControl(ID, req.getRemoteAddr());
5744 20 Nov 19 olle 56     //final SessionControl sc  = Application.getSessionControl(ID, "", req.getRemoteAddr(), true);
5744 20 Nov 19 olle 57     final SessionControl sc  = Application.getSessionControl(ID, null, req.getRemoteAddr(), true);
2933 14 Nov 14 olle 58     DbControl dc = null;
2933 14 Nov 14 olle 59     try
2933 14 Nov 14 olle 60     {
2933 14 Nov 14 olle 61       if ("GetProtocols".equals(cmd))
2933 14 Nov 14 olle 62       {
2933 14 Nov 14 olle 63         /*
2933 14 Nov 14 olle 64           Get information about protocols. Add filter for optional 'subtype' parameter.
2933 14 Nov 14 olle 65           Sort by name.
2933 14 Nov 14 olle 66         */
2933 14 Nov 14 olle 67         dc = sc.newDbControl();
2933 14 Nov 14 olle 68         ItemQuery<Protocol> query = Protocol.getQuery();
2933 14 Nov 14 olle 69         query.setIncludes(Meludi.INCLUDE_IN_CURRENT_PROJECT);
2933 14 Nov 14 olle 70         Subtype subtype = Subtype.getByCName(req.getParameter("subtype"));
2933 14 Nov 14 olle 71         if (subtype != null)
2933 14 Nov 14 olle 72         {
2933 14 Nov 14 olle 73           subtype.addFilter(dc, query);
2933 14 Nov 14 olle 74         }
2933 14 Nov 14 olle 75         query.order(Orders.asc(Hql.property("name")));
2933 14 Nov 14 olle 76         query.order(Orders.asc(Hql.property("id")));
2933 14 Nov 14 olle 77         
2933 14 Nov 14 olle 78         Project project = sc.getActiveProjectId() == 0 ? null : Project.getById(dc, sc.getActiveProjectId());
2933 14 Nov 14 olle 79         
2933 14 Nov 14 olle 80         JSONArray jsonProtocols = new JSONArray();
2933 14 Nov 14 olle 81         JSONObject jsonDefault = null;
2933 14 Nov 14 olle 82         int defaultProtocolId = -1;
2933 14 Nov 14 olle 83         for (Protocol p : query.list(dc))
2933 14 Nov 14 olle 84         {
2933 14 Nov 14 olle 85           JSONObject jsonProtocol = new JSONObject();
2933 14 Nov 14 olle 86           jsonProtocol.put("id", p.getId());
2933 14 Nov 14 olle 87           jsonProtocol.put("name", p.getName());
2933 14 Nov 14 olle 88           jsonProtocols.add(jsonProtocol);
2933 14 Nov 14 olle 89           
2933 14 Nov 14 olle 90           // Check if the current protocol is the latest default protocol
2933 14 Nov 14 olle 91           if (project != null && project.isDefaultItem(p) && p.getId() > defaultProtocolId)
2933 14 Nov 14 olle 92           {
2933 14 Nov 14 olle 93             defaultProtocolId = p.getId();
2933 14 Nov 14 olle 94             jsonDefault = jsonProtocol;
2933 14 Nov 14 olle 95           }
2933 14 Nov 14 olle 96         }
2933 14 Nov 14 olle 97         if (jsonDefault != null)
2933 14 Nov 14 olle 98         {
2933 14 Nov 14 olle 99           jsonDefault.put("isDefault", true);
2933 14 Nov 14 olle 100         }
2933 14 Nov 14 olle 101         json.put("protocols", jsonProtocols);
2933 14 Nov 14 olle 102       }
2933 14 Nov 14 olle 103       
2933 14 Nov 14 olle 104     }
2933 14 Nov 14 olle 105     catch (Throwable t)
2933 14 Nov 14 olle 106     {
2933 14 Nov 14 olle 107       t.printStackTrace();
2933 14 Nov 14 olle 108       json.clear();
2933 14 Nov 14 olle 109       json.put("status", "error");
2933 14 Nov 14 olle 110       json.put("message", t.getMessage());
2933 14 Nov 14 olle 111       json.put("stacktrace", ThrowableUtil.stackTraceToString(t));
2933 14 Nov 14 olle 112     }
2933 14 Nov 14 olle 113     finally
2933 14 Nov 14 olle 114     {
2933 14 Nov 14 olle 115       if (dc != null) dc.close();
2933 14 Nov 14 olle 116       json.writeJSONString(resp.getWriter());
2933 14 Nov 14 olle 117     }
2933 14 Nov 14 olle 118     
2933 14 Nov 14 olle 119   }
2933 14 Nov 14 olle 120
2933 14 Nov 14 olle 121   
2933 14 Nov 14 olle 122 }