/* * Date: April 8, 2011 Template: PluginScreenJavaTemplateGen.java.ftl generator: * org.molgenis.generators.ui.PluginScreenJavaTemplateGen 3.3.3 * * THIS FILE IS A TEMPLATE. PLEASE EDIT :-) */ package plugins.system.appcustomizer; import java.io.File; import java.util.List; import org.apache.commons.io.FileUtils; import org.molgenis.core.RuntimeProperty; import org.molgenis.framework.db.Database; import org.molgenis.framework.db.DatabaseException; 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.framework.ui.ScreenMessage; import org.molgenis.util.TarGz; import org.molgenis.util.Tuple; import plugins.cluster.demo.ClusterDemo; public class AppCustomizer extends PluginModel { public AppCustomizer(String name, ScreenController<?> parent) { super(name, parent); } @Override public String getViewName() { return "plugins_system_appcustomizer_AppCustomizer"; } private Boolean hideLoginButtons; @Override public String getViewTemplate() { return "plugins/system/appcustomizer/AppCustomizer.ftl"; } public Boolean getHideLoginButtons() { return hideLoginButtons; } @Override public void handleRequest(Database db, Tuple request) { try { if ("uploadBanner".equals(request.getAction())) { File newBanner = request.getFile("uploadBannerFile"); if (newBanner == null) { throw new Exception("Please provide an image file."); } File oldBanner = new File("WebContent/clusterdemo/bg/xqtl_default_banner.png"); FileUtils.forceDelete(oldBanner); FileUtils.copyFile(newBanner, oldBanner); // if(!success) // { // throw new // Exception("Putting the new banner in place failed."); // } this.setMessages(new ScreenMessage("New banner uploaded.", true)); } else if ("uploadCss".equals(request.getAction())) { File newCss = request.getFile("uploadCssFile"); if (newCss == null) { throw new Exception("Please provide a CSS file."); } File oldCss = new File("WebContent/clusterdemo/colors.css"); FileUtils.forceDelete(oldCss); FileUtils.copyFile(newCss, oldCss); // if(!success) // { // throw new Exception("Putting the new CSS in place failed."); // } this.setMessages(new ScreenMessage("New CSS uploaded.", true)); } else if ("showHomeButtons".equals(request.getAction())) { setHideHomeScreenButtons(db, "false"); } else if ("hideHomeButtons".equals(request.getAction())) { setHideHomeScreenButtons(db, "true"); } else { throw new Exception("unknown request action: " + request.getAction()); } } catch (Exception e) { this.setMessages(new ScreenMessage(e.getMessage(), false)); } } private void setHideHomeScreenButtons(Database db, String setMe) throws DatabaseException { List<RuntimeProperty> rp = db.find(RuntimeProperty.class, new QueryRule(RuntimeProperty.NAME, Operator.EQUALS, ClusterDemo.XQTL_HOMESCREEN_HIDELOGINBUTTONS)); if (rp.size() == 0) { RuntimeProperty newRp = new RuntimeProperty(); newRp.setName(ClusterDemo.XQTL_HOMESCREEN_HIDELOGINBUTTONS); newRp.setValue(setMe); db.add(newRp); } else if (rp.size() == 1) { rp.get(0).setValue(setMe); db.update(rp); } else { throw new DatabaseException("runtime prop size exceeds 1"); } } @Override public void reload(Database db) { try { List<RuntimeProperty> rp = db.find(RuntimeProperty.class, new QueryRule(RuntimeProperty.NAME, Operator.EQUALS, ClusterDemo.XQTL_HOMESCREEN_HIDELOGINBUTTONS)); if (rp.size() == 1 && rp.get(0).getValue().equals("false")) { this.hideLoginButtons = false; } else if (rp.size() == 1 && rp.get(0).getValue().equals("true")) { this.hideLoginButtons = true; } else { this.hideLoginButtons = false; } } catch (DatabaseException e) { this.setMessages(new ScreenMessage("Could not query runtime propery: " + e.getMessage(), false)); } } }