/* Date: March 11, 2010
* Template: PluginScreenJavaTemplateGen.java.ftl
* generator: org.molgenis.generators.ui.PluginScreenJavaTemplateGen 3.3.2-testing
*
* THIS FILE IS A TEMPLATE. PLEASE EDIT :-)
*/
package org.molgenis.animaldb.plugins.settings;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.molgenis.animaldb.commonservice.CommonService;
import org.molgenis.framework.db.Database;
import org.molgenis.framework.db.DatabaseException;
import org.molgenis.framework.db.Query;
import org.molgenis.framework.db.QueryRule;
import org.molgenis.framework.db.QueryRule.Operator;
import org.molgenis.framework.ui.PluginModel;
import org.molgenis.framework.ui.ScreenController;
import org.molgenis.pheno.ObservationTarget;
import org.molgenis.pheno.ObservedValue;
import org.molgenis.util.Entity;
import org.molgenis.util.Tuple;
public class SpeciesPlugin extends PluginModel<Entity>
{
private static final long serialVersionUID = 6637437260773077373L;
private List<ObservationTarget> speciesList;
private String action = "init";
private Map<Integer, String> dutchNameMap;
private Map<Integer, String> latinNameMap;
private Map<Integer, String> vwaNameMap;
private CommonService ct = CommonService.getInstance();
public SpeciesPlugin(String name, ScreenController<?> parent)
{
super(name, parent);
}
public String getCustomHtmlHeaders()
{
return "<link rel=\"stylesheet\" style=\"text/css\" href=\"res/css/animaldb.css\">";
}
public List<ObservationTarget> getSpeciesList()
{
return speciesList;
}
public void setSpeciesList(List<ObservationTarget> speciesList)
{
this.speciesList = speciesList;
}
@Override
public String getViewName()
{
return "org_molgenis_animaldb_plugins_settings_SpeciesPlugin";
}
@Override
public String getViewTemplate()
{
return "org/molgenis/animaldb/plugins/settings/SpeciesPlugin.ftl";
}
public String getAction()
{
return action;
}
public void setAction(String action)
{
this.action = action;
}
public String getDutchName(int speciesId)
{
return dutchNameMap.get(speciesId);
}
public String getLatinName(int speciesId)
{
return latinNameMap.get(speciesId);
}
public String getVwaName(int speciesId)
{
return vwaNameMap.get(speciesId);
}
private String getSpeciesName(Database db, int speciesId, String measurementName) throws DatabaseException
{
Query<ObservedValue> q = db.query(ObservedValue.class);
q.addRules(new QueryRule(ObservedValue.FEATURE_NAME, Operator.EQUALS, measurementName));
q.addRules(new QueryRule(ObservedValue.TARGET, Operator.EQUALS, speciesId));
if (q.find().size() == 1)
{
return q.find().get(0).getValue();
}
return "";
}
@Override
public void handleRequest(Database db, Tuple request)
{
ct.setDatabase(db);
try
{
action = request.getString("__action");
if (action.equals("Add"))
{
//
}
if (action.equals("Import"))
{
//
}
if (action.equals("addSpecies"))
{
//
}
}
catch (Exception e)
{
e.printStackTrace();
if (e.getMessage() != null)
{
this.setError(e.getMessage());
}
}
}
public void reload(Database db)
{
ct.setDatabase(db);
// Populate species list and property maps
try
{
List<String> investigationNames = ct.getAllUserInvestigationNames(this.getLogin().getUserName());
this.speciesList = ct.getAllMarkedPanels("Species", investigationNames);
dutchNameMap = new HashMap<Integer, String>();
latinNameMap = new HashMap<Integer, String>();
vwaNameMap = new HashMap<Integer, String>();
for (ObservationTarget species : speciesList)
{
dutchNameMap.put(species.getId(), this.getSpeciesName(db, species.getId(), "DutchSpecies"));
latinNameMap.put(species.getId(), this.getSpeciesName(db, species.getId(), "LatinSpecies"));
vwaNameMap.put(species.getId(), this.getSpeciesName(db, species.getId(), "VWASpecies"));
}
}
catch (Exception e)
{
String message = "Something went wrong while loading species";
if (e.getMessage() != null)
{
message += (": " + e.getMessage());
}
this.setError(message);
e.printStackTrace();
}
}
}