/* 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.archiver; import java.io.File; import java.util.ArrayList; import java.util.List; import org.molgenis.framework.db.CsvToDatabase.ImportResult; import org.molgenis.framework.db.Database; 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.SimpleTuple; import org.molgenis.util.TarGz; import org.molgenis.util.Tuple; import app.CsvExport; import app.CsvImport; public class Archiver extends PluginModel<Entity> { private static final long serialVersionUID = -6011550023936663086L; private ArchiverModel model = new ArchiverModel(); public ArchiverModel getMyModel() { return model; } public Archiver(String name, ScreenController<?> parent) { super(name, parent); } @Override public String getViewName() { return "Archiver"; } @Override public String getViewTemplate() { return "plugins/archiver/Archiver.ftl"; } public void handleRequest(Database db, Tuple request) { if (request.getString("__action") != null) { System.out.println("*** handleRequest __action: " + request.getString("__action")); try { String action = request.getString("__action"); if (action.equals("export")) { File tmpDir = new File(System.getProperty("java.io.tmpdir") + File.separator + "dbexport_" + System.nanoTime()); tmpDir.mkdir(); if (!tmpDir.exists()) { throw new Exception("Could not create tmp folder: " + tmpDir.getAbsolutePath()); } List<Class<? extends Entity>> specialCases = new ArrayList<Class<? extends Entity>>(); specialCases.add(org.molgenis.auth.MolgenisGroup.class); specialCases.add(org.molgenis.auth.MolgenisPermission.class); specialCases.add(org.molgenis.auth.MolgenisRoleGroupLink.class); specialCases.add(org.molgenis.auth.MolgenisUser.class); specialCases.add(org.molgenis.core.MolgenisEntity.class); new CsvExport().exportSpecial(tmpDir, db, specialCases, true); File tarFile = TarGz.tarDir(tmpDir); this.model.setDownload(tarFile.getName()); this.setMessages(new ScreenMessage("Export successful!", true)); } else if (action.equals("import")) { File importFile = request.getFile("importFile"); File extractDir = TarGz.tarExtract(importFile); ImportResult i = CsvImport.importAll(extractDir, db, new SimpleTuple(), true); if (i.getErrorItem().equals("no error found")) { this.setMessages(new ScreenMessage("Import successful!", true)); } else { String msg = i.getMessages().get(i.getErrorItem()); this.setMessages(new ScreenMessage( "Import failed on entity '" + i.getErrorItem() + "': " + msg, false)); } } } catch (Exception e) { e.printStackTrace(); this.setMessages(new ScreenMessage(e.getMessage() != null ? e.getMessage() : "null", false)); } } } @Override public void reload(Database db) { try { } catch (Exception e) { } } }