/** * Saves the current Parameters into an XML File. To do so a DOM-Tree with the current Parameters * is constructed. This tree will be serialized by use of XML_Util.serializeDocument and saved * into the file selected via experimentGUI.saveDialog. * * @author Gunnar Kiesel */ void saveParameters() { // select file to save parameters in String newFilename = experimentGUI.saveDialog(filename); if (newFilename == null) return; filenameChanged = true; filename = newFilename; File file = new File(filename); // create DOM-tree Document document = XMLHelper.createDocument(); Element run = document.createElement("run"); run.setAttribute("model", modelClass.getName()); run.setAttribute("expRunner", expRunnerClass.getName()); document.appendChild(run); Element exp = document.createElement("exp"); run.appendChild(exp); expAccessPoints.setValues(); Map expMap = expAccessPoints.getAccessPoints(); String[] expnames = AccessUtil.getAccessPointNames(expMap); Object[] expvalues = AccessUtil.getAccessPointValues(expMap); for (int i = 0; i < expnames.length; i++) { XMLHelper.addElement( document, exp, "param", "name", expnames[i], "value", expvalues[i].toString()); } Element modelelement = document.createElement("model"); run.appendChild(modelelement); modelAccessPoints.setValues(); Map modelMap = modelAccessPoints.getAccessPoints(); String[] modelnames = AccessUtil.getAccessPointNames(modelMap); Object[] modelvalues = AccessUtil.getAccessPointValues(modelMap); for (int i = 0; i < modelnames.length; i++) { XMLHelper.addElement( document, modelelement, "param", "name", modelnames[i], "value", modelvalues[i].toString()); } // save DOM-tree to XML file try { XMLHelper.serializeDocument(document, new FileWriter(file)); filename = file.getAbsolutePath(); } catch (IOException ex) { ex.printStackTrace(); } }
/** Called when experiment is stopped. Implemented for ExperimentListener */ public void experimentStopped(SimRunEvent e) { Experiment exp = expRunner.getExperiment(); Map expMap = expAccessPoints.getAccessPoints(); Object[] expvalues = AccessUtil.getAccessPointValues(expMap); String currentTime = model.currentTime().toString(3); String experimentValues = expvalues[AccessUtil.getIndexof("name", expMap)].toString(); String outputPath = exp.getOutputPath(); List<List<String>> appendixes = exp.getOutputAppendixes(); String[] appendixesUsed = { appendixes.get(0).get(0), appendixes.get(1).get(0), appendixes.get(2).get(0), appendixes.get(3).get(0) }; // only use the first one (GUI can only set one output file type per channel) experimentGUI.setStopped(currentTime, startTime, experimentValues, outputPath, appendixesUsed); }