/** * precondition : 'attribute' MUST contain number values only * * @param cases * @param attribute * @return DefaultXYDataset with all values of 'attribute' against event numbers or timestamps. */ private XYSeriesCollection getDataAttributes( String[] attributes, boolean byTime, double timesize) { XYSeriesCollection result = new XYSeriesCollection(); for (int index = 0; index < attributes.length; index++) { String attribute = attributes[index]; Integer i = 0; XYSeries row = new XYSeries(attribute); for (ProcessInstance pi : mylog.getInstances()) { Integer x = 0; // count event number Date begin = pi.getAuditTrailEntries().first().getTimestamp(); // starting // time // of // process // instance for (AuditTrailEntry ate : pi.getListOfATEs()) { if (ate.getAttributes().containsKey(attribute)) { Double val; val = Double.valueOf(ate.getAttributes().get(attribute)); if (byTime) { row.add(timediff(begin, ate.getTimestamp()) / timesize, val.doubleValue()); } else { row.add(x.doubleValue(), val.doubleValue()); } } x++; // event number in case } i++; // case number } result.addSeries(row); } return result; }
public XYSeries getXYSeries(String rowname, long factor) { XYSeries mydataset = new XYSeries(rowname); for (Integer key : ysum.keySet()) { Double value = ysum.get(key) / (double) count.get(key); Double point = (double) xsum.get(key) / (double) count.get(key); mydataset.add(point / factor, value); } return mydataset; }