/* Date: October 28, 2010 * Template: PluginScreenJavaTemplateGen.java.ftl * generator: org.molgenis.generators.ui.PluginScreenJavaTemplateGen 3.3.3 * * THIS FILE IS A TEMPLATE. PLEASE EDIT :-) */ package plugins.molgenisfile; import java.io.BufferedWriter; import java.io.File; import java.io.FileNotFoundException; import java.io.FileWriter; import java.util.List; import org.molgenis.core.MolgenisFile; import org.molgenis.framework.db.Database; import org.molgenis.framework.server.MolgenisRequest; import org.molgenis.framework.ui.FormController; import org.molgenis.framework.ui.FormModel; import org.molgenis.framework.ui.PluginModel; import org.molgenis.framework.ui.ScreenController; import org.molgenis.framework.ui.ScreenMessage; import org.molgenis.util.Entity; import org.molgenis.util.Tuple; import decorators.MolgenisFileHandler; import filehandling.generic.PerformUpload; public class MolgenisFileManager extends PluginModel<Entity> { private static final long serialVersionUID = 7832540415673199206L; public MolgenisFileManager(String name, ScreenController<?> parent) { super(name, parent); } private MolgenisFileManagerModel model = new MolgenisFileManagerModel(); private String appLoc; public MolgenisFileManagerModel getMyModel() { return model; } private MolgenisFileHandler mfh = null; @Override public String getViewName() { return "plugins_molgenisfile_MolgenisFileManager"; } @Override public String getViewTemplate() { return "plugins/molgenisfile/MolgenisFileManager.ftl"; } @Override public void handleRequest(Database db, Tuple request) { appLoc = ((MolgenisRequest) request).getAppLocation(); try { if (request.getString("__action") != null) { String action = request.getString("__action"); File file = null; if (request.getString("__action").equals("uploadTextArea")) { String content = request.getString("inputTextArea"); File inputTextAreaContent = new File(System.getProperty("java.io.tmpdir") + File.separator + "tmpTextAreaInput" + System.nanoTime() + ".txt"); BufferedWriter out = new BufferedWriter(new FileWriter(inputTextAreaContent)); out.write(content); out.close(); file = inputTextAreaContent; } else if (action.equals("upload")) { file = request.getFile("upload"); } else if (action.equals("showApplet")) { this.model.setShowApplet(true); } else if (action.equals("hideApplet")) { this.model.setShowApplet(false); } if (file == null) { throw new FileNotFoundException("No file selected"); } PerformUpload.doUpload(db, this.model.getMolgenisFile(), file, false); this.setMessages(new ScreenMessage("File uploaded", true)); } } catch (Exception e) { e.printStackTrace(); this.setMessages(new ScreenMessage(e.getMessage() != null ? e.getMessage() : "null", false)); } } @Override public void reload(Database db) { try { if (this.model.getShowApplet() == null) { this.model.setShowApplet(false); } ScreenController<?> parentController = (ScreenController<?>) this.getParent(); FormModel<MolgenisFile> parentForm = (FormModel<MolgenisFile>) ((FormController) parentController) .getModel(); List<MolgenisFile> molgenisFileList = parentForm.getRecords(); MolgenisFile molgenisFile = null; if (molgenisFileList.size() == 0) { return; } else { molgenisFile = molgenisFileList.get(0); } this.model.setMolgenisFile(molgenisFile); if (mfh == null) { mfh = new MolgenisFileHandler(db); } boolean hasFile = false; File theFile = null; try { theFile = mfh.getFile(molgenisFile, db); hasFile = true; } catch (FileNotFoundException e) { // no file found, assume there is none for this MolgenisFile // object :) } this.model.setHasFile(hasFile); // set app location if (this.model.getDb_path() == null) { this.model.setDb_path(appLoc); } if (hasFile) { this.model.setFileSize(theFile.length()); } } catch (Exception e) { e.printStackTrace(); this.setMessages(new ScreenMessage(e.getMessage() != null ? e.getMessage() : "null", false)); } } }