package org.tgdb.webapp.action.allele;
import org.tgdb.TgDbCaller;
import org.tgdb.exceptions.ApplicationException;
import org.tgdb.model.modelmanager.StrainAlleleDTO;
import org.tgdb.webapp.action.TgDbAction;
import java.util.Collection;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.tgdb.TgDbFormDataManagerFactory;
import org.tgdb.form.FormDataManager;
public class GetStrainAlleleAction extends TgDbAction {
public GetStrainAlleleAction() {}
public String getName() {
return "GetStrainAlleleAction";
}
public boolean performAction(HttpServletRequest req, ServletContext context) throws ApplicationException {
try {
HttpSession se = req.getSession();
TgDbCaller _caller = (TgDbCaller)se.getAttribute("caller");
FormDataManager fdm_allele = getFormDataManager(TgDbFormDataManagerFactory.ALLELE, TgDbFormDataManagerFactory.WEB_FORM, req);
// FormDataManager fdm_model = getFormDataManager(TgDbFormDataManagerFactory.EXPMODEL, TgDbFormDataManagerFactory.WEB_FORM, req);
String strain_allele_id = "";
if (exists(req.getParameter("strainalleleid"))) {
strain_allele_id = req.getParameter("strainalleleid");
fdm_allele.put("aid", req.getParameter("strainalleleid"));
}
else {
strain_allele_id = (String)se.getAttribute("strainalleleid");
}
se.setAttribute("strainalleleid", strain_allele_id);
String eid = "";
if(req.getParameter("eid")!=null){
eid = req.getParameter("eid");
}else{
eid = (String)se.getAttribute("eid");
}
StrainAlleleDTO strain_allele = modelManager.getStrainAllele(Integer.parseInt(eid),Integer.parseInt(strain_allele_id), false,_caller);
fdm_allele.put("attributes", strain_allele.getAttributes());
//FIXME!!! - Add a nice generic method in TgDbAction class to refresh the formdatamanager
se.setAttribute(TgDbFormDataManagerFactory.getInstanceName(TgDbFormDataManagerFactory.ALLELE), fdm_allele);
// logger.debug("attributes from strain_allele object: " + strain_allele.getAttributes() + " + from formdatamanager: " + fdm.getValue("attributes"));
//FIXME!!! - There must be a better way to do this (finding out the eid value)
Collection mutationTypes = modelManager.getMutationTypesFromStrainAllele(strain_allele.getId(), Integer.parseInt(eid),_caller);
// Collection mutationTypeAttributes = modelManager.getMutationTypeAttributes();
req.setAttribute("strainallele", strain_allele);
req.setAttribute("mutationtypes", mutationTypes);
/* gene connected to an allele is called promoter/locus */
req.setAttribute("promoters", modelManager.getGenesByAllele(strain_allele.getId(), _caller));
// req.setAttribute("attributes", mutationTypeAttributes);
se.setAttribute("eid", eid);
return true;
} catch (Exception e) {
e.printStackTrace();
throw new ApplicationException("Could not create strains allele", e);
}
}
}