Example #1
0
 /** Loads a parameter set from an XML file opened by the user */
 void loadParameters() {
   String newFilename = experimentGUI.loadDialog(filename);
   if (newFilename != null && !newFilename.equals(filename)) {
     filename = newFilename;
     filenameChanged = true;
     loadDocNode();
   }
 }
Example #2
0
 /**
  * Creates a new experiment by loading a model and an experiment runner. Called when NEW button is
  * pressed.
  */
 void createNewExperiment() {
   experimentGUI.loadModel();
   if (model != null) {
     if (expRunnerClass == null) expRunnerClass = ExperimentRunner.class;
     filename = null;
     docNode = null;
     resetModel();
   }
 }
Example #3
0
 /**
  * Resets the currently active model by creating a new model instance of the current model class.
  * Inits all model- and experiment parameters according to the current experiment runner.
  */
 void resetModel() {
   try {
     if (docNode != null) {
       if (docNode.getNodeName().equals("run")) readExperimentRunFromNode(docNode);
     } else initNewExperimentRun();
     experimentGUI.resetGUI(
         filename, runsBatch, modelAccessPoints, expAccessPoints, model.getName());
   } catch (Exception e) {
     e.printStackTrace();
   }
 }
Example #4
0
  /**
   * 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();
    }
  }
Example #5
0
 /** 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);
 }
Example #6
0
 /** Loads the DOM node representing the document currently open in the experiment launcher */
 void loadDocNode() {
   try {
     Document d = DocumentReader.getInstance().readDoc(filename);
     docNode = d.getDocumentElement();
     if (docNode.getNodeName().equals("run")) {
       runsBatch = false;
       readExperimentRunFromNode(docNode);
     } else if (docNode.getNodeName().equals("batch")) {
       runsBatch = true;
     }
     experimentGUI.resetGUI(
         filename, runsBatch, modelAccessPoints, expAccessPoints, model.getName());
   } catch (Exception e) {
     e.printStackTrace();
     filename = null;
     docNode = null;
     runsBatch = false;
   }
 }
Example #7
0
 /** Called when experiment is paused. Implemented for ExperimentListener */
 public void experimentPaused(SimRunEvent e) {
   experimentGUI.setPaused();
   // this.settingsPanel.modelTable.setEnabled(true);
 }
Example #8
0
 /** Called when experiment is started or resumed. Implemented for ExperimentListener */
 public void experimentRunning(SimRunEvent e) {
   experimentGUI.setRunning();
 }
Example #9
0
 /**
  * Called when the currently active experiment's SimClock is advanced
  *
  * @param e SimRunEvent: A SimRunEvent.
  */
 public void clockAdvanced(SimRunEvent e) {
   SimTime currentTime = e.getSimTime();
   double timePercent =
       (currentTime.getTimeValue() / expRunner.getExperiment().getStopTime().getTimeValue()) * 100;
   experimentGUI.clockAdvanced(currentTime.toString(3), timePercent, startTime);
 }