package org.tgdb.webapp.action.directview;
import org.tgdb.frame.ArxFrameException;
import org.tgdb.frame.ArxLoginForward;
import org.tgdb.frame.advanced.AdvancedWorkflowManager;
import org.tgdb.TgDbCaller;
import org.tgdb.model.expmodel.ExpModelRemoteHome;
import org.tgdb.species.gene.GeneRemoteHome;
import org.tgdb.model.modelmanager.ModelManagerRemote;
import org.tgdb.model.reference.ReferenceRemoteHome;
import org.tgdb.model.researchapplication.ResearchApplicationRemoteHome;
import org.tgdb.resource.file.FileRemoteHome;
import org.tgdb.samplingunit.samplingunit.SamplingUnitRemoteHome;
import org.tgdb.servicelocator.ServiceLocator;
import org.tgdb.species.species.SpeciesRemoteHome;
import java.io.*;
import org.tgdb.util.Timer;
import javax.servlet.*;
import javax.servlet.http.*;
public class DirectView extends HttpServlet {
ServiceLocator locator;
SamplingUnitRemoteHome suHome;
ExpModelRemoteHome modelHome;
ResearchApplicationRemoteHome raHome;
FileRemoteHome fileHome;
ModelManagerRemote modelManager;
GeneRemoteHome gaHome;
ReferenceRemoteHome referenceHome;
SpeciesRemoteHome speciesHome;
TgDbCaller caller;
public void lookup()
{
locator = ServiceLocator.getInstance();
modelManager = (ModelManagerRemote)locator.getManager(ServiceLocator.Services.MODELMANAGER);
modelHome = (ExpModelRemoteHome)locator.getHome(ServiceLocator.Services.EXPMODEL);
suHome = (SamplingUnitRemoteHome)locator.getHome(ServiceLocator.Services.SAMPLINGUNIT);
gaHome = (GeneRemoteHome)locator.getHome(ServiceLocator.Services.GENE);
fileHome = (FileRemoteHome)locator.getHome(ServiceLocator.Services.FILE);
referenceHome = (ReferenceRemoteHome)locator.getHome(ServiceLocator.Services.REFERENCE);
speciesHome = (SpeciesRemoteHome)locator.getHome(ServiceLocator.Services.SPECIES);
}
public void init() throws ServletException
{
lookup();
super.init();
}
public TgDbCaller getCaller()
{
if (caller==null)
{
caller = new TgDbCaller();
caller.setId(1029);
caller.setPid(99);
caller.setName("Public");
caller.setUsr("public");
caller.setPwd("notknown");
caller.setSuid(1003);
caller.updatePrivileges();
caller.setSid(99);
}
return caller;
}
public void logException(Exception e, PrintWriter out)
{
out.println("<pre>");
e.printStackTrace(out);
out.println("</pre>");
}
/** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
AdvancedWorkflowManager wfm = new AdvancedWorkflowManager();
try
{
/* Set headers */
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
response.setHeader("Content-Type", "text/html; charset=utf-8");
request.setCharacterEncoding("UTF-8");
System.out.println("--- START REQUEST -------------------------------");
Timer t = new Timer();
wfm.setCaller(getCaller());
HttpSession session = request.getSession();
String workflowController = request.getParameter("workflow");
if((workflowController.compareTo("ViewModelDirect")==0) || (workflowController.compareTo("ViewGeneDirect")==0)) {
session.setAttribute("caller", getCaller());
ServletContext ctx = getServletContext();
wfm.setContext(ctx);
String nextPage = wfm.getNextPage(request, ctx);
System.out.println("NextPage="+nextPage);
/**
* Forward to view
*/
RequestDispatcher forwarder = request.getRequestDispatcher("/"+nextPage);
forwarder.forward(request, response);
// Stop timer and display time, End request.
t.stop();
System.out.println("DirectView#ProcessRequest(...): "+t);
System.out.println("--- END REQUEST -------------------------------");
}else{throw new ArxFrameException("Invalid Workflow!");}
}
catch (ArxLoginForward alf)
{
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
RequestDispatcher forwarder = request.getRequestDispatcher(alf.getUrl());
forwarder.forward(request, response);
}
catch (ArxFrameException afe)
{
request.setAttribute("exception", afe);
//log(request,response);
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
RequestDispatcher forwarder = request.getRequestDispatcher("error/GeneralError.jsp");
//RequestDispatcher forwarder = request.getRequestDispatcher("error/NoAdmission.html");
forwarder.forward(request, response);
}
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/** Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/** Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/** Returns a short description of the servlet.
*/
public String getServletInfo() {
return "Short description";
}
// </editor-fold>
}