perfsonar-dev - perfsonar: r4695 - in branches/perfsonarui/src/org/perfsonar/perfsonarui: ippm ippm/ui/panels ui/panels
Subject: perfsonar development work
List archive
perfsonar: r4695 - in branches/perfsonarui/src/org/perfsonar/perfsonarui: ippm ippm/ui/panels ui/panels
Chronological Thread
- From:
- To:
- Subject: perfsonar: r4695 - in branches/perfsonarui/src/org/perfsonar/perfsonarui: ippm ippm/ui/panels ui/panels
- Date: Fri, 14 Nov 2008 10:17:35 -0500
Author: nemanja.zutic
Date: 2008-11-14 10:17:35 -0500 (Fri, 14 Nov 2008)
New Revision: 4695
Added:
branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/HoplistRoutes.java
branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/PerfsonarHoplistTimeSeriesDataset.java
branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/ui/panels/HoplistInfoTable.java
Modified:
branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/HoplistPath.java
branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/HoplistRequest.java
branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/IPPMPerfsonarModel.java
branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/IPPMRequest.java
branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/PSDelayDatum.java
branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/PSJitterDatum.java
branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/ui/panels/IPPMResponseChartPanel.java
branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/ui/panels/MainPanelIPPM.java
branches/perfsonarui/src/org/perfsonar/perfsonarui/ui/panels/ResponseChartPanel.java
Log:
Added hoplist funcionality to the Circuits tab. A 4th graph is added to
display active routes between a pair endpoints for the selected period of
time. Graph displays hopcount, but detailed information about the route can
be displayed in a pop-up window by clicking on the desired route on the graph
legend area.
Modified:
branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/HoplistPath.java
===================================================================
--- branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/HoplistPath.java
2008-11-12 10:46:58 UTC (rev 4694)
+++ branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/HoplistPath.java
2008-11-14 15:17:35 UTC (rev 4695)
@@ -50,17 +50,17 @@
}
public String getAddressAtHop(int i){
- if(i>0)return hopAddresses.get(i-1);
+ if(i>0 && i<=hopCount)return hopAddresses.get(i-1);
else return "NULL";
}
public String getHostnameAtHop(int i){
- if(i>0)return hopHostnames.get(i-1);
+ if(i>0 && i<=hopCount)return hopHostnames.get(i-1);
else return "NULL";
}
public String getAddressTypeAtHop(int i){
- if(i>0)return hopAddressTypes.get(i-1);
+ if(i>0 && i<=hopCount)return hopAddressTypes.get(i-1);
else return "NULL";
}
Modified:
branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/HoplistRequest.java
===================================================================
---
branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/HoplistRequest.java
2008-11-12 10:46:58 UTC (rev 4694)
+++
branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/HoplistRequest.java
2008-11-14 15:17:35 UTC (rev 4695)
@@ -19,9 +19,7 @@
package org.perfsonar.perfsonarui.ippm;
import java.io.InputStream;
-import java.sql.Timestamp;
import java.util.ArrayList;
-import java.util.Hashtable;
import java.util.Iterator;
import java.util.LinkedList;
@@ -30,6 +28,7 @@
import org.perfsonar.perfsonarui.AbstractMARequest;
import org.perfsonar.perfsonarui.TimeValueResponseListener;
+import org.perfsonar.perfsonarui.UnsupportedTypeException;
import org.perfsonar.perfsonarui.plugins.IPerfsonarRequest;
import org.perfsonar.perfsonarui.plugins.IPerfsonarResponse;
import org.perfsonar.perfsonarui.plugins.ITimeValueResponse;
@@ -58,11 +57,13 @@
public static final String REQUEST_TYPE = "hoplist";
public static String[] measurements = {
+ "Route0",
"Route1",
"Route2",
"Route3",
"Route4",
"Route5",
+ "Route6",
};
public static String[] measurement_title = {
"Routes"
@@ -70,14 +71,12 @@
protected static String[] type_classes = {
"org.perfsonar.perfsonarui.plugins.PSHopCountDatum"};
- protected Hashtable<Integer, HoplistPath> routes;
- //protected long lastActivation = 0;
- //protected int lastActivatedRoute = 0;
+ //protected Hashtable<Integer, HoplistPath> routes;
protected int timeout = 10000; //10 sec
public HoplistRequest(){
super();
- routes = new Hashtable<Integer, HoplistPath>();
+ //routes = new Hashtable<Integer, HoplistPath>();
}
public Document createRequest(IUserData data, String messageType)
@@ -118,6 +117,10 @@
setQueryEndpoint(src, "IFName", request,
IPPMUserData.IFNAME_SRC);
String dst = userData.getQuery(IPPMUserData.IFNAME_DST);
setQueryEndpoint(dst, "IFName", request,
IPPMUserData.IFNAME_DST);
+ if(!HoplistRoutes.getInstance().checkPair(src, dst)){
+ HoplistRoutes.getInstance().setPair(src, dst);
+ HoplistRoutes.getInstance().clearRoutes();
+ }
String startTime = userData.getStartTime();
setQueryTime(startTime, request, "startTime");
String endTime = userData.getEndTime();
@@ -151,7 +154,6 @@
}
public void process(IUserData udata, Document response,
IPerfsonarResponse listener) throws Exception {
- routes.clear();
NodeList data;
Element singleData;
NodeList commonTimes;
@@ -159,7 +161,6 @@
NodeList hopCounts;
Element hop;
data =
response.getElementsByTagNameNS(NS_NMWG,IPPMUserData.NMWG_DATA);
- int duplicates = 0;
for (int i = 0; i < data.getLength(); i++)
{
singleData = (Element) data.item(i);
@@ -176,28 +177,10 @@
}
int indexInRoutes = routeExists(path);
- if(indexInRoutes == -1) {
- int insertingPath = routes.size();
- routes.put(insertingPath, path);
- /*if(pathTime > lastActivation) {
- lastActivation = pathTime;
- lastActivatedRoute =
insertingPath;
- }*/
- System.out.println(insertingPath+"
inserted "+new Timestamp(pathTime.getTime()*1000).toString()+path.toString());
- }
- else {
-
routes.get(indexInRoutes).addActivation(pathTime.getTime());
- /*if(pathTime > lastActivation) {
- lastActivation = pathTime;
- lastActivatedRoute =
indexInRoutes;
- }*/
- System.out.println(indexInRoutes+"
activated "+new Timestamp(pathTime.getTime()*1000).toString());
- duplicates++;
- }
+ if(indexInRoutes == -1)
HoplistRoutes.getInstance().addRoute(path);
+ else
HoplistRoutes.getInstance().getRoute(indexInRoutes).addActivation(pathTime.getTime());
}
}
- System.out.println("Found total of "+routes.size()+" distinct
paths; "+(duplicates+routes.size())+" different activation times");
- //randomizeHopCounts();
presentDataFromResponse(response,
(TimeValueResponseListener)listener, udata);
}
@@ -205,115 +188,44 @@
final ITimeValueResponse response =
responseListener.getTimeValueResponse();
response.initializeResponse();
Long intervalStartTime = Long.parseLong(userData.getStartTime());
- System.out.println("Start time is "+ new
Timestamp(intervalStartTime*1000));
Long intervalEndTime = Long.parseLong(userData.getEndTime());
- System.out.println("End time is "+ new
Timestamp(intervalEndTime*1000));
fireStatusMessage("Processing Hoplist response");
- System.out.println("Routes in hash "+routes.size());
- if(routes.size()==1){
- System.out.println("Single route in route list, active for
the entire period");
- HoplistPath singlePath = routes.get(0);
- try {
- String timeString = userData.getStartTime();
- PSTime time = new PSNMTMTime();
- time.setValue(timeString);
- if (!time.isNaN()){
- String hopcount = new
Integer(singlePath.getHopCount()).toString();
- try {
- if (!hopcount.equals("")) {
- PSHoplistDatum datum = new PSHoplistDatum();
- datum.setValue(hopcount);
- //System.out.println(new
Timestamp(Long.parseLong(timeString)*1000).toString()+": Activating Route 0");
-
response.setDatum("Active"+1,"Route"+1,time,datum);
- }
- } catch (Exception x) {
- logger.error(x);
- }
- } else {
- logger.error(time);
- }
- timeString = userData.getEndTime();
- time = new PSNMTMTime();
- time.setValue(timeString);
- if (!time.isNaN()){
- try {
- PSHoplistDatum datum = new PSHoplistDatum();
- datum.setValue("0");
- //System.out.println(new
Timestamp(Long.parseLong(timeString)*1000).toString()+": De-activating Route
0");
-
response.setDatum("Inactive"+1,"Route"+1,time,datum);
- } catch (Exception x) {
- logger.error(x);
- }
- } else {
- logger.error(time);
- }
- } catch (Exception x) {
- logger.error(x);
- }
+ if(HoplistRoutes.getInstance().routesSize()==0) return;
+ for(int i = 0; i < HoplistRoutes.getInstance().routesSize(); i++){
+ HoplistPath singlePath =
HoplistRoutes.getInstance().getRoute(i);
+ LinkedList<Long> activations =
singlePath.getActivationTimes();
+ Iterator<Long> activationsIterator = activations.iterator();
+ while(activationsIterator.hasNext()){
+ long activation = activationsIterator.next();
+ if(!(activation >= intervalStartTime && activation <=
intervalEndTime)) continue;
+ String timeString = new Long(activation).toString();
+ try {
+ activateRoute(i+1, timeString, response);
+ for(int j = 0; j <
HoplistRoutes.getInstance().routesSize(); j++){
+ if(j!=i){
+ deactivateRoute(j+1,
timeString, response);
+ }
+ }
+ } catch (Exception x) {
+ logger.error(x);
+ }
+ }
}
- else {
- for(int i = 0; i < routes.size(); i++){
- HoplistPath singlePath = routes.get(i);
- try {
- PSTime time = new PSNMTMTime();
- LinkedList<Long> activations =
singlePath.getActivationTimes();
- String hopcount = new
Integer(singlePath.getHopCount()).toString();
- Iterator<Long> activationsIterator =
activations.iterator();
-
while(activationsIterator.hasNext()&&!hopcount.equals("")){
- long activation = activationsIterator.next();
- if(!(activation >= intervalStartTime &&
activation <= intervalEndTime)) continue;
- String timeString = new
Long(activation).toString();
- time.setValue(timeString);
- if (!time.isNaN()){
- try {
- PSHoplistDatum datum = new
PSHoplistDatum();
- datum.setValue(hopcount);
- //System.out.println(new
Timestamp(Long.parseLong(timeString)*1000).toString()+": Activating Route
"+i+"; "+hopcount);
-
response.setDatum("Active"+(i+1),"Route"+(i+1),time,datum);
- for(int j = 0; j < routes.size();
j++){
- if(j!=i){
- PSHoplistDatum
nullDatum = new PSHoplistDatum();
-
nullDatum.setValue("0");
-
//System.out.println(new
Timestamp(Long.parseLong(timeString)*1000).toString()+": De-activating Route
"+j);
-
response.setDatum("Inactive"+(j+1),"Route"+(j+1),time,nullDatum);
- }
- }
- } catch (Exception x) {
- logger.error(x);
- }
- } else {
- logger.error(time);
- }
- }
- } catch (Exception x) {
- logger.error(x);
- }
+ try{
+ for(int j = 0; j < HoplistRoutes.getInstance().routesSize();
j++){
+ deactivateRoute(j+1, userData.getEndTime(), response);
}
- //System.out.println("Path last acitvated was
Route"+lastActivatedRoute+"; should put active value at the end of interval");
- try{
- PSTime time = new PSNMTMTime();
- time.setValue(userData.getEndTime());
- PSHoplistDatum nullDatum = new PSHoplistDatum();
- nullDatum.setValue("0");
- for(int j = 0; j < routes.size(); j++){
-
response.setDatum("Inactive"+(j+1),"Route"+(j+1),time,nullDatum);
- }
- }catch (Exception e){
- e.printStackTrace();
- }
+ }catch (Exception e){
+ logger.error(e);
}
try {
response.finalizeResponse();
fireStatusMessage("Response processed");
} catch (Exception x) {
- logger.error(x);
+ logger.error(x);
}
}
- /*public void printRoute(int index){
- if(index < routes.size())
System.out.println(routes.get(index));
- }*/
-
private void setQueryEndpoint(String name, String type, Document
request, String target){
NodeList nodes;
if (target == null)return;
@@ -329,7 +241,6 @@
{
Element parameter;
parameter = (Element) children.item(j);
- System.out.println("Setting "+target+"
endpoint to "+name);
parameter.setAttribute(E_TYPE, type);
parameter.setAttribute(ATTR_VALUE, name);
}
@@ -353,28 +264,37 @@
Element parameter;
parameter = (Element) children.item(j);
String what = parameter.getAttribute(HOP_NAME);
- if(what.equals(target)) {
- System.out.println("Setting "+what+" time to
"+new Timestamp(Long.parseLong(time)*1000));
- parameter.setTextContent(time);
- }
+ if(what.equals(target))
parameter.setTextContent(time);
}
}
}
public int routeExists(HoplistPath path){
- HoplistPath singlePath;
- for(int i = 0; i<routes.size(); i++){
- singlePath = routes.get(i);
- if(singlePath.equalRoute(path)) return i;
- }
- return -1;
+ return HoplistRoutes.getInstance().isRoutePresent(path);
}
- public void randomizeHopCounts(){
- HoplistPath oneRoute;
- for(int i = 0; i < routes.size(); i++){
- oneRoute = routes.get(i);
- oneRoute.setRandomHopcount(12);
- }
+ public void activateRoute(int index, String timeString,
ITimeValueResponse response){
+ try{
+ HoplistPath activeRoute =
HoplistRoutes.getInstance().getRoute(index-1);
+ PSTime time = new PSNMTMTime();
+ time.setValue(timeString);
+ PSHoplistDatum activationDatum = new PSHoplistDatum();
+ activationDatum.setValue(new
Integer(activeRoute.getHopCount()).toString());
+
response.setDatum("Active"+index,"Route"+index,time,activationDatum);
+ }catch(UnsupportedTypeException e){
+ e.printStackTrace();
+ }
}
+
+ public void deactivateRoute(int index, String timeString,
ITimeValueResponse response){
+ try{
+ PSTime time = new PSNMTMTime();
+ time.setValue(timeString);
+ PSHoplistDatum deactivationDatum = new PSHoplistDatum();
+ deactivationDatum.setValue("0");
+
response.setDatum("Inactive"+index,"Route"+index,time,deactivationDatum);
+ }catch(UnsupportedTypeException e){
+ e.printStackTrace();
+ }
+ }
}
\ No newline at end of file
Added:
branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/HoplistRoutes.java
Modified:
branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/IPPMPerfsonarModel.java
===================================================================
---
branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/IPPMPerfsonarModel.java
2008-11-12 10:46:58 UTC (rev 4694)
+++
branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/IPPMPerfsonarModel.java
2008-11-14 15:17:35 UTC (rev 4695)
@@ -200,7 +200,7 @@
}
@Override
public ITimeValueResponse createTimeValueResponseListener() {
- PerfsonarTimeSeriesDataset ifDataset = new
PerfsonarTimeSeriesDataset();
+ PerfsonarHoplistTimeSeriesDataset ifDataset = new
PerfsonarHoplistTimeSeriesDataset();
for (int m=0; m < IPPMRequest.measurements.length; m++)
for (int i=0; i < IPPMRequest.measurements[m].length; i++) {
PerfsonarTimeSeries series;
@@ -212,6 +212,11 @@
}
+// for (int i=1; i <= 10; i++) {
+ PerfsonarTimeSeries series;
+ series = new PerfsonarTimeSeries("Route"+1);
+ ifDataset.addSeries("Route"+1,series);
+// }
return ifDataset;
}
Modified:
branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/IPPMRequest.java
===================================================================
--- branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/IPPMRequest.java
2008-11-12 10:46:58 UTC (rev 4694)
+++ branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/IPPMRequest.java
2008-11-14 15:17:35 UTC (rev 4695)
@@ -66,8 +66,8 @@
{"duplicates","loss"}
};
public static final String[] measurement_title = {
- "IPDV (s)",
- "Delay(s)",
+ "IPDV (ms)",
+ "Delay(ms)",
"Loss/Dups"
};
protected static final String[] type_classes = {
Modified:
branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/PSDelayDatum.java
===================================================================
--- branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/PSDelayDatum.java
2008-11-12 10:46:58 UTC (rev 4694)
+++ branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/PSDelayDatum.java
2008-11-14 15:17:35 UTC (rev 4695)
@@ -29,6 +29,7 @@
package org.perfsonar.perfsonarui.ippm;
+import org.perfsonar.perfsonarui.UnsupportedTypeException;
import org.perfsonar.perfsonarui.plugins.PSCountsDatum;
/**
@@ -37,9 +38,16 @@
* <b>Modified</b> Jun 5, 2008
*/
public class PSDelayDatum extends PSCountsDatum {
- protected static final String units = "s";
+ protected static final String units = "ms";
@Override
public String getDefaultType() {
return units;
}
+
+ @Override
+ public void setValue(String value) throws UnsupportedTypeException {
+ super.setValue(value);
+ this.value = this.value*1000;
+ }
+
}
Modified:
branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/PSJitterDatum.java
===================================================================
---
branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/PSJitterDatum.java
2008-11-12 10:46:58 UTC (rev 4694)
+++
branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/PSJitterDatum.java
2008-11-14 15:17:35 UTC (rev 4695)
@@ -29,12 +29,19 @@
package org.perfsonar.perfsonarui.ippm;
+import org.perfsonar.perfsonarui.UnsupportedTypeException;
import org.perfsonar.perfsonarui.plugins.PSCountsDatum;
public class PSJitterDatum extends PSCountsDatum {
- protected static final String units="?";
+ protected static final String units="ms";
@Override
public String getDefaultType() {
return units;
}
+
+ @Override
+ public void setValue(String value) throws UnsupportedTypeException {
+ super.setValue(value);
+ this.value = this.value*1000;
+ }
}
Added:
branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/PerfsonarHoplistTimeSeriesDataset.java
Added:
branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/ui/panels/HoplistInfoTable.java
Modified:
branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/ui/panels/IPPMResponseChartPanel.java
===================================================================
---
branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/ui/panels/IPPMResponseChartPanel.java
2008-11-12 10:46:58 UTC (rev 4694)
+++
branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/ui/panels/IPPMResponseChartPanel.java
2008-11-14 15:17:35 UTC (rev 4695)
@@ -25,10 +25,13 @@
import java.text.SimpleDateFormat;
import java.util.Enumeration;
import java.util.Hashtable;
+import java.util.List;
import java.util.Locale;
import java.util.TimeZone;
import org.jfree.chart.ChartColor;
+import org.jfree.chart.ChartMouseEvent;
+import org.jfree.chart.ChartMouseListener;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.axis.NumberAxis;
@@ -37,8 +40,12 @@
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
+import org.jfree.chart.renderer.xy.XYStepAreaRenderer;
+import org.jfree.data.general.DatasetChangeEvent;
import org.jfree.ui.RectangleInsets;
+import org.perfsonar.perfsonarui.ippm.HoplistRoutes;
import org.perfsonar.perfsonarui.ippm.IPPMRequest;
+import org.perfsonar.perfsonarui.ippm.PerfsonarHoplistTimeSeriesDataset;
import org.perfsonar.perfsonarui.plugins.IPerfsonarTab;
import org.perfsonar.perfsonarui.ui.panels.PerfsonarTimeSeries;
import org.perfsonar.perfsonarui.ui.panels.PerfsonarTimeSeriesDataset;
@@ -49,11 +56,12 @@
* @author Nina Jeliazkova
* <b>Modified</b> 2006-3-7
*/
-public class IPPMResponseChartPanel extends
ResponseChartPanel<PerfsonarTimeSeries> {
+public class IPPMResponseChartPanel extends
ResponseChartPanel<PerfsonarTimeSeries> implements ChartMouseListener{
protected XYPlot[] plots = null;
-
+ IPerfsonarTab psModel;
protected Hashtable<String,Integer> lookup;
protected Hashtable<String,Color> colorLookup;
+ private int routeSeriesCounter;
/**
* Comment for <code>serialVersionUID</code>
*/
@@ -106,6 +114,12 @@
setTitle("");
}
+
+ public void datasetChanged(DatasetChangeEvent arg0) {
+ super.datasetChanged(arg0);
+
+ }
+
protected void preparePlots() {
dateAxis = new DateAxis("", TimeZone.getDefault(),
Locale.getDefault());
dateAxis.setAutoRange(true);
@@ -113,7 +127,7 @@
lookup = new Hashtable<String,Integer>();
colorLookup = new Hashtable<String,Color>();
- plots = new XYPlot[IPPMRequest.measurements.length];
+ plots = new XYPlot[IPPMRequest.measurements.length+1];
for (int m=0; m < IPPMRequest.measurements.length;m++)
for (int i=0; i < IPPMRequest.measurements[m].length;i++) {
@@ -146,94 +160,96 @@
colorLookup.put(IPPMRequest.measurements[m][i], Color.BLACK);
} else colorLookup.put(IPPMRequest.measurements[m][i],
Color.ORANGE);
}
- /*
- for (int i=0; i < 4; i++) {
-
- bitAxis = new NumberAxis("IPDV (ms)");
- bitAxis.setAutoRange(true);
- bitAxis.setAxisLinePaint(gridColor);
- bitAxis.setTickMarkPaint(gridColor);
- bitAxis.setTickMarksVisible(true);
- bitAxis.setAutoRangeIncludesZero(false);
-
- ipdvPlot = new XYPlot(null,dateAxis,bitAxis,new
XYLineAndShapeRenderer(true,false));
- ipdvPlot.setRangeAxis(bitAxis);
- ipdvPlot.setDomainAxis(dateAxis);
- lookup.put(IPPMRequest.types[i],"ipdv");
- }
- for (int i=8; i < IPPMRequest.types.length; i++) {
- bitAxis = new NumberAxis("Loss/Dups");
//(loss/duplicates) "Packet counts"
+ bitAxis = new NumberAxis("Routes");
+ bitAxis.setAutoRange(true);
+ bitAxis.setAxisLinePaint(gridColor);
+ bitAxis.setTickMarkPaint(gridColor);
+ bitAxis.setTickUnit(new NumberTickUnit(1));
+ bitAxis.setTickMarksVisible(true);
+ bitAxis.setAutoRangeIncludesZero(false);
+ plots[IPPMRequest.measurements.length] = new
XYPlot(null,dateAxis,bitAxis,new XYStepAreaRenderer());
- bitAxis.setAutoRange(true);
- bitAxis.setAxisLinePaint(gridColor);
- bitAxis.setTickMarkPaint(gridColor);
- bitAxis.setTickMarksVisible(true);
- bitAxis.setAutoRangeIncludesZero(false);
-
bitAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
-
- packetPlot = new XYPlot(null,dateAxis,bitAxis,new
XYLineAndShapeRenderer(true,false));
- packetPlot.setRangeAxis(bitAxis);
- packetPlot.setDomainAxis(dateAxis);
- lookup.put(IPPMRequest.types[i],"packet");
- }
- */
-
-
-
+ for(int i = 1; i<=50; i++){
+ lookup.put("Route"+i,new
Integer(IPPMRequest.measurements.length));
+ }
+
+ colorLookup.put("Route1", ChartColor.LIGHT_GREEN);
+ colorLookup.put("Route2", ChartColor.LIGHT_BLUE);
+ colorLookup.put("Route3", ChartColor.LIGHT_CYAN);
+ colorLookup.put("Route4", ChartColor.LIGHT_YELLOW);
+ colorLookup.put("Route5", ChartColor.LIGHT_RED);
+ colorLookup.put("Route6", ChartColor.LIGHT_MAGENTA);
+ colorLookup.put("Route7", ChartColor.LIGHT_GRAY);
+ colorLookup.put("Route8", ChartColor.DARK_GREEN);
+ colorLookup.put("Route9", ChartColor.DARK_RED);
+ colorLookup.put("Route10", ChartColor.VERY_DARK_BLUE);
+
+ HoplistRoutes.getInstance().registerChart(this);
+ routeSeriesCounter = 1;
}
@Override
public void addWidgets(IPerfsonarTab psModel,
PerfsonarTimeSeriesDataset ifDataset) {
super.addWidgets(psModel, ifDataset);
chartPanel.setDomainZoomable(true);
chartPanel.setRangeZoomable(true);
-
-
-
+ chartPanel.addChartMouseListener(this);
}
+
+
/* (non-Javadoc)
* @see
org.perfsonar.perfsonarui.ui.panels.ResponseChartPanel#createChart(java.util.Hashtable)
*/
@Override
protected JFreeChart createChart(IPerfsonarTab
psModel,Hashtable<String,PerfsonarTimeSeries> datasets) {
preparePlots();
-
+ this.psModel = psModel;
CombinedDomainXYPlot plot = new
CombinedDomainXYPlot(dateAxis);
plot.setInsets(new RectangleInsets(20,50,20,20));
XYPlot subplot = null;
int n = 0;
Enumeration<String> keys = datasets.keys();
while (keys.hasMoreElements()) {
- Object type = keys.nextElement();
+ String type = keys.nextElement();
Integer plotType = lookup.get(type);
-
if (plotType == null) continue;
- subplot = plots[plotType.intValue()];
- /*
- if (plotType.equals("owd")) subplot = owdPlot;
- else if (plotType.equals("ipdv")) subplot = ipdvPlot;
- else if (plotType.equals("packet")) subplot = packetPlot;
- else continue;
- */
-
- //subplot = (XYPlot)lookup.get(type);
-
- PerfsonarTimeSeries series = datasets.get(type);
- int seriesN = 0;
- if (subplot.getDataset() == null) {
- subplot.setDataset(series);
- } else {
- seriesN = subplot.getDatasetCount();
- subplot.setDataset(subplot.getDatasetCount(),series);
- }
-
- XYItemRenderer renderer;
- renderer = new XYLineAndShapeRenderer(true,false);
- Color clr = colorLookup.get(type);
- renderer.setSeriesPaint(0,clr);
- subplot.setRenderer(seriesN,renderer);
-
- n++;
-
+ else if (plotType != 3) {
+ subplot = plots[plotType.intValue()];
+ PerfsonarTimeSeries series = datasets.get(type);
+ int seriesN = 0;
+ if (subplot.getDataset() == null) {
+ subplot.setDataset(series);
+ } else {
+ seriesN = subplot.getDatasetCount();
+
subplot.setDataset(subplot.getDatasetCount(),series);
+ }
+
+ XYItemRenderer renderer;
+ renderer = new
XYLineAndShapeRenderer(true,false);
+ Color clr = colorLookup.get(type);
+ renderer.setSeriesPaint(0,clr);
+ subplot.setRenderer(seriesN,renderer);
+
+ n++;
+ }
+ else{
+ subplot = plots[plotType.intValue()];
+ PerfsonarTimeSeries series = datasets.get(type);
+ int seriesN = 0;
+ if (subplot.getDataset() == null) {
+ subplot.setDataset(series);
+ } else {
+ seriesN = subplot.getDatasetCount();
+
subplot.setDataset(subplot.getDatasetCount(),series);
+ }
+
+ XYItemRenderer renderer;
+ renderer = new XYStepAreaRenderer();
+ Color clr = colorLookup.get(type);
+ renderer.setSeriesPaint(0,clr);
+ subplot.setRenderer(seriesN,renderer);
+
+ n++;
+ }
}
for (int i=0; i < plots.length;i++)
plot.add(plots[i]);
@@ -245,4 +261,64 @@
return result;
}
+
+ public void addRouteSeries(){
+ List plots = ((CombinedDomainXYPlot)chart.getPlot()).getSubplots();
+ XYPlot current = (XYPlot)plots.get(3);
+ int index = ++routeSeriesCounter;
+
+ PerfsonarTimeSeries series;
+ series = new PerfsonarTimeSeries("Route"+index);
+ ifDataset.addSeries("Route"+index,series);
+
+ current.setDataset(index-1,series);
+ XYItemRenderer renderer;
+ renderer = new XYStepAreaRenderer();
+ Color clr = colorLookup.get("Route"+index);
+ renderer.setSeriesPaint(0,clr);
+ current.setRenderer(index-1,renderer);
+ }
+
+ public void removeRouteSeries(){
+ List plots = ((CombinedDomainXYPlot)chart.getPlot()).getSubplots();
+ XYPlot current = (XYPlot)plots.get(3);
+
+ for(int i=1; i<routeSeriesCounter; i++){
+ current.setDataset(i,null);
+
((PerfsonarHoplistTimeSeriesDataset)ifDataset).removeRouteSeries(i+1);
+ }
+ routeSeriesCounter = 1;
+ }
+
+ public Color getLookupColor(String type){
+ return colorLookup.get(type);
+ }
+
+ public void chartMouseClicked(ChartMouseEvent event) {
+ String temp = null;
+ String clicked = null;
+ if(event.getEntity()!=null) temp =
event.getEntity().toString();
+ if(temp!=null) {
+ if(temp.contains("LegendItemEntity")){
+ int start = temp.indexOf("seriesKey");
+ int end = temp.indexOf(',');
+ temp = temp.substring(start, end);
+ String[] res = temp.split("=");
+ clicked = res[1];
+ }
+ }
+ if(clicked != null){
+ if(clicked.startsWith("Route")){
+ String index = clicked.substring(5);
+ int ind = Integer.parseInt(index);
+ if(ind<=HoplistRoutes.getInstance().routesSize()){
+ HoplistInfoTable tableDialog = new
HoplistInfoTable(ind);
+ }
+ }
+ }
+ }
+
+ public void chartMouseMoved(ChartMouseEvent event) {
+
+ }
}
Modified:
branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/ui/panels/MainPanelIPPM.java
===================================================================
---
branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/ui/panels/MainPanelIPPM.java
2008-11-12 10:46:58 UTC (rev 4694)
+++
branches/perfsonarui/src/org/perfsonar/perfsonarui/ippm/ui/panels/MainPanelIPPM.java
2008-11-14 15:17:35 UTC (rev 4695)
@@ -32,7 +32,6 @@
import org.perfsonar.perfsonarui.ippm.IPPMPerfsonarModel;
import org.perfsonar.perfsonarui.ippm.IPPMUserData;
import org.perfsonar.perfsonarui.plugins.IPerfsonarTab;
-import org.perfsonar.perfsonarui.plugins.MAEndpoint;
import org.perfsonar.perfsonarui.ui.PerfsonarModel;
import org.perfsonar.perfsonarui.ui.PluginMainPanel;
import org.perfsonar.perfsonarui.ui.actions.ITimeSet;
Modified:
branches/perfsonarui/src/org/perfsonar/perfsonarui/ui/panels/ResponseChartPanel.java
===================================================================
---
branches/perfsonarui/src/org/perfsonar/perfsonarui/ui/panels/ResponseChartPanel.java
2008-11-12 10:46:58 UTC (rev 4694)
+++
branches/perfsonarui/src/org/perfsonar/perfsonarui/ui/panels/ResponseChartPanel.java
2008-11-14 15:17:35 UTC (rev 4695)
@@ -60,7 +60,7 @@
protected String title = ""; //Detailed interface statistics";
protected static Color gridColor = new Color(130,30,30);
protected ChartPanel chartPanel;
- PerfsonarTimeSeriesDataset ifDataset;
+ protected PerfsonarTimeSeriesDataset ifDataset;
protected JFreeChart chart;
- perfsonar: r4695 - in branches/perfsonarui/src/org/perfsonar/perfsonarui: ippm ippm/ui/panels ui/panels, svnlog, 11/14/2008
Archive powered by MHonArc 2.6.16.