[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