package org.tgdb.webapp.action.model;
import org.tgdb.frame.Navigator;
import org.tgdb.form.FormDataManager;
import org.tgdb.TgDbCaller;
import org.tgdb.TgDbFormDataManagerFactory;
import org.tgdb.exceptions.ApplicationException;
import org.tgdb.webapp.action.TgDbAction;
import java.util.Collection;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
public class GetModelsAction extends TgDbAction {
public GetModelsAction() {}
public String getName() {
return "GetModelsAction";
}
public boolean performAction(HttpServletRequest req, ServletContext context) throws ApplicationException {
try {
HttpSession se = req.getSession();
TgDbCaller _caller = (TgDbCaller)se.getAttribute("caller");
Navigator nav = (Navigator)se.getAttribute("navigator");
FormDataManager formDataManager = getFormDataManager(TgDbFormDataManagerFactory.EXPMODELS, TgDbFormDataManagerFactory.WEB_FORM, req);
if (req.getParameter("_raid")!=null || req.getParameter("_gaid")!=null || req.getParameter("_fstid")!=null) {
formDataManager.reset();
logger.debug("---------------------------------------->GetModelsAction#performAction: Reset form data manager");
}
String tmp = req.getParameter("_raid");
if (tmp!=null)
formDataManager.put("raid", tmp);
tmp = req.getParameter("_gaid");
if (tmp!=null)
formDataManager.put("gaid", tmp);
tmp = req.getParameter("_fstid");
if (tmp!=null)
formDataManager.put("fstid", tmp);
tmp = req.getParameter("_strain");
if (tmp!=null)
formDataManager.put("strain", tmp);
req.setAttribute("formdata", formDataManager);
nav.getPageManager().setMax(modelManager.getExperimentalModelsByForm(formDataManager, _caller));
nav.getPageManager().setDelta(new Integer(formDataManager.getValue("delta")).intValue());
if(!exists_without_value(req.getParameter("next")) && !exists_without_value(req.getParameter("last")) && !exists_without_value(req.getParameter("prev")) && !exists_without_value(req.getParameter("first"))) {
nav.getPageManager().setCurrentPage(new Integer(formDataManager.getValue("page")).intValue());
}
Collection models = modelManager.getExperimentalModelsByPGM(nav.getPageManager());
req.setAttribute("samplingunits", samplingUnitManager.getSamplingUnits(_caller.getPid(), _caller));
req.setAttribute("modelsdto", models);
req.setAttribute("participants", modelManager.getParticipants());
req.setAttribute("researchers", modelManager.getParticipantNames());
req.setAttribute("mutations", modelManager.getMutationTypes(_caller.getPid(), _caller));
req.setAttribute("rapps", modelManager.getResearchApplications(_caller));
// req.setAttribute("genes", modelManager.getGenesByProject(_caller.getPid(), _caller));
req.setAttribute("genes", modelManager.getGenesByDistinguish("promoter", _caller));
//get the distinct strains that are connected to models for filtering
req.setAttribute("strains", modelManager.getStrainsConnectedToModels(_caller));
req.setAttribute("sortby", modelManager.getOrderByTypes());
req.setAttribute("disseminationlevels", modelManager.getLevelsForModel());
//emaps
req.setAttribute("emaps", modelManager.getOntologyTerms("EMAP"));
req.setAttribute("mas", modelManager.getOntologyTerms("MA"));
req.setAttribute("inducibilities", modelManager.getInducibility());
req.setAttribute("samplingUnit", new Integer(_caller.getSuid()).toString());
return true;
} catch (ApplicationException e) {
logger.error("---------------------------------------->GetModelsAction#performAction: Action failed", e);
throw e;
} catch (Exception e) {
logger.error("---------------------------------------->GetModelsAction#performAction: Action failed", e);
throw new ApplicationException("Could not retrieve models.");
}
}
}