extensions/net.sf.basedb.relax/trunk/src/net/sf/basedb/relax/servlet/SessionServlet.java

Code
Comments
Other
Rev Date Author Line
4631 21 Nov 17 nicklas 1 package net.sf.basedb.relax.servlet;
4631 21 Nov 17 nicklas 2
4631 21 Nov 17 nicklas 3 import java.io.IOException;
4631 21 Nov 17 nicklas 4
4631 21 Nov 17 nicklas 5 import javax.servlet.ServletException;
4631 21 Nov 17 nicklas 6 import javax.servlet.http.HttpServlet;
4631 21 Nov 17 nicklas 7 import javax.servlet.http.HttpServletRequest;
4631 21 Nov 17 nicklas 8 import javax.servlet.http.HttpServletResponse;
4631 21 Nov 17 nicklas 9
4631 21 Nov 17 nicklas 10 import org.json.simple.JSONObject;
4631 21 Nov 17 nicklas 11
4631 21 Nov 17 nicklas 12 import net.sf.basedb.core.DbControl;
4631 21 Nov 17 nicklas 13 import net.sf.basedb.core.SessionControl;
4631 21 Nov 17 nicklas 14 import net.sf.basedb.core.SimpleProgressReporter;
4631 21 Nov 17 nicklas 15 import net.sf.basedb.relax.JsonUtil;
4631 21 Nov 17 nicklas 16 import net.sf.basedb.relax.Relax;
4632 22 Nov 17 nicklas 17 import net.sf.basedb.util.Values;
4631 21 Nov 17 nicklas 18 import net.sf.basedb.util.error.ThrowableUtil;
4631 21 Nov 17 nicklas 19
4631 21 Nov 17 nicklas 20 /**
4631 21 Nov 17 nicklas 21   Get information about the current session.
4631 21 Nov 17 nicklas 22   
4631 21 Nov 17 nicklas 23 */
4631 21 Nov 17 nicklas 24 public class SessionServlet 
4631 21 Nov 17 nicklas 25   extends HttpServlet 
4631 21 Nov 17 nicklas 26 {
4631 21 Nov 17 nicklas 27
4631 21 Nov 17 nicklas 28   private static final long serialVersionUID = -3842354795495914729L;
4631 21 Nov 17 nicklas 29
4631 21 Nov 17 nicklas 30   public SessionServlet()
4631 21 Nov 17 nicklas 31   {}
4631 21 Nov 17 nicklas 32
4631 21 Nov 17 nicklas 33   @Override
4631 21 Nov 17 nicklas 34   protected void doGet(HttpServletRequest req, HttpServletResponse resp)
4631 21 Nov 17 nicklas 35     throws ServletException, IOException 
4631 21 Nov 17 nicklas 36   {
4631 21 Nov 17 nicklas 37     String cmd = req.getParameter("cmd");
4631 21 Nov 17 nicklas 38     JsonUtil.setJsonResponseHeaders(resp);
4631 21 Nov 17 nicklas 39     
4631 21 Nov 17 nicklas 40     JSONObject json = new JSONObject();
4631 21 Nov 17 nicklas 41     json.put("status", "ok");
4631 21 Nov 17 nicklas 42   
4631 21 Nov 17 nicklas 43     SessionControl sc = null;
4631 21 Nov 17 nicklas 44     DbControl dc = null;
4631 21 Nov 17 nicklas 45     try
4631 21 Nov 17 nicklas 46     {
4631 21 Nov 17 nicklas 47       if ("GetProgress".equals(cmd))
4631 21 Nov 17 nicklas 48       {
4631 21 Nov 17 nicklas 49         /**
4631 21 Nov 17 nicklas 50           Get progress information for a named progress bar.
4631 21 Nov 17 nicklas 51           The 'name' parameter is the same name that was 
4631 21 Nov 17 nicklas 52           submitted to the 'Relax.showLoadingAnimation()` 
4631 21 Nov 17 nicklas 53           JavaScript method. The working servlet MUST:
4631 21 Nov 17 nicklas 54           
4631 21 Nov 17 nicklas 55           1. Create a SimpleProgressReporter instance
4631 21 Nov 17 nicklas 56           2. Store the instance in SessionControl.setSessionSetting() 
4631 21 Nov 17 nicklas 57              with the same name we get here
4631 21 Nov 17 nicklas 58           3. Call ProgressReporter.display() at regular intervals
4631 21 Nov 17 nicklas 59         */
4631 21 Nov 17 nicklas 60         String name = req.getParameter("name");
4631 21 Nov 17 nicklas 61         
4631 21 Nov 17 nicklas 62         sc = Relax.getSessionControl(req);
4631 21 Nov 17 nicklas 63         Object tmp = sc.getSessionSetting(name);
4631 21 Nov 17 nicklas 64         if (tmp instanceof SimpleProgressReporter)
4631 21 Nov 17 nicklas 65         {
4631 21 Nov 17 nicklas 66           SimpleProgressReporter progress = (SimpleProgressReporter)tmp;
4631 21 Nov 17 nicklas 67           JSONObject jsonProgress = new JSONObject();
4631 21 Nov 17 nicklas 68           jsonProgress.put("name", name);
4631 21 Nov 17 nicklas 69           jsonProgress.put("percent", progress.getPercent());
4631 21 Nov 17 nicklas 70           jsonProgress.put("message", progress.getMessage());
4631 21 Nov 17 nicklas 71           json.put("progress", jsonProgress);
4631 21 Nov 17 nicklas 72         }
4631 21 Nov 17 nicklas 73       }
4632 22 Nov 17 nicklas 74       else if ("CheckIsAdmin".equals(cmd))
4632 22 Nov 17 nicklas 75       {
4632 22 Nov 17 nicklas 76         String message = Values.getString(req.getParameter("message"), "this wizard");
4632 22 Nov 17 nicklas 77         sc = Relax.getSessionControl(req);
4632 22 Nov 17 nicklas 78         Relax.checkIsAdmin(sc, message);
4632 22 Nov 17 nicklas 79       }
4631 21 Nov 17 nicklas 80       
4631 21 Nov 17 nicklas 81     }
4631 21 Nov 17 nicklas 82     catch (Throwable t)
4631 21 Nov 17 nicklas 83     {
4631 21 Nov 17 nicklas 84       t.printStackTrace();
4631 21 Nov 17 nicklas 85       json.clear();
4631 21 Nov 17 nicklas 86       json.put("status", "error");
4631 21 Nov 17 nicklas 87       json.put("message", t.getMessage());
4631 21 Nov 17 nicklas 88       json.put("stacktrace", ThrowableUtil.stackTraceToString(t));
4631 21 Nov 17 nicklas 89     }
4631 21 Nov 17 nicklas 90     finally
4631 21 Nov 17 nicklas 91     {
4631 21 Nov 17 nicklas 92       if (dc != null) dc.close();
4631 21 Nov 17 nicklas 93       json.writeJSONString(resp.getWriter());
4631 21 Nov 17 nicklas 94     }
4631 21 Nov 17 nicklas 95     
4631 21 Nov 17 nicklas 96   }
4631 21 Nov 17 nicklas 97
4631 21 Nov 17 nicklas 98   
4631 21 Nov 17 nicklas 99 }