package org.tgdb.webapp.action.model;
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 javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
public class GetModelAction extends TgDbAction {
public GetModelAction() {}
public String getName() {
return "GetModelAction";
}
public boolean performAction(HttpServletRequest req, ServletContext context) throws ApplicationException {
try {
HttpSession se = req.getSession();
TgDbCaller _caller = (TgDbCaller)se.getAttribute("caller");
String tmpEid = req.getParameter("eid");
FormDataManager formDataManager = getFormDataManager(TgDbFormDataManagerFactory.EXPMODEL, TgDbFormDataManagerFactory.WEB_FORM, req);
if(exists(tmpEid)) {
collectFormData(TgDbFormDataManagerFactory.EXPMODEL, TgDbFormDataManagerFactory.WEB_FORM, req);
if(exists(formDataManager.getValue("eid"))) {
if(!tmpEid.equals(formDataManager.getValue("eid"))) {
resetFormData(TgDbFormDataManagerFactory.EXPMODEL, req);
}
}
formDataManager.put("eid", tmpEid);
//FIXME!!! - Add a nice generic method in TgDbAction class to refresh the formdatamanager
se.setAttribute(TgDbFormDataManagerFactory.getInstanceName(TgDbFormDataManagerFactory.EXPMODEL), formDataManager);
}
int eid = Integer.parseInt(formDataManager.getValue("eid"));
req.setAttribute("modeldto", modelManager.getExperimentalModel(eid, _caller));
req.setAttribute("researchApps", modelManager.getResearchApplications(_caller));
req.setAttribute("transgenes", modelManager.getGenesByModelAndDistinguish(eid, "transgene", _caller));
req.setAttribute("promoters", modelManager.getPromotersForModel(eid, _caller));
req.setAttribute("expressed_genes", modelManager.getGenesByModelAndDistinguish(eid, "expressed_gene", _caller));
req.setAttribute("expressions", modelManager.getExpressionModelsByModel(eid, _caller));
req.setAttribute("ics", modelManager.getIntegrationCopiesByModel(eid, _caller));
req.setAttribute("references_primary", modelManager.getReferencesByModelAndPrimary(eid, true, _caller));
req.setAttribute("references", modelManager.getReferencesByModelAndPrimary(eid, false, _caller));
req.setAttribute("geneticBackground", modelManager.getGeneticBackground(eid, _caller));
req.setAttribute("strains", modelManager.getStrainsByModel(eid, _caller));
req.setAttribute("availability", modelManager.getAvailabilityForModel(eid));
req.setAttribute("strainalleles", modelManager.getStrainAllelesFromStrain(eid, _caller));
req.setAttribute("resourceTree", modelManager.getResourceTreeCollection(eid, _caller));
//testingDude...
req.setAttribute("curruser", caller.getName());
//---DirectView issues...
if(req.getParameter("workflow")!=null){
String workflowCheck = req.getParameter("workflow");
if(workflowCheck.compareTo("ViewModelDirect")==0){
req.setAttribute("DirectViewLevel", modelManager.getExperimentalModel(eid, _caller).getLevel());
}
}
return true;
} catch (ApplicationException e) {
logger.error("---------------------------------------->GetModelAction#performAction: Failed",e);
throw e;
} catch (Exception e) {
logger.error("---------------------------------------->GetModelAction#performAction: Failed",e);
throw new ApplicationException("Could not retrieve model.");
}
}
}