package hudson.plugins.performance; import hudson.model.AbstractProject; import hudson.model.ModelObject; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.GregorianCalendar; import java.util.Iterator; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import net.sf.json.JSONException; import net.sf.json.JSONObject; import org.apache.commons.io.IOUtils; import org.apache.commons.lang.StringUtils; import org.kohsuke.stapler.StaplerRequest; import org.kohsuke.stapler.StaplerResponse; import org.jfree.data.category.CategoryDataset; /** * Configures the trend graph of this plug-in. */ public class TrendReportDetail implements ModelObject,Iterable<TrendReportDetail.Row> { private AbstractProject<?,?> project; private String filename; private CategoryDataset dataSet; public TrendReportDetail(final AbstractProject<?, ?> project, final String pluginName, final StaplerRequest request, String filename, CategoryDataset dataSet) { this.project = project; this.filename = filename; this.dataSet = dataSet; } public AbstractProject<?,?> getProject() { return project; } public String getFilename() { return filename; } public String getDisplayName() { return Messages.TrendReportDetail_DisplayName(); } public Iterator<Row> iterator() { return new RowIterator(); } public Iterator<Row> getIterator() { return iterator(); } public List getColumnLabels() { return dataSet.getRowKeys(); } public class RowIterator implements Iterator<Row> { private int entry=0; public boolean hasNext() { return (entry < dataSet.getColumnCount()); } public Row next() { return new Row(entry++); } public void remove() { throw new UnsupportedOperationException(); } } public class Row { int entry; public Row(int entry) { this.entry = entry; } public Object getLabel() { return dataSet.getColumnKey(entry); } public List getLabels() { return dataSet.getRowKeys(); } public List<Number> getValues() { int count = dataSet.getRowCount(); List<Number> list = new ArrayList<Number>(count); for (int i=0 ; i<count ; i++) { list.add (dataSet.getValue(dataSet.getRowKey(i), dataSet.getColumnKey(entry))); } return list; } } }