/* 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.qtlfinder2.linkback;
import java.util.List;
import org.molgenis.framework.db.Database;
import org.molgenis.framework.db.QueryRule;
import org.molgenis.framework.db.QueryRule.Operator;
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.pheno.ObservationElement;
import org.molgenis.util.Entity;
import org.molgenis.util.Tuple;
import org.molgenis.xgap.Gene;
import org.molgenis.xgap.Probe;
public class LinkBack extends PluginModel<Entity>
{
private static final long serialVersionUID = 7832540415673199206L;
public LinkBack(String name, ScreenController<?> parent)
{
super(name, parent);
}
private LinkBackModel model = new LinkBackModel();
public LinkBackModel getMyModel()
{
return model;
}
@Override
public String getViewName()
{
return "plugins_qtlfinder2_linkback_LinkBack";
}
@Override
public String getViewTemplate()
{
return "plugins/qtlfinder2/linkback/LinkBack.ftl";
}
@Override
public void handleRequest(Database db, Tuple request)
{
}
@Override
public void reload(Database db)
{
try
{
ScreenController<?> parentController = (ScreenController<?>) this.getParent();
FormModel<ObservationElement> parentForm = (FormModel<ObservationElement>) ((FormController) parentController)
.getModel();
List<ObservationElement> phenotype = parentForm.getRecords();
this.model.setId(null);
if (phenotype.size() == 1)
{
// special: Gene is always translated to Probe!
// if Gene is measured directly, this code must be updated.
if (phenotype.get(0).get(ObservationElement.__TYPE).equals("Gene"))
{
List<Probe> probes = db.find(Probe.class, new QueryRule(Probe.REPORTSFOR, Operator.EQUALS,
phenotype.get(0).get(Gene.ID)), new QueryRule(Operator.OR), new QueryRule(Probe.SYMBOL,
Operator.EQUALS, phenotype.get(0).get(Gene.NAME)));
// if(probes.size() == 0)
// {
// probes = db.find(Probe.class, new QueryRule(Probe.SYMBOL,
// Operator.EQUALS, phenotype.get(0).get(Gene.NAME)));
// }
if (probes.size() > 0)
{
StringBuilder ids = new StringBuilder();
for (Probe p : probes)
{
ids.append(p.getId() + ",");
}
ids.deleteCharAt(ids.length() - 1);
this.model.setId(ids.toString());
}
}
else
{
this.model.setId(phenotype.get(0).getId().toString());
}
}
}
catch (Exception e)
{
e.printStackTrace();
this.setMessages(new ScreenMessage(e.getMessage() != null ? e.getMessage() : "null", false));
}
}
}