[overlord-commits] Overlord SVN: r1003 - in activity-monitor/trunk: gui/war/src/main/java/org/jboss/bpm/monitor/gui and 4 other directories.
overlord-commits at lists.jboss.org
overlord-commits at lists.jboss.org
Fri Mar 12 04:51:00 EST 2010
Author: heiko.braun at jboss.com
Date: 2010-03-12 04:50:59 -0500 (Fri, 12 Mar 2010)
New Revision: 1003
Added:
activity-monitor/trunk/gui/war/src/main/java/org/jboss/bpm/monitor/gui/client/RecentActivityView.java
activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/json/
activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/json/JsonExport.java
activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/json/XYDataSetJSO.java
Modified:
activity-monitor/trunk/gui/war/pom.xml
activity-monitor/trunk/gui/war/src/main/java/org/jboss/bpm/monitor/gui/App.gwt.xml
activity-monitor/trunk/gui/war/src/main/java/org/jboss/bpm/monitor/gui/client/DebugPanel.java
activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/metric/Timespan.java
Log:
interim commit
Modified: activity-monitor/trunk/gui/war/pom.xml
===================================================================
--- activity-monitor/trunk/gui/war/pom.xml 2010-03-11 12:01:28 UTC (rev 1002)
+++ activity-monitor/trunk/gui/war/pom.xml 2010-03-12 09:50:59 UTC (rev 1003)
@@ -71,6 +71,12 @@
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
+
+ <dependency>
+ <groupId>org.timepedia.chronoscope</groupId>
+ <artifactId>chronoscope</artifactId>
+ <version>1.0</version>
+ </dependency>
</dependencies>
<build>
Modified: activity-monitor/trunk/gui/war/src/main/java/org/jboss/bpm/monitor/gui/App.gwt.xml
===================================================================
--- activity-monitor/trunk/gui/war/src/main/java/org/jboss/bpm/monitor/gui/App.gwt.xml 2010-03-11 12:01:28 UTC (rev 1002)
+++ activity-monitor/trunk/gui/war/src/main/java/org/jboss/bpm/monitor/gui/App.gwt.xml 2010-03-12 09:50:59 UTC (rev 1003)
@@ -8,6 +8,8 @@
<inherits name="org.jboss.errai.common.ErraiCommon"/>
<inherits name="org.jboss.errai.bus.ErraiBus"/>
<inherits name="org.jboss.errai.workspaces.ErraiWorkspaces" />
+
+ <inherits name='org.timepedia.chronoscope.Chronoscope'/>
<entry-point class='org.jboss.bpm.monitor.gui.client.MonitorUI'/>
Modified: activity-monitor/trunk/gui/war/src/main/java/org/jboss/bpm/monitor/gui/client/DebugPanel.java
===================================================================
--- activity-monitor/trunk/gui/war/src/main/java/org/jboss/bpm/monitor/gui/client/DebugPanel.java 2010-03-11 12:01:28 UTC (rev 1002)
+++ activity-monitor/trunk/gui/war/src/main/java/org/jboss/bpm/monitor/gui/client/DebugPanel.java 2010-03-12 09:50:59 UTC (rev 1003)
@@ -232,8 +232,6 @@
)
);
-
-
}
}
Added: activity-monitor/trunk/gui/war/src/main/java/org/jboss/bpm/monitor/gui/client/RecentActivityView.java
===================================================================
--- activity-monitor/trunk/gui/war/src/main/java/org/jboss/bpm/monitor/gui/client/RecentActivityView.java (rev 0)
+++ activity-monitor/trunk/gui/war/src/main/java/org/jboss/bpm/monitor/gui/client/RecentActivityView.java 2010-03-12 09:50:59 UTC (rev 1003)
@@ -0,0 +1,99 @@
+/* jboss.org */
+package org.jboss.bpm.monitor.gui.client;
+
+import org.gwt.mosaic.ui.client.layout.LayoutPanel;
+import org.jboss.errai.workspaces.client.api.ProvisioningCallback;
+import org.jboss.errai.workspaces.client.api.WidgetProvider;
+import org.jboss.errai.workspaces.client.api.annotations.LoadTool;
+import org.timepedia.chronoscope.client.*;
+import org.timepedia.chronoscope.client.browser.ChartPanel;
+import org.timepedia.chronoscope.client.browser.Chronoscope;
+import org.timepedia.chronoscope.client.browser.json.GwtJsonDataset;
+import org.timepedia.chronoscope.client.browser.json.JsonDatasetJSO;
+import org.timepedia.chronoscope.client.canvas.View;
+import org.timepedia.chronoscope.client.canvas.ViewReadyCallback;
+import org.timepedia.chronoscope.client.data.tuple.Tuple2D;
+import org.timepedia.chronoscope.client.overlays.Marker;
+import org.timepedia.chronoscope.client.overlays.OverlayClickListener;
+
+/**
+ * @author: Heiko Braun <hbraun at redhat.com>
+ * @date: Mar 11, 2010
+ */
+ at LoadTool(name="Recent Activity", group = "Process History")
+public class RecentActivityView implements WidgetProvider
+{
+
+ private static final String TIMEPEDIA_FONTBOOK_SERVICE = "http://api.timepedia.org/fr";
+
+ private static volatile double GOLDEN__RATIO = 1.618;
+
+ private LayoutPanel panel;
+
+ public void provideWidget(ProvisioningCallback callback)
+ {
+ panel = new LayoutPanel();
+
+
+ try {
+ // You must specify the chart dimensions for now, rather than have the chart
+ // grow to fill its container
+ int chartWidth = 450;
+ int chartHeight = (int) (chartWidth / GOLDEN__RATIO);
+
+ // Chronoscope.enableHistorySupport(true);
+ Chronoscope.setFontBookRendering(true);
+ ChronoscopeOptions.setErrorReporting(true);
+ Chronoscope.setMicroformatsEnabled(true);
+ Chronoscope.initialize();
+
+ Chronoscope chronoscope = Chronoscope.getInstance();
+
+ final Datasets<Tuple2D> datasets = new Datasets<Tuple2D>();
+ datasets.add(chronoscope.getDatasetReader().createDatasetFromJson(
+ new GwtJsonDataset(getJson("interestRates01")))
+ );
+ datasets.add(chronoscope.getDatasetReader().createDatasetFromJson(
+ new GwtJsonDataset(getJson("interestRates02")))
+ );
+
+// MockDatasetFactory datasetFactory = new MockDatasetFactory();
+// Dataset mockDataset = datasetFactory.getBasicDataset();
+// datasets.add(mockDataset);
+
+ Dataset[] dsArray = datasets.toArray();
+
+ final ChartPanel chartPanel = Chronoscope
+ .createTimeseriesChart(dsArray, chartWidth, chartHeight);
+
+ chartPanel.setReadyListener(new ViewReadyCallback() {
+ public void onViewReady(final View view) {
+ Dataset dataset = datasets.get(0);
+ final Marker m = new Marker(
+ dataset.getDomainExtrema().midpoint(), "A", 0);
+ m.addOverlayClickListener(new OverlayClickListener() {
+ public void onOverlayClick(Overlay overlay, int x, int y) {
+ m.openInfoWindow("Hello");
+ }
+ });
+
+ XYPlot plot = view.getChart().getPlot();
+ //plot.setDatasetRenderer(1, new BarChartXYRenderer());
+ plot.addOverlay(m);
+ plot.redraw();
+ }
+ });
+
+ }
+ catch (Exception e)
+ {
+ }
+
+
+ callback.onSuccess(panel);
+ }
+
+ private static native JsonDatasetJSO getJson(String varName) /*-{
+ return $wnd[varName];
+ }-*/;
+}
Added: activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/json/JsonExport.java
===================================================================
--- activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/json/JsonExport.java (rev 0)
+++ activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/json/JsonExport.java 2010-03-12 09:50:59 UTC (rev 1003)
@@ -0,0 +1,115 @@
+/* jboss.org */
+package org.jboss.bpm.monitor.model.json;
+
+import org.jboss.bpm.monitor.model.BPAFDataSource;
+import org.jboss.bpm.monitor.model.DefaultBPAFDataSource;
+import org.jboss.bpm.monitor.model.bpaf.Event;
+import org.jboss.bpm.monitor.model.bpaf.State;
+import org.jboss.bpm.monitor.model.metric.Average;
+import org.jboss.bpm.monitor.model.metric.Metrics;
+import org.jboss.bpm.monitor.model.metric.Timespan;
+
+import java.util.*;
+
+/**
+ * @author: Heiko Braun <hbraun at redhat.com>
+ * @date: Mar 11, 2010
+ */
+public class JsonExport
+{
+ public static void main(String[] args)
+ {
+ BPAFDataSource ds = new DefaultBPAFDataSource();
+
+ // definitions
+ List<String> definitions = ds.getProcessDefinitions();
+ System.out.println("Definitions: " +definitions);
+
+ // instances
+ String s0 = definitions.get(0);
+
+ Timespan timespan = Timespan.last7Days();
+
+ List<Event> events = ds.getDefinitionEvents(s0, timespan);
+
+ System.out.println("Instances events for: "+timespan + ": "+events.size());
+
+ Average avg = Metrics.getInstanceAverage(events);
+ XYDataSetJSO dataSet = new XYDataSetJSO("Process Instances last 7 days", s0);
+
+ Map<Date, Long> sorted = sortEventsByUnit(events, timespan);
+
+ for(Date d : sorted.keySet())
+ System.out.println(d+": "+sorted.get(d));
+
+ dataSet.setAxis("time");
+ dataSet.setRangeBottom(avg.getMin());
+ dataSet.setRangeTop(avg.getMax());
+
+ }
+
+ private static Map<Date, Long> sortEventsByUnit(List<Event> events, Timespan timespan)
+ {
+ Map<Date, Long> result = null;
+ switch (timespan.getUnit() )
+ {
+ case DAY:
+ result = groupByDay(events, timespan);
+ break;
+ }
+
+ return result;
+ }
+
+ private static Map<Date, Long> groupByDay(List<Event> events, Timespan timespan)
+ {
+ Map<Date, Long> slotCount = new HashMap<Date, Long>();
+
+ // create daily slots first
+ Calendar cal = Calendar.getInstance();
+ cal.setTimeInMillis(timespan.getStart());
+ while(cal.getTimeInMillis()<timespan.getEnd())
+ {
+ slotCount.put(new Date(cal.getTimeInMillis()), 0l); // left inclusive
+ cal.roll(Calendar.DAY_OF_YEAR, 1);
+ }
+
+ // sort events according to slots
+ for(Event e : events)
+ {
+ State state = e.getEventDetails().getCurrentState();
+
+ // only State.Open events matter in this case
+ if(State.Open.equals(state))
+ {
+ for(Date from : slotCount.keySet())
+ {
+ cal.setTime(from);
+ cal.roll(Calendar.DAY_OF_YEAR, 1);
+ Date to = cal.getTime();
+
+ Date actual = new Date(e.getTimestamp());
+
+ if(actual.after(from) && actual.before(to))
+ {
+ // matching slot
+ if(null==slotCount.get(from))
+ {
+ slotCount.put(from, 1l);
+ }
+ else
+ {
+ Long aLong = slotCount.get(from);
+ slotCount.put(from, ++aLong);
+ }
+
+ break;
+ }
+ }
+ }
+ }
+
+ return slotCount;
+ }
+
+}
Added: activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/json/XYDataSetJSO.java
===================================================================
--- activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/json/XYDataSetJSO.java (rev 0)
+++ activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/json/XYDataSetJSO.java 2010-03-12 09:50:59 UTC (rev 1003)
@@ -0,0 +1,171 @@
+/* jboss.org */
+package org.jboss.bpm.monitor.model.json;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author: Heiko Braun <hbraun at redhat.com>
+ * @date: Mar 11, 2010
+ */
+public class XYDataSetJSO
+{
+ /*
+ dataset = {
+ id: "unique id for this dataset",
+ mipped: true,
+ domain: [ [level 0 values], [level 1 values], ... ],
+ range: [ [level 0 values], [level 1 values], ... ],
+ rangeBottom: min over level 0 values,
+ rangeTop: max over level 0 values,
+ label: "default label for this dataset",
+ axis: "an axis identifier (usually units). Datasets with like axis ids
+ share the same range Axis"
+ }
+ */
+
+ String id;
+ boolean mipped = true;
+
+ List<List<Double>> domain = new ArrayList<List<Double>>();
+ List<List<Double>> range = new ArrayList<List<Double>>();
+
+ double rangeBottom, rangeTop;
+
+ String label;
+ String axis;
+
+ public XYDataSetJSO()
+ {
+ }
+
+ public XYDataSetJSO(String label, String id)
+ {
+ this.label = label;
+ this.id = id;
+ }
+
+ public String getId()
+ {
+ return id;
+ }
+
+ public void setId(String id)
+ {
+ this.id = id;
+ }
+
+ public boolean isMipped()
+ {
+ return mipped;
+ }
+
+ public void setMipped(boolean mipped)
+ {
+ this.mipped = mipped;
+ }
+
+ public List<List<Double>> getDomain()
+ {
+ return domain;
+ }
+
+ public List<List<Double>> getRange()
+ {
+ return range;
+ }
+
+ public double getRangeBottom()
+ {
+ return rangeBottom;
+ }
+
+ public void setRangeBottom(double rangeBottom)
+ {
+ this.rangeBottom = rangeBottom;
+ }
+
+ public double getRangeTop()
+ {
+ return rangeTop;
+ }
+
+ public void setRangeTop(double rangeTop)
+ {
+ this.rangeTop = rangeTop;
+ }
+
+ public String getLabel()
+ {
+ return label;
+ }
+
+ public void setLabel(String label)
+ {
+ this.label = label;
+ }
+
+ public String getAxis()
+ {
+ return axis;
+ }
+
+ public void setAxis(String axis)
+ {
+ this.axis = axis;
+ }
+
+ public String toJSO()
+ {
+ /*
+ dataset = {
+ id: "unique id for this dataset",
+ mipped: true,
+ domain: [ [level 0 values], [level 1 values], ... ],
+ range: [ [level 0 values], [level 1 values], ... ],
+ rangeBottom: min over level 0 values,
+ rangeTop: max over level 0 values,
+ label: "default label for this dataset",
+ axis: "an axis identifier (usually units). Datasets with like axis ids
+ share the same range Axis"
+ }*/
+
+
+ StringBuffer sb = new StringBuffer("{");
+ sb.append("id:\"").append(id).append("\",");
+ sb.append("mipped:").append(Boolean.valueOf(mipped).toString()).append(",");
+
+ sb.append("domain:[");
+ int idx = 1;
+ for(List<Double> list : domain)
+ {
+ for(Double d : list)
+ {
+ sb.append("[").append(d).append("]");
+ if(idx<list.size()) sb.append(",");
+ idx++;
+ }
+ }
+ sb.append("],");
+
+ sb.append("range:[");
+ idx = 1;
+ for(List<Double> list : domain)
+ {
+ for(Double d : list)
+ {
+ sb.append("[").append(d).append("]");
+ if(idx<list.size()) sb.append(",");
+ idx++;
+ }
+ }
+ sb.append("],");
+
+ sb.append("rangeBottom:").append(rangeBottom).append(",");
+ sb.append("rangeTop:").append(rangeTop).append(",");
+ sb.append("label:\"").append(label).append("\",");
+ sb.append("axis:\"").append(label).append("\"");
+ sb.append("}");
+ return sb.toString();
+ }
+}
Modified: activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/metric/Timespan.java
===================================================================
--- activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/metric/Timespan.java 2010-03-11 12:01:28 UTC (rev 1002)
+++ activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/metric/Timespan.java 2010-03-12 09:50:59 UTC (rev 1003)
@@ -13,13 +13,18 @@
*/
public final class Timespan
{
- long start;
- long end;
+ private long start;
+ private long end;
- public Timespan(long start, long end)
+ public enum UNIT {HOUR, DAY, WEEK, MONTH, YEAR }
+
+ private UNIT unit;
+
+ public Timespan(long start, long end, UNIT unit)
{
this.start = start;
this.end = end;
+ this.unit = unit;
}
public long getStart()
@@ -32,6 +37,11 @@
return end;
}
+ public UNIT getUnit()
+ {
+ return unit;
+ }
+
public String toString()
{
return "Timespan{ "+new Date(start)+" - "+new Date(end)+" }";
@@ -47,7 +57,7 @@
cal.roll(Calendar.DAY_OF_YEAR, -1);
long t0 = cal.getTimeInMillis();
- return new Timespan(t0, t1);
+ return new Timespan(t0, t1, UNIT.HOUR);
}
public static Timespan lastDay()
@@ -65,7 +75,7 @@
cal.set(Calendar.SECOND, 0);
long t0 = cal.getTimeInMillis();
- return new Timespan(t0, t1);
+ return new Timespan(t0, t1, UNIT.HOUR);
}
public static Timespan last7Days()
@@ -76,7 +86,7 @@
cal.roll(Calendar.DAY_OF_YEAR, -7);
long t0 = cal.getTimeInMillis();
- return new Timespan(t0, t1);
+ return new Timespan(t0, t1, UNIT.DAY);
}
public static Timespan lastWeek()
@@ -97,7 +107,7 @@
cal.set(Calendar.SECOND, 0);
long t0 = cal.getTimeInMillis();
- return new Timespan(t0, t1);
+ return new Timespan(t0, t1, UNIT.DAY);
}
public static Timespan last4Weeks()
@@ -108,7 +118,7 @@
cal.roll(Calendar.WEEK_OF_YEAR, -4);
long t0 = cal.getTimeInMillis();
- return new Timespan(t0, t1);
+ return new Timespan(t0, t1, UNIT.DAY);
}
public static Timespan lastMonth()
@@ -129,7 +139,7 @@
cal.set(Calendar.SECOND, 0);
long t0 = cal.getTimeInMillis();
- return new Timespan(t0, t1);
+ return new Timespan(t0, t1, UNIT.DAY);
}
@@ -141,7 +151,7 @@
cal.roll(Calendar.MONTH, -3);
long t0 = cal.getTimeInMillis();
- return new Timespan(t0, t1);
+ return new Timespan(t0, t1, UNIT.WEEK);
}
public static Timespan lastQuarter()
@@ -172,7 +182,7 @@
cal.set(Calendar.SECOND, 0);
long t0 = cal.getTimeInMillis();
- return new Timespan(t0, t1);
+ return new Timespan(t0, t1, UNIT.WEEK);
}
@@ -184,7 +194,7 @@
cal.roll(Calendar.YEAR, -1);
long t0 = cal.getTimeInMillis();
- return new Timespan(t0, t1);
+ return new Timespan(t0, t1, UNIT.MONTH);
}
public static Timespan lastYear()
@@ -207,6 +217,6 @@
cal.set(Calendar.SECOND, 0);
long t0 = cal.getTimeInMillis();
- return new Timespan(t0, t1);
+ return new Timespan(t0, t1, UNIT.MONTH);
}
}
More information about the overlord-commits
mailing list