package org.tgdb.webapp.action.expression;
import org.tgdb.frame.io.FileDataObject;
import org.tgdb.frame.io.WebFileUpload;
import org.tgdb.TgDbCaller;
import org.tgdb.exceptions.ApplicationException;
import org.tgdb.webapp.action.TgDbAction;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
public class SaveExpressionModelAction extends TgDbAction {
public String getName() {
return "SaveExpressionModelAction";
}
public int checkMIME (FileDataObject file){
if(file.getMimeType().regionMatches(true, 0, "image/", 0, 6)) {
logger.debug("---------------------------------------->SaveExpressionModelAction#checkMIME: Request for "+file.getFileName()+" image upload");
return 1;
} else {
logger.debug("---------------------------------------->SaveExpressionModelAction#checkMIME: Abnormal file upload request. File type "+file.getMimeType()+" is not an image");
return 0;
}
}
public boolean performAction(HttpServletRequest request, ServletContext context) throws ApplicationException {
try {
// HttpSession session = request.getSession();
WebFileUpload webFile = new WebFileUpload(request, 100000000);
String upload = webFile.getFormParameter("upload");
String exid_string = webFile.getFormParameter("exid");
if(exists(upload)) {
TgDbCaller _caller = (TgDbCaller)request.getSession().getAttribute("caller");
if (exists(exid_string)) {
int exid = new Integer(exid_string).intValue();
String exanatomy = webFile.getFormParameter("exanatomy");
String excomm = webFile.getFormParameter("excomm");
FileDataObject exfile = webFile.getFile("exfile");
String exfilecomm = webFile.getFormParameter("exfilecomm");
if(checkMIME(exfile)!=0){
int fileid = modelManager.addFile(exfile, exfilecomm, _caller);
modelManager.addFileToExpressionModel(exid, fileid, _caller);
}
modelManager.updateExpressionModel(exid, exanatomy, excomm, _caller);
} else {
String exanatomy = webFile.getFormParameter("exanatomy");
String excomm = webFile.getFormParameter("excomm");
FileDataObject exfile = webFile.getFile("exfile");
String exfilecomm = webFile.getFormParameter("exfilecomm");
String eid = webFile.getFormParameter("eid");
int exid = modelManager.createExpressionModel(exanatomy, excomm);
if(checkMIME(exfile)!=0){
int fileid = modelManager.addFile(exfile, exfilecomm, _caller);
modelManager.addFileToExpressionModel(exid, fileid, _caller);
}
modelManager.addExpressionModelToModel(new Integer(eid).intValue(), exid, _caller);
//ontologies
String ma_id = webFile.getFormParameter("ma_id");
if(exists(ma_id)){
modelManager.addOntologyToExpressionModel(exid, ma_id, "MA", _caller);
}
String emap_id = webFile.getFormParameter("emap_id");
if(exists(emap_id)){
modelManager.addOntologyToExpressionModel(exid, emap_id, "EMAP", _caller);
}
}
}
return true;
} catch (ApplicationException e) {
throw e;
} catch (Exception e) {
throw new ApplicationException("SaveExpressionModelAction Failed to perform action", e);
}
}
}