📄 requestanalyser.java
字号:
package gui;
import org.jgraph.graph.DefaultEdge;
//import org.jgraph.graph.DefaultGraphModel;
import org.jgraph.graph.DefaultGraphCell;
import java.util.LinkedList;
import java.util.Vector;
import graph.Properties;
import graph.GraphEventManager;
import graph.ResourceQuery;
import de.progra.charting.*;
import de.progra.charting.event.ChartDataModelEvent;
import de.progra.charting.event.ChartDataModelListener;
import de.progra.charting.model.*;
import de.progra.charting.render.*;
import de.progra.charting.swing.ChartPanel;
//import java.io.FileOutputStream;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileOutputStream;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
public class RequestAnalyser extends JFrame implements ActionListener, ChartDataModelListener
{
double[][] model;
double[] columns;
String[] rows;
String title;
JComboBox nodeList;
JComboBox resourceList;
ChartPanel chartPanel;
JPanel contents;
DefaultChartDataModel data;
JSplitPane splitPane;
public RequestAnalyser()
{
super("Analyse of request-times");
//this.setResizable(false);
contents=new JPanel(new BorderLayout());
contents.setOpaque(false);
makeCommandPanel();
setDefaultChartData();
String title = "Analyse of request-times";
// Create an editable chart data model
data = new EditableChartDataModel(model, columns, rows);
chartPanel = new ChartPanel(data, title, DefaultChart.LINEAR_X_LINEAR_Y);
chartPanel.addChartRenderer(new LineChartRenderer(chartPanel.getCoordSystem(), data), 1);
data.addChartDataModelListener(this);
setSize(600, 400);
contents.add(chartPanel, BorderLayout.CENTER);
contents.add(makeCommandPanel(), BorderLayout.SOUTH);
this.setContentPane(contents);
}
public JPanel makeCommandPanel()
{
JPanel commandPanel = new JPanel();
commandPanel.setLayout(null);
commandPanel.setPreferredSize(new Dimension(550,70));
JLabel label = new JLabel("Choose a node:");
label.setBounds(30, 10, 100, 25);
commandPanel.add(label);
label = new JLabel("Choose a resource:");
label.setBounds(150, 10, 140, 25);
commandPanel.add(label);
JButton refresh=new JButton("Refresh");
refresh.addActionListener(this);
refresh.setBounds(440, 10, 140, 25);
commandPanel.add(refresh);
JButton write=new JButton("Write to file");
write.addActionListener(this);
write.setBounds(440, 37, 140, 25);
commandPanel.add(write);
nodeList = new JComboBox();
String name;
int length = GraphEventManager.getReference().getMyController().getModel().getRootCount();
for (int i=0; i<length; i++)
{
DefaultGraphCell dgc = (DefaultGraphCell)GraphEventManager.getReference().getMyController().getModel().getRootAt(i);
if (! (dgc instanceof DefaultEdge))
{
name = GraphEventManager.getReference().getProperties(dgc).getName();
nodeList.addItem(name);
}
}
nodeList.setSelectedIndex(0);
nodeList.addActionListener(null);
nodeList.setBounds(30, 37, 100, 24);
commandPanel.add(nodeList);
resourceList = new JComboBox(GraphEventManager.getReference().eventGetResourceNames());
resourceList.setSelectedIndex(0);
resourceList.addActionListener(null);
resourceList.setBounds(150, 37, 200, 24);
commandPanel.add(resourceList);
JButton all=new JButton("All");
all.addActionListener(this);
all.setBounds(290, 10, 60, 25);
commandPanel.add(all);
return commandPanel;
}
public void setDefaultChartData()
{
model = new double[1][2];
model[0][0] = 0.0;
model[0][1] = 1.0;
columns = new double[2];
columns[0] = 0.0;
columns[1] = 1.0;
rows = new String[1];
rows[0] = (String) resourceList.getSelectedItem();
//rows[0] = "Resource";
title = "Analyse of request-times";
}
public void updateChart()
{
//data = new EditableChartDataModel(model, columns, rows);
data.setAutoScale(true);
contents.remove(chartPanel);
chartPanel = new ChartPanel(data, title, DefaultChart.LINEAR_X_LINEAR_Y);
chartPanel.addChartRenderer(new LineChartRenderer(chartPanel.getCoordSystem(), data), 1);
data.addChartDataModelListener(this);
contents.add(chartPanel, BorderLayout.CENTER);
this.setContentPane(contents);
}
public void writeToFile()
{
//data = new EditableChartDataModel(model, columns, rows);
data.setAutoScale(true);
//DefaultChartDataModel data = new DefaultChartDataModel(model, columns, rows);
DefaultChart c = new DefaultChart(data, title, DefaultChart.LINEAR_X_LINEAR_Y);
c.addChartRenderer(new LineChartRenderer(c.getCoordSystem(), data), 1);
c.setBounds(new Rectangle(0, 0, 640, 480));
String name = (String) nodeList.getSelectedItem();
String resourceName = (String) resourceList.getSelectedItem();
// Export the chart as a PNG image
try {
FileOutputStream fos = new FileOutputStream(name+" - "+resourceName+".jpg");
ChartEncoder.createEncodedImage(fos, c, "jpg");
fos.close();
} catch(Exception e) {
e.printStackTrace();
}
}
public void showSearchRequest(String resourceName)
{
System.out.println("RequestAnalyser :: showSearchRequest");
Properties properties = null;
Vector times = new Vector();
Vector startTimes = new Vector();
String name = (String) nodeList.getSelectedItem();
//String resourceName = (String) resourceList.getSelectedItem();
int teller=0;
int length = GraphEventManager.getReference().getMyController().getModel().getRootCount();
for (int i=0; i<length; i++)
{
DefaultGraphCell dgc = (DefaultGraphCell)GraphEventManager.getReference().getMyController().getModel().getRootAt(i);
if (! (dgc instanceof DefaultEdge) && GraphEventManager.getReference().getProperties(dgc).getName().equals(name))
{
properties = GraphEventManager.getReference().getProperties(dgc);
}
}
if (properties != null && properties.getListInformation("Query") != null)
{
LinkedList ll = (LinkedList)properties.getListInformation("Query");
times = new Vector();
for (int j=0; j < ll.size(); j++)
{
if ( ((ResourceQuery)ll.get(j)).getSearchFor().equals(resourceName))
{
times.add(new Integer(((ResourceQuery)ll.get(j)).getWaitingTime()));
startTimes.add(new Integer(((ResourceQuery)ll.get(j)).getStartTime()));
}
}
}
if (times.size() == 0)
{
System.out.println("Default data");
setDefaultChartData();
}
else
{
if (times.size() == 1)
{
System.out.println("(0,0) werd toegevoegd.");
times.add(0,new Integer(0));
startTimes.add(0, new Integer(0));
}
System.out.println("Times size = " + times.size());
model = new double[1][times.size()];
columns = new double[startTimes.size()];
for(int j=0; j<times.size(); j++)
{
model[0][j] = (double) ((Integer)times.get(j)).intValue();
columns[j] = (double) ((Integer)startTimes.get(j)).intValue();
}
rows = new String[1];
rows[0] = resourceName;
title = "Analyse of request-times for " + name;
}
data = new DefaultChartDataModel(model, columns, rows);
updateChart();
}
public void showAllRequests()
{
String[] resources = GraphEventManager.getReference().eventGetResourceNames();
DefaultDataSet[] ds = new DefaultDataSet[resources.length];
for (int i=0; i<resources.length; i++)
{
showSearchRequest(resources[i]);
ds[i] = new DefaultDataSet(ChartUtilities.transformArray(model[0]),
ChartUtilities.transformArray(columns),
CoordSystem.FIRST_YAXIS,
resources[i]);
}
title = "Analyse of all request-times";
data = new DefaultChartDataModel(ds);
updateChart();
}
public int[] vectorToIntArray(Vector v)
{
int result[] = new int[v.size()];
for (int i=0; i<v.size(); i++)
{
result[i] = ((Integer)v.get(i)).intValue();
}
return result;
}
public void chartDataChanged(ChartDataModelEvent evt)
{}
public void actionPerformed(ActionEvent event)
{
System.out.println("RequestAnalyser :: Action Performed : " + event.getActionCommand());
if (event.getActionCommand().equals("Refresh"))
{
showSearchRequest((String) resourceList.getSelectedItem());
}
else if (event.getActionCommand().equals("Write to file"))
{
writeToFile();
}
else if (event.getActionCommand().equals("All"))
{
showAllRequests();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -