⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 requestanalyser.java

📁 P2P模拟器P2Psim的程序源码
💻 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 + -