private ExperimentSeriesRun getRun(ExperimentSeries series, Long timestamp)
      throws DataNotFoundException {
    for (ExperimentSeriesRun run : series.getExperimentSeriesRuns()) {
      System.out.println(run.getTimestamp() + " " + timestamp);
      if (timestamp.equals(run.getTimestamp())) {
        return run;
      }
    }

    throw new DataNotFoundException(
        "No ExperimentSeriesRun with timestamp '" + timestamp + "' found..");
  }
  static Collection<? extends ExperimentSeriesRun> createDummyExperimentSeriesRuns(
      int numberOfRunsToCreate) {
    ArrayList<ExperimentSeriesRun> runs = new ArrayList<ExperimentSeriesRun>();
    for (int i = 0; i < numberOfRunsToCreate; i++) {

      ExperimentSeriesRun run = EntityFactory.createExperimentSeriesRun();
      run.setSuccessfulResultDataSet(createDummyResultDataSet());
      runs.add(run);
    }

    return runs;
  }
  private static List<ExperimentSeries> createDummyExperimentSeries() {
    List<ExperimentSeries> seriesList = new LinkedList<ExperimentSeries>();
    for (ExperimentSeriesDefinition esd :
        scenarioDefinition.getMeasurementSpecifications().get(0).getExperimentSeriesDefinitions()) {
      ExperimentSeries es = EntityFactory.createExperimentSeries(esd);

      for (ExperimentSeriesRun run : createDummyExperimentSeriesRuns(_10)) {
        es.getExperimentSeriesRuns().add(run);
        run.setExperimentSeries(es);
      }

      seriesList.add(es);
    }

    return seriesList;
  }
  /**
   * Creates a SharedScenarioInstance out of a ScenarioInstance which can send to the FrontEnd.
   *
   * @param instance
   * @return
   */
  private SharedScenarioInstance convertInstance(ScenarioInstance instance) {
    SharedScenarioInstance retInstance = new SharedScenarioInstance();

    retInstance.setScenarioName(instance.getName());
    retInstance.setControllerUrl(instance.getMeasurementEnvironmentUrl());

    for (ExperimentSeries series : instance.getExperimentSeriesList()) {
      SharedExperimentSeries sharedSeries = new SharedExperimentSeries();
      sharedSeries.setExperimentName(series.getName());

      for (ExperimentSeriesRun run : series.getExperimentSeriesRuns()) {
        SharedExperimentRuns sharedRun = new SharedExperimentRuns();
        sharedRun.setTimestamp(run.getTimestamp());
        sharedRun.setLabel(run.getLabel());

        sharedSeries.addExperimentRun(sharedRun);
      }

      retInstance.addExperimentSeries(sharedSeries);
    }

    return retInstance;
  }
  @Override
  public String getResultAsR(String scenario, String exoerimentSeries, String url, long timestamp) {
    try {
      ScenarioInstance instance = getScenarioInstance(getSessionId(), scenario, url);
      ExperimentSeries series = getSeries(instance, exoerimentSeries);
      ExperimentSeriesRun run = getRun(series, timestamp);

      DataSetAggregated dataset = run.getSuccessfulResultDataSet();
      SimpleDataSet simpleDataset = dataset.convertToSimpleDataSet();

      StringBuffer rValue = new StringBuffer();

      int i = 0;
      // for (SimpleDataSetRow row : simpleDataset.getRowList()) {
      for (Iterator<SimpleDataSetRow> rowIter = simpleDataset.getRowList().iterator();
          rowIter.hasNext();
          i++) {
        rValue.append("r");
        rValue.append(i);
        rValue.append(" <- c(");

        for (Iterator<ParameterValue> colIter = rowIter.next().getRowValues().iterator();
            colIter.hasNext(); ) {
          Object val = colIter.next().getValue();
          if (val instanceof String) {
            rValue.append("\"");
            rValue.append(val.toString());
            rValue.append("\"");
          } else {
            rValue.append(val.toString());
          }
          if (colIter.hasNext()) {
            rValue.append(", ");
          }
        }

        rValue.append(")\n");
      }

      rValue.append("myframe <- data.frame(");
      for (int n = 0; n < i; n++) {
        rValue.append("r");
        rValue.append(n);
        if (n + 1 < i) {
          rValue.append(", ");
        }
      }
      rValue.append(")\ncolnames(myframe) <- c(");

      for (Iterator<SimpleDataSetColumn> iter = simpleDataset.getColumns().iterator();
          iter.hasNext(); ) {
        rValue.append("\"");
        rValue.append(iter.next().getParameter().getName());
        rValue.append("\"");
        if (iter.hasNext()) {
          rValue.append(", ");
        }
      }
      rValue.append(")");

      return rValue.toString();
    } catch (DataNotFoundException e) {
      return "No Data Found";
    }
  }