Package org.latexlab.docs.server

Source Code of org.latexlab.docs.server.LatexLabAdminServlet

package org.latexlab.docs.server;

import java.io.IOException;
import java.util.Calendar;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.jdo.PersistenceManager;
import javax.jdo.Query;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.latexlab.docs.server.auth.AuthenticationToken;

import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory;

/**
* A servlet exposing some admin functions.
*/
public class LatexLabAdminServlet extends HttpServlet {
 
  private static final long serialVersionUID = 6668585697634422514L;
  private static final Logger log = Logger.getLogger(LatexLabEditorServlet.class.getName());

  /**
   * Allow AppEngine admins to flush tokens.
   * @TODO: make this alot better.
   */
  @SuppressWarnings("unchecked")
  public void doGet(HttpServletRequest req, HttpServletResponse resp)
       throws IOException {
  UserService userService = UserServiceFactory.getUserService();
    if (userService.getCurrentUser() != null) {
      if (userService.isUserAdmin()) {
      String user = userService.getCurrentUser().getEmail();
      if (req.getParameter("action") != null) {
        String action = req.getParameter("action");
        if (action.equalsIgnoreCase("flushTokens")) {
          PersistenceManager pm = PMF.get().getPersistenceManager();
          try {
            Calendar cal = Calendar.getInstance();
            cal.add(Calendar.HOUR, -6);
            Query query = pm.newQuery(AuthenticationToken.class);
            query.setFilter("activity < activityParam");
            query.setRange(0, 1000);
            query.declareImports("import java.util.Date");
            query.declareParameters("Date activityParam");
            List<AuthenticationToken> objs = (List<AuthenticationToken>) query.execute(cal.getTime());
              long c = objs.size();
              for (AuthenticationToken obj : objs) {
              pm.deletePersistent(obj);
              }
              String msg = user + " - Flushed " + c + " tokens.";
              log.log(Level.INFO, msg);
              resp.getWriter().write(msg);
          } finally {
            pm.close();
          }
        } else if (action.equalsIgnoreCase("countTokens")) {
          PersistenceManager pm = PMF.get().getPersistenceManager();
          try {
            Query query = pm.newQuery(AuthenticationToken.class);
              List<AuthenticationToken> objs = (List<AuthenticationToken>) query.execute();
              int c = objs.size();
              String msg = user + " - There are " + c + " tokens.";
              log.log(Level.INFO, msg);
              resp.getWriter().write(msg);
          } finally {
            pm.close();
          }
        } else if (action.equalsIgnoreCase("countFlushTokens")) {
          PersistenceManager pm = PMF.get().getPersistenceManager();
          try {
            Calendar cal = Calendar.getInstance();
            cal.add(Calendar.HOUR, -6);
            Query query = pm.newQuery(AuthenticationToken.class);
            query.setFilter("activity < activityParam");
            query.declareImports("import java.util.Date");
            query.declareParameters("Date activityParam");
            List<AuthenticationToken> objs = (List<AuthenticationToken>) query.execute(cal.getTime());
            int c = objs.size();
            String msg = user + " - There are " + c + " tokens to flush.";
          log.log(Level.INFO, msg);
            resp.getWriter().write(msg);
          } finally {
            pm.close();
          }
        }
      }
      }
    }
  }
 
}
TOP

Related Classes of org.latexlab.docs.server.LatexLabAdminServlet

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.