@@ -0,0 +1,2504 @@
+package it.unipd.dei.experiment;%0A%0Aimport java.text.DateFormat;%0Aimport java.text.SimpleDateFormat;%0Aimport java.util.Date;%0Aimport java.util.HashMap;%0Aimport java.util.Map;%0A%0Apublic class Experiment %7B%0A%0A  private DateFormat dateFormat = new SimpleDateFormat(%22yyyy-MM-dd'T'HH:mm:ss.SSSZ%22);%0A%0A  private String experimentClass;%0A  private String name;%0A  private Date date;%0A  private Map%3CString, Object%3E tags;%0A  private Map%3CString,Table%3E tables;%0A%0A  public Experiment(String experimentClass, String name) %7B%0A    this.experimentClass = experimentClass;%0A    this.name = name;%0A    this.date = new Date();%0A    tags = new HashMap%3CString, Object%3E();%0A    tables = new HashMap%3CString, Table%3E();%0A  %7D%0A%0A  public Experiment tag(String name, Object value) %7B%0A    tags.put(name, value);%0A    return this;%0A  %7D%0A%0A  public Experiment append(String tableName, Object... rowElements) %7B%0A    if(!tables.containsKey(tableName)) %7B%0A      tables.put(tableName, new Table());%0A    %7D%0A    tables.get(tableName).addRow(rowElements);%0A    return this;%0A  %7D%0A%0A  public Experiment append(String tableName, Map%3CString, Object%3E row) %7B%0A    if(!tables.containsKey(tableName)) %7B%0A      tables.put(tableName, new Table());%0A    %7D%0A    tables.get(tableName).addRow(row);%0A    return this;%0A  %7D%0A%0A  public String toSimpleString() %7B%0A    StringBuffer sb = new StringBuffer();%0A    sb.append(%22==== %22).append(name)%0A      .append(%22 %5B%22).append(experimentClass).append(%22%5D %22)%0A      .append(%22 ====%5Cn%5Cn%22);%0A    sb.append(%22Date %22).append(dateFormat.format(date)).append(%22%5Cn%5Cn%22);%0A    sb.append(%22---- Tags ----%5Cn%5Cn%22);%0A    for(Map.Entry%3CString, Object%3E t : tags.entrySet()) %7B%0A      sb.append(%22    %22).append(t.getKey())%0A        .append(%22 : %22).append(t.getValue()).append(%22%5Cn%22);%0A    %7D%0A    sb.append(%22%5Cn---- Tables ----%5Cn%5Cn%22);%0A    for(Map.Entry%3CString, Table%3E t : tables.entrySet()) %7B%0A      sb.append(%22-- %22).append(t.getKey()).append(%22 --%5Cn%5Cn%22)%0A       .append(t.getValue().asOrgTable()).append('%5Cn');%0A    %7D%0A    return sb.toString();%0A  %7D%0A%0A  @Override%0A  public String toString() %7B%0A    return %22Experiment%7Bclass = %22 + experimentClass +%0A        %22, name%22 + name + %22, %22 + dateFormat.format(date) + %22%7D%22;%0A  %7D%0A%0A  public static void main(String%5B%5D args) %7B%0A    Experiment exp = new Experiment(%22matrix-multiplication%22, %22Test%22);%0A    exp.tag(%22replication%22, 8)%0A      .tag(%22localMemory%22, 2)%0A      .tag(%22dimension%22, 16);%0A%0A    exp.append(%22rounds%22,%0A      %22round%22, 0,%0A      %22time%22, 119823)%0A      .append(%22rounds%22,%0A        %22round%22, 1,%0A        %22time%22, 123876);%0A%0A    System.out.println(exp.toSimpleString());%0A  %7D%0A%7D%0A

Add Experiment.java