/* 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.genomebrowser;
import java.util.List;
import org.molgenis.auth.MolgenisPermission;
import org.molgenis.core.MolgenisFile;
import org.molgenis.framework.db.Database;
import org.molgenis.framework.db.Query;
import org.molgenis.framework.db.QueryRule;
import org.molgenis.framework.db.QueryRule.Operator;
import org.molgenis.framework.server.MolgenisRequest;
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 org.molgenis.xgap.InvestigationFile;
public class GenomeBrowser extends PluginModel<Entity>
{
private static final long serialVersionUID = 1L;
private GenomeBrowserModel model = new GenomeBrowserModel();
public GenomeBrowserModel getMyModel()
{
return model;
}
public GenomeBrowser(String name, ScreenController<?> parent)
{
super(name, parent);
}
@Override
public String getViewName()
{
return "GenomeBrowser";
}
@Override
public String getViewTemplate()
{
return "plugins/genomebrowser/GenomeBrowser.ftl";
}
public void handleRequest(Database db, Tuple request)
{
// on any request, set the location of the app based on how the user
// 'contacted' the app
// the action "__continue_to_genomebrowser" is not handled but only
// serves to lead here
this.model.setAppUrl(((MolgenisRequest) request).getAppLocation());
if (request.getString("__action") != null)
{
String action = request.getString("__action");
try
{
if (action.equals("__setRelease"))
{
String release = request.getString("__ucsc_release");
if (release == null || release.trim().isEmpty())
{
throw new Exception("Please fill in a release code");
}
this.model.setRelease(release.trim());
this.setMessages(new ScreenMessage("Release set to " + release.trim(), 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.getFilesAreVisible() == null)
{
// find out if molgenisfiles are readable by anonymous
Query<MolgenisPermission> q = db.query(MolgenisPermission.class);
q.addRules(new QueryRule(MolgenisPermission.ENTITY_CLASSNAME, Operator.EQUALS,
"org.molgenis.xgap.InvestigationFile"));
// q.addRules(new QueryRule(MolgenisPermission.ENTITY_CLASSNAME,
// Operator.EQUALS, "org.molgenis.core.MolgenisFile"));
q.addRules((new QueryRule(MolgenisPermission.ROLE__NAME, Operator.EQUALS, "anonymous")));
if (q.find().size() > 0)
{
this.model.setFilesAreVisible(true);
}
else
{
this.model.setFilesAreVisible(false);
}
}
if (this.model.getFilesAreVisible())
{
Query<InvestigationFile> q = db.query(InvestigationFile.class);
q.addRules(new QueryRule(MolgenisFile.EXTENSION, Operator.EQUALS, "gff"));
List<InvestigationFile> mf = q.find();
this.model.setGffFiles(mf);
}
}
catch (Exception e)
{
e.printStackTrace();
this.setMessages(new ScreenMessage(e.getMessage() != null ? e.getMessage() : "null", false));
}
}
}