package de.uni_passau.fim.infosun.prophet.plugin.plugins; import java.io.File; import java.io.IOException; import de.uni_passau.fim.infosun.prophet.experimentViewer.EViewer; import de.uni_passau.fim.infosun.prophet.plugin.Plugin; import de.uni_passau.fim.infosun.prophet.util.language.UIElementNames; import de.uni_passau.fim.infosun.prophet.util.qTree.QTreeNode; import de.uni_passau.fim.infosun.prophet.util.qTree.handlers.QTreeXMLHandler; import de.uni_passau.fim.infosun.prophet.util.settings.Setting; import de.uni_passau.fim.infosun.prophet.util.settings.components.CheckBoxSetting; /** * A <code>Plugin</code> that, when activated, exports the experiment that was shown to the user in the * <code>EViewer</code> to the folder that contains the answers.xml file. */ public class ExperimentExportPlugin implements Plugin { private static final String KEY = "experiment_export"; private static final String FILENAME = "experiment.xml"; private EViewer viewer; @Override public Setting getSetting(QTreeNode node) { if (node.getType() != QTreeNode.Type.EXPERIMENT) { return null; } Setting setting = new CheckBoxSetting(node.getAttribute(KEY), getClass().getSimpleName()); setting.setCaption(UIElementNames.getLocalized("EXPERIMENT_EXPORT")); return setting; } @Override public void experimentViewerRun(EViewer experimentViewer) { viewer = experimentViewer; } @Override public boolean denyEnterNode(QTreeNode node) { return false; } @Override public void enterNode(QTreeNode node) { } @Override public String denyNextNode(QTreeNode currentNode) { return null; } @Override public void exitNode(QTreeNode node) { } @Override public String finishExperiment() { QTreeNode root = viewer.getExperimentTree(); File saveDir = viewer.getSaveDir(); boolean enabled = root.containsAttribute(KEY) && Boolean.parseBoolean(root.getAttribute(KEY).getValue()); if (!enabled) { return null; } try { QTreeXMLHandler.saveExperimentXML(root, new File(saveDir, FILENAME)); } catch (IOException e) { System.err.println("Could not export the experiment.xml."); System.err.println(e.getMessage()); } return null; } }