extensions/net.sf.basedb.meludi/trunk/src/net/sf/basedb/meludi/servlet/SessionServlet.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.JSONObject;
2933 14 Nov 14 olle 11
2933 14 Nov 14 olle 12 import net.sf.basedb.core.Application;
2933 14 Nov 14 olle 13 import net.sf.basedb.core.DbControl;
2933 14 Nov 14 olle 14 import net.sf.basedb.core.Directory;
2933 14 Nov 14 olle 15 import net.sf.basedb.core.Item;
2933 14 Nov 14 olle 16 import net.sf.basedb.core.Path;
4159 17 Oct 16 olle 17 import net.sf.basedb.core.Project;
2933 14 Nov 14 olle 18 import net.sf.basedb.core.SessionControl;
2933 14 Nov 14 olle 19 import net.sf.basedb.meludi.JsonUtil;
4151 04 Oct 16 olle 20 import net.sf.basedb.meludi.Meludi;
3100 21 Jan 15 olle 21 import net.sf.basedb.meludi.counter.CounterService;
2933 14 Nov 14 olle 22 import net.sf.basedb.util.Values;
2933 14 Nov 14 olle 23 import net.sf.basedb.util.error.ThrowableUtil;
2933 14 Nov 14 olle 24
2933 14 Nov 14 olle 25 /**
2933 14 Nov 14 olle 26   Get information about the current session.
2933 14 Nov 14 olle 27   
2933 14 Nov 14 olle 28   @author nicklas
2933 14 Nov 14 olle 29    @since 2.12
2933 14 Nov 14 olle 30 */
2933 14 Nov 14 olle 31 public class SessionServlet 
2933 14 Nov 14 olle 32   extends HttpServlet 
2933 14 Nov 14 olle 33 {
2933 14 Nov 14 olle 34
2933 14 Nov 14 olle 35   private static final long serialVersionUID = -1308781977707573172L;
2933 14 Nov 14 olle 36
2933 14 Nov 14 olle 37   public SessionServlet()
2933 14 Nov 14 olle 38   {}
2933 14 Nov 14 olle 39
2933 14 Nov 14 olle 40   @SuppressWarnings("unchecked")
2933 14 Nov 14 olle 41   @Override
2933 14 Nov 14 olle 42   protected void doGet(HttpServletRequest req, HttpServletResponse resp)
2933 14 Nov 14 olle 43     throws ServletException, IOException 
2933 14 Nov 14 olle 44   {
2933 14 Nov 14 olle 45
2933 14 Nov 14 olle 46     String ID = req.getParameter("ID");
2933 14 Nov 14 olle 47     String cmd = req.getParameter("cmd");
2933 14 Nov 14 olle 48     JsonUtil.setJsonResponseHeaders(resp);
2933 14 Nov 14 olle 49     
2933 14 Nov 14 olle 50     JSONObject json = new JSONObject();
2933 14 Nov 14 olle 51     json.put("status", "ok");
2933 14 Nov 14 olle 52   
2933 14 Nov 14 olle 53     SessionControl sc = null;
2933 14 Nov 14 olle 54     DbControl dc = null;
2933 14 Nov 14 olle 55     try
2933 14 Nov 14 olle 56     {
2933 14 Nov 14 olle 57       if ("CheckSession".equals(cmd))
2933 14 Nov 14 olle 58       {
2933 14 Nov 14 olle 59         boolean simulateTimeout = Values.getBoolean(req.getParameter("simulateTimeout"));
2933 14 Nov 14 olle 60         JSONObject jsonSession = null;
2933 14 Nov 14 olle 61         try
2933 14 Nov 14 olle 62         {
5468 04 Jun 19 olle 63           //sc = Application.getSessionControl(ID, req.getRemoteAddr());
5744 20 Nov 19 olle 64           //sc = Application.getSessionControl(ID, "", req.getRemoteAddr(), true);
5744 20 Nov 19 olle 65           sc = Application.getSessionControl(ID, null, req.getRemoteAddr(), true);
2933 14 Nov 14 olle 66           if (sc.isLoggedIn())
2933 14 Nov 14 olle 67           {
2933 14 Nov 14 olle 68             if (simulateTimeout)
2933 14 Nov 14 olle 69             {
2933 14 Nov 14 olle 70               // Actually, not a simulation
2933 14 Nov 14 olle 71               sc.logout();
2933 14 Nov 14 olle 72             }
2933 14 Nov 14 olle 73             else
2933 14 Nov 14 olle 74             {
2933 14 Nov 14 olle 75               sc.updateLastAccess();
2933 14 Nov 14 olle 76               jsonSession = new JSONObject();
2933 14 Nov 14 olle 77               jsonSession.put("id", sc.getId());
2933 14 Nov 14 olle 78               jsonSession.put("lastAccess", sc.getLastAccess());
2933 14 Nov 14 olle 79             }
2933 14 Nov 14 olle 80           }
2933 14 Nov 14 olle 81         }
2933 14 Nov 14 olle 82         catch (RuntimeException ex)
2933 14 Nov 14 olle 83         {}
2933 14 Nov 14 olle 84         json.put("session", jsonSession);
2933 14 Nov 14 olle 85       }
2933 14 Nov 14 olle 86       else if ("SetCurrentDirectory".equals(cmd))
2933 14 Nov 14 olle 87       {
5468 04 Jun 19 olle 88         //sc = Application.getSessionControl(ID, req.getRemoteAddr());
5744 20 Nov 19 olle 89         //sc = Application.getSessionControl(ID, "", req.getRemoteAddr(), true);
5744 20 Nov 19 olle 90         sc = Application.getSessionControl(ID, null, req.getRemoteAddr(), true);
2933 14 Nov 14 olle 91         dc = sc.newDbControl();
2933 14 Nov 14 olle 92         Path path = new Path(req.getParameter("path"), Path.Type.DIRECTORY);
2933 14 Nov 14 olle 93         try
2933 14 Nov 14 olle 94         {
2933 14 Nov 14 olle 95           int pathId = Directory.getIdFromPath(dc, path);
2933 14 Nov 14 olle 96           sc.getCurrentContext(Item.DIRECTORY).setId(pathId);
2933 14 Nov 14 olle 97           
2933 14 Nov 14 olle 98           JSONObject jsonPath = new JSONObject();
2933 14 Nov 14 olle 99           jsonPath.put("id", pathId);
2933 14 Nov 14 olle 100           jsonPath.put("name", path.toString());
2933 14 Nov 14 olle 101           json.put("path", jsonPath);
2933 14 Nov 14 olle 102         }
2933 14 Nov 14 olle 103         catch (RuntimeException ex)
2933 14 Nov 14 olle 104         {}
2933 14 Nov 14 olle 105       }
3100 21 Jan 15 olle 106       else if ("GetCounters".equals(cmd))
3100 21 Jan 15 olle 107       {
4127 26 Sep 16 olle 108         //json.put("counts", CounterService.getInstance().getCurrentCounts());
5468 04 Jun 19 olle 109         //sc = Application.getSessionControl(ID, req.getRemoteAddr());
5744 20 Nov 19 olle 110         //sc = Application.getSessionControl(ID, "", req.getRemoteAddr(), true);
5744 20 Nov 19 olle 111         sc = Application.getSessionControl(ID, null, req.getRemoteAddr(), true);
4127 26 Sep 16 olle 112         int activeProjectId = sc.getActiveProjectId();
4127 26 Sep 16 olle 113         json.put("counts", CounterService.getInstance().getCurrentProjectCounts(activeProjectId));
3100 21 Jan 15 olle 114       }
4159 17 Oct 16 olle 115       else if ("GetActiveProjectName".equals(cmd))
4159 17 Oct 16 olle 116       {
5468 04 Jun 19 olle 117         //sc = Application.getSessionControl(ID, req.getRemoteAddr());
5744 20 Nov 19 olle 118         //sc = Application.getSessionControl(ID, "", req.getRemoteAddr(), true);
5744 20 Nov 19 olle 119         sc = Application.getSessionControl(ID, null, req.getRemoteAddr(), true);
4159 17 Oct 16 olle 120         String projectName = "- no active project -";
4159 17 Oct 16 olle 121         int activeProjectId = sc.getActiveProjectId();
4159 17 Oct 16 olle 122         if (activeProjectId > 0)
4159 17 Oct 16 olle 123         {
4159 17 Oct 16 olle 124           dc = sc.newDbControl();
4159 17 Oct 16 olle 125           Project project = Project.getById(dc, activeProjectId);
4159 17 Oct 16 olle 126           if (project != null)
4159 17 Oct 16 olle 127           {
4159 17 Oct 16 olle 128             projectName = project.getName();
4159 17 Oct 16 olle 129           }
4159 17 Oct 16 olle 130         }
4159 17 Oct 16 olle 131         json.put("projectname", projectName);
4159 17 Oct 16 olle 132       }
4151 04 Oct 16 olle 133       else if ("GetConfiguration".equals(cmd))
4151 04 Oct 16 olle 134       {
4151 04 Oct 16 olle 135         //json.put("counts", CounterService.getInstance().getCurrentCounts());
5468 04 Jun 19 olle 136         //sc = Application.getSessionControl(ID, req.getRemoteAddr());
5744 20 Nov 19 olle 137         //sc = Application.getSessionControl(ID, "", req.getRemoteAddr(), true);
5744 20 Nov 19 olle 138         sc = Application.getSessionControl(ID, null, req.getRemoteAddr(), true);
4151 04 Oct 16 olle 139         int activeProjectId = sc.getActiveProjectId();
4151 04 Oct 16 olle 140         JSONObject jsonConf = new JSONObject();
4829 01 Jun 18 olle 141         jsonConf.put("name", Meludi.fetchActiveProjectName(activeProjectId));
4839 08 Jun 18 olle 142         jsonConf.put("referralPrefix", Meludi.fetchReferralPrefix(activeProjectId));
4839 08 Jun 18 olle 143         jsonConf.put("referralNumDigits", Meludi.fetchReferralNumDigits(activeProjectId));
4151 04 Oct 16 olle 144         jsonConf.put("sampleItemPrefix", Meludi.fetchSampleItemPrefix(activeProjectId));
4213 08 Nov 16 olle 145         jsonConf.put("sampleItemNumDigits", Meludi.fetchSampleItemNumDigits(activeProjectId));
4867 21 Jun 18 olle 146         jsonConf.put("bloodItemPrefix", Meludi.fetchBloodItemPrefix(activeProjectId));
4901 10 Jul 18 olle 147         jsonConf.put("bloodItemNumDigits", Meludi.fetchBloodItemNumDigits(activeProjectId));
4901 10 Jul 18 olle 148         jsonConf.put("ffpeBlockItemPrefix", Meludi.fetchFfpeBlockItemPrefix(activeProjectId));
4901 10 Jul 18 olle 149         jsonConf.put("ffpeBlockItemNumDigits", Meludi.fetchFfpeBlockItemNumDigits(activeProjectId));
4184 27 Oct 16 olle 150         jsonConf.put("storageBoxPrefix", Meludi.fetchStorageBoxPrefix(activeProjectId));
4213 08 Nov 16 olle 151         jsonConf.put("storageBoxNumDigits", Meludi.fetchStorageBoxNumDigits(activeProjectId));
4151 04 Oct 16 olle 152         jsonConf.put("startListItemPrefix", Meludi.fetchStartListItemPrefix(activeProjectId));
4213 08 Nov 16 olle 153         jsonConf.put("startListItemNumDigits", Meludi.fetchStartListItemNumDigits(activeProjectId));
4151 04 Oct 16 olle 154         jsonConf.put("startPlateItemPrefix", Meludi.fetchStartPlateItemPrefix(activeProjectId));
4213 08 Nov 16 olle 155         jsonConf.put("startPlateItemNumDigits", Meludi.fetchStartPlateItemNumDigits(activeProjectId));
4151 04 Oct 16 olle 156         jsonConf.put("patientItemPrefix", Meludi.fetchPatientItemPrefix(activeProjectId));
4213 08 Nov 16 olle 157         jsonConf.put("patientItemNumDigits", Meludi.fetchPatientItemNumDigits(activeProjectId));
4184 27 Oct 16 olle 158         jsonConf.put("libraryPreparationKitItemPrefix", Meludi.fetchLibraryPreparationKitItemPrefix(activeProjectId));
4227 10 Nov 16 olle 159         jsonConf.put("libraryPreparationKitItemNumDigits", Meludi.fetchLibraryPreparationKitItemNumDigits(activeProjectId));
4716 26 Mar 18 olle 160         jsonConf.put("usesSitePrefix", Meludi.fetchUsesSitePrefix(activeProjectId));
4722 29 Mar 18 olle 161         jsonConf.put("sitePrefixHashList", Meludi.fetchSitePrefixHashList(activeProjectId));
4807 15 May 18 olle 162         jsonConf.put("usesReferralCreation", Meludi.fetchUsesReferralCreation(activeProjectId));
4807 15 May 18 olle 163         jsonConf.put("usesSiteSpecificReferralTemplates", Meludi.fetchUsesSiteSpecificReferralTemplates(activeProjectId));
4160 18 Oct 16 olle 164         jsonConf.put("projectFocusDefault", Meludi.fetchProjectFocusDefault(activeProjectId));
4160 18 Oct 16 olle 165         jsonConf.put("specimenTypeDefault", Meludi.fetchSpecimenTypeDefault(activeProjectId));
4184 27 Oct 16 olle 166         jsonConf.put("specimenInputTypeDefault", Meludi.fetchSpecimenInputTypeDefault(activeProjectId));
4248 22 Nov 16 olle 167         jsonConf.put("extractsFromFirstSpecimenOnlyDefault", Meludi.fetchExtractsFromFirstSpecimenOnlyDefault(activeProjectId));
4249 23 Nov 16 olle 168         jsonConf.put("deparaffinizationRnaVolumeMicroLitersDefault", Meludi.fetchDeparaffinizationRnaVolumeMicroLitersDefault(activeProjectId));
4249 23 Nov 16 olle 169         jsonConf.put("deparaffinizationDnaVolumeMicroLitersDefault", Meludi.fetchDeparaffinizationDnaVolumeMicroLitersDefault(activeProjectId));
4151 04 Oct 16 olle 170         json.put("configuration", jsonConf);
4151 04 Oct 16 olle 171       }
2933 14 Nov 14 olle 172       
2933 14 Nov 14 olle 173     }
2933 14 Nov 14 olle 174     catch (Throwable t)
2933 14 Nov 14 olle 175     {
2933 14 Nov 14 olle 176       t.printStackTrace();
2933 14 Nov 14 olle 177       json.clear();
2933 14 Nov 14 olle 178       json.put("status", "error");
2933 14 Nov 14 olle 179       json.put("message", t.getMessage());
2933 14 Nov 14 olle 180       json.put("stacktrace", ThrowableUtil.stackTraceToString(t));
2933 14 Nov 14 olle 181     }
2933 14 Nov 14 olle 182     finally
2933 14 Nov 14 olle 183     {
2933 14 Nov 14 olle 184       if (dc != null) dc.close();
2933 14 Nov 14 olle 185       json.writeJSONString(resp.getWriter());
2933 14 Nov 14 olle 186     }
2933 14 Nov 14 olle 187     
2933 14 Nov 14 olle 188   }
2933 14 Nov 14 olle 189
2933 14 Nov 14 olle 190   
2933 14 Nov 14 olle 191 }