/* Date: February 2, 2010 * Template: PluginScreenJavaTemplateGen.java.ftl * generator: org.molgenis.generators.ui.PluginScreenJavaTemplateGen 3.3.2-testing * * THIS FILE IS A TEMPLATE. PLEASE EDIT :-) */ package plugins.richwizard; import java.util.ArrayList; import java.util.List; import org.molgenis.framework.db.Database; import org.molgenis.framework.ui.PluginModel; import org.molgenis.framework.ui.ScreenController; import org.molgenis.framework.ui.ScreenMessage; import org.molgenis.model.MolgenisModel; import org.molgenis.organization.Investigation; import org.molgenis.pheno.ObservationElement; import org.molgenis.util.Entity; import org.molgenis.util.Tuple; import org.molgenis.util.ValueLabel; import app.JDBCMetaDatabase; public class RichWizard extends PluginModel<Entity> { /** * */ private static final long serialVersionUID = 4843859850681009925L; private RichWizardModel model = new RichWizardModel(this); private JDBCMetaDatabase metadb; public RichWizardModel getModel() { return model; } public RichWizard(String name, ScreenController<?> parent) { super(name, parent); } // moved overlib to molgenis core // @Override // public String getCustomHtmlHeaders() // { // return // "<script src=\"res/scripts/overlib.js\" language=\"javascript\"></script>"; // // } @Override public String getViewName() { return "RichWizard"; } @Override public String getViewTemplate() { return "plugins/richwizard/RichWizard.ftl"; } @Override public boolean isVisible() { return true; } public void handleRequest(Database db, Tuple request) { if (request.getString("__action") != null) { String action = request.getString("__action"); System.out.println("*** handleRequest __action: " + request.getString("__action")); try { if (metadb == null) { metadb = new JDBCMetaDatabase(); } if (action.equals("toScreen1")) { this.model.setState("screen1"); } else if (action.equals("toScreen2")) { this.model.setState("screen2"); List<org.molgenis.model.elements.Entity> entities = new ArrayList<org.molgenis.model.elements.Entity>(); List<String> entityNames = new ArrayList<String>(); // TODO Use or Loose // HashMap<String, // Vector<org.molgenis.model.elements.Field>> // selectedDataTypes = new HashMap<String, // Vector<org.molgenis.model.elements.Field>>(); for (String dt : this.model.getDataTypes()) { if (request.getString("dt_" + dt) != null) { org.molgenis.model.elements.Entity entity = metadb.getEntity(dt); entities.add(entity); entityNames.add(entity.getName()); } } // help finding out if XREFs are valid by pointing towards // ancestors which might be part of the import list ArrayList<String> uniqueAncestorsOfEntities = new ArrayList<String>(); // check every entity in the import selection for (org.molgenis.model.elements.Entity entity : entities) { // get the ancestors for this entity for (org.molgenis.model.elements.Entity ancestor : entity.getAllAncestors()) { if (!uniqueAncestorsOfEntities.contains(ancestor.getName())) { uniqueAncestorsOfEntities.add(ancestor.getName()); } } } this.model.setUniqueAncestorsOfEntities(uniqueAncestorsOfEntities); entities = MolgenisModel.sortEntitiesByDependency(entities, metadb); this.model.setEntities(entities); this.model.setEntityNames(entityNames); this.model.setExampleCsvs(Helper.getExampleCSVs(entities)); } else if (action.startsWith("upload_textarea_")) { String entity = action.substring(16); String content = request.getString("textarea_" + entity); System.out.println("*** CONTENT: " + content); } else { throw new Exception("Unknown request action: " + action); } this.setMessages(); } catch (Exception e) { e.printStackTrace(); this.setMessages(new ScreenMessage(e.getMessage() != null ? e.getMessage() : "null", false)); } } } @Override public void reload(Database db) { try { if (model.getState() == null || model.getState().equals("screen1")) { List<String> dataTypes = new ArrayList<String>(); ObservationElement o = new ObservationElement(); List<ValueLabel> types = o.get__TypeOptions(); for (ValueLabel vl : types) { String type = vl.getValue().toString(); dataTypes.add(type); } this.model.setDataTypes(dataTypes); this.model.setState("screen1"); } else if (model.getState().equals("screen2")) { List<Investigation> invList = db.find(Investigation.class); this.model.setInvestigations(invList); } } catch (Exception e) { e.printStackTrace(); this.setMessages(new ScreenMessage(e.getMessage() != null ? e.getMessage() : "null", false)); } } }