/* Date: August 7, 2009 * Template: PluginScreenJavaTemplateGen.java.ftl * generator: org.molgenis.generators.screen.PluginScreenJavaTemplateGen 3.3.0-testing * * THIS FILE IS A TEMPLATE. PLEASE EDIT :-) */ package plugins.view; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import org.molgenis.framework.db.Database; import org.molgenis.framework.db.DatabaseException; import org.molgenis.framework.ui.FormModel; import org.molgenis.framework.ui.PluginModel; import org.molgenis.framework.ui.ScreenController; import org.molgenis.organization.Investigation; import org.molgenis.pheno.ObservedValue; import org.molgenis.util.Entity; import org.molgenis.util.Tuple; public class AllObservations extends PluginModel<Entity> { private static final long serialVersionUID = 4656566870431483076L; List<String> features = new ArrayList<String>(); List<String> targets = new ArrayList<String>(); Map<String, String> values = new LinkedHashMap<String, String>(); public List<String> getFeatures() { return features; } public List<String> getTargets() { return targets; } public String getValue(String feature, String target) { String val = values.get(feature + "_" + target); if (val == null) return " "; return val; } public AllObservations(String name, ScreenController<?> parent) { super(name, parent); } @Override public String getViewName() { return "plugin_view_AllObservations"; } @Override public String getViewTemplate() { return "plugins/view/AllObservations.ftl"; } @Override public void handleRequest(Database db, Tuple request) { // replace example below with yours // try // { // Database db = this.getDatabase(); // String action = request.getString("__action"); // // if( action.equals("do_add") ) // { // Experiment e = new Experiment(); // e.set(request); // db.add(e); // } // } catch(Exception e) // { // //e.g. show a message in your form // } } @Override public void reload(Database db) { // parent is a menu, parent above that is Investigation screen // TODO: Danny: This is a code smell, Can we reload in such a way that // the parent from the parent is not an Investigation?? // This assumes implicit knowledge about Molgenis which shouldn't be // part of a plugin, and we only use the ID of the parent Investigation parent = ((FormModel<Investigation>) getParent().getParent()).getRecords().get(0); try { List<ObservedValue> result = db.query(ObservedValue.class).equals("investigation", parent.getId()).find(); for (ObservedValue v : result) { String f = v.getFeature_Name(); if (!features.contains(f)) features.add(f); String t = v.getTarget_Name(); if (!targets.contains(t)) targets.add(t); values.put(f + "_" + t, v.getValue()); } } catch (DatabaseException e) { e.printStackTrace(); } } @Override public boolean isVisible() { // you can use this to hide this plugin, e.g. based on user rights. // e.g. // if(!this.getLogin().hasEditPermission(myEntity)) return false; return true; } }