ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/conient/uk/org/iscream/cms/conient/Conient.java
Revision: 1.3
Committed: Sun Jan 14 23:14:35 2001 UTC (23 years, 4 months ago) by ajm
Branch: MAIN
Changes since 1.2: +9 -2 lines
Log Message:
stopped it hogging CPU, it now only updates if new data has been recieved...
it does it in a messy way....

File Contents

# User Rev Content
1 ajm 1.1 //---PACKAGE DECLARATION---
2    
3     //---IMPORTS---
4     import javax.swing.*;
5     import javax.swing.border.*;
6     import java.awt.Color;
7    
8     import java.awt.*;
9     import java.awt.event.*;
10     import java.net.*;
11     import java.io.*;
12 ajm 1.2 import java.util.Date;
13     import java.text.DateFormat;
14     import java.util.Locale;
15 ajm 1.1
16     /**
17     * NASTY AND BASIC, PLEASE DON'T COMPLAIN
18     *
19     * @author $Author: ajm4 $
20 ajm 1.3 * @version $Id: SwingClient.java,v 1.2 2001/01/14 22:37:24 ajm4 Exp $
21 ajm 1.1 */
22     public class SwingClient extends JFrame implements Runnable {
23    
24     //---FINAL ATTRIBUTES---
25    
26     /**
27     * The current CVS revision of this class
28     */
29 ajm 1.3 public final String REVISION = "$Revision: 1.2 $";
30 ajm 1.1
31     private final int width = 300;
32     private final int height = 700;
33    
34     //---STATIC METHODS---
35    
36     public static void main(String[] args) {
37     try {
38     String host = args[0];
39     int port = 4510;
40     Socket socket = new Socket(host, port);
41     BufferedReader inBound = new BufferedReader(new InputStreamReader(socket.getInputStream()));
42     PrintWriter outBound = new PrintWriter(socket.getOutputStream());
43     DataReader data = new DataReader(inBound);
44    
45     SwingClient cli = new SwingClient(data);
46     Thread cliThread = new Thread(cli);
47     cliThread.start();
48     } catch (Exception e) {
49     System.err.println("ERROR: " + e);
50     }
51     }
52    
53     //---CONSTRUCTORS---
54    
55     /**
56     * Creates a new Swing Client.
57     */
58     public SwingClient(DataReader data) {
59     _data = data;
60     // set up the Frame
61     setTitle("I-Scream Client");
62     setSize(width, height);
63     setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
64     Box box = Box.createVerticalBox();
65    
66     // create the i-scream logo at the top
67     JLabel iscream = new JLabel(new ImageIcon("i-scream.gif"));
68     JLabel comment = new JLabel(" I-Scream Client");
69     comment.setForeground( new Color(0, 0, 102));
70     Box header = Box.createHorizontalBox();
71     header.add(comment);
72     header.add(Box.createHorizontalGlue());
73     header.add(iscream);
74    
75     ImageIcon icon = new ImageIcon("server.gif");
76     JTabbedPane tabbedPane = new JTabbedPane();
77     JPanel mainPanel = new JPanel();
78     mainPanel.setLayout(new GridLayout(21, 1));
79    
80     JPanel panel1 = makeTextPanel("Machine Name : ", _machine_name);
81     JPanel panel2 = makeTextPanel("IP : ", _ip);
82     JPanel panel3 = makeTextPanel("Date : ", _date);
83     JPanel panel4 = makeTextPanel("Sequence Number : ", _seq_no);
84 ajm 1.2 JPanel panel5 = makeTextPanel("Host Time : ", _sTime);
85 ajm 1.1 JPanel panel6 = makeTextPanel("Load Average (1 min) : ", _load_load1);
86     JPanel panel7 = makeTextPanel("Load Average (5 min) : ", _load_load5);
87     JPanel panel8 = makeTextPanel("Load Average (15 min) : ", _load_load15);
88     JPanel panel9 = makeTextPanel("Processes Total : ", _processes_total);
89     JPanel panel10 = makeTextPanel("Processes Sleeping : ", _processes_sleeping);
90     JPanel panel11 = makeTextPanel("Processes Zombie : ", _processes_zombie);
91     JPanel panel12 = makeTextPanel("Processes Stopped : ", _processes_stopped);
92     JPanel panel13 = makeTextPanel("CPU % idle : ", _cpu_idle);
93     JPanel panel14 = makeTextPanel("CPU % user : ", _cpu_user);
94     JPanel panel15 = makeTextPanel("CPU % kernel : ", _cpu_kernel);
95     JPanel panel16 = makeTextPanel("CPU % i/o wait : ", _cpu_iowait);
96     JPanel panel17 = makeTextPanel("CPU % swapping : ", _cpu_swap);
97     JPanel panel18 = makeTextPanel("Real Memory : ", _memory_real);
98     JPanel panel19 = makeTextPanel("Real Free : ", _memory_free);
99     JPanel panel20 = makeTextPanel("Swap in use : ", _memory_swapinuse);
100     JPanel panel21 = makeTextPanel("Swap free : ", _memory_swapfree);
101     mainPanel.add(panel1);
102     mainPanel.add(panel2);
103     mainPanel.add(panel3);
104     mainPanel.add(panel4);
105     mainPanel.add(panel5);
106     mainPanel.add(panel6);
107     mainPanel.add(panel7);
108     mainPanel.add(panel8);
109     mainPanel.add(panel9);
110     mainPanel.add(panel10);
111     mainPanel.add(panel11);
112     mainPanel.add(panel12);
113     mainPanel.add(panel13);
114     mainPanel.add(panel14);
115     mainPanel.add(panel15);
116     mainPanel.add(panel16);
117     mainPanel.add(panel17);
118     mainPanel.add(panel18);
119     mainPanel.add(panel19);
120     mainPanel.add(panel20);
121     mainPanel.add(panel21);
122    
123     tabbedPane.addTab("Raptor", icon, mainPanel, "Monitor raptor.ukc.ac.uk");
124    
125     tabbedPane.setSelectedIndex(0);
126    
127     // build the frame
128     box.add(header);
129     box.add(tabbedPane);
130     getContentPane().add(box);
131    
132     // show the window
133     show();
134     }
135    
136     //---PUBLIC METHODS---
137    
138     public void run() {
139 ajm 1.3 try {
140 ajm 1.1 _data.start();
141     while(true) {
142 ajm 1.3 synchronized (_data) {
143     _data.wait();
144     }
145 ajm 1.1 String xml = _data.getXML();
146     if (xml == null) {
147     // nothing
148     } else {
149    
150     // Get a string without any null characters in it.
151     // -- maybe String.trim() would be better here ?
152     if (xml.indexOf(0) != -1) {
153     xml = xml.substring(0, xml.indexOf(0));
154     }
155     else {
156     xml = xml.substring(0, xml.length());
157     }
158    
159     // Use XMLPacketMaker to make an XMLPacket object.
160     XMLPacketMaker xmlPacketMaker = new XMLPacketMaker(xml);
161     XMLPacket packet = xmlPacketMaker.createXMLPacket();
162    
163     _machine_name.setText(packet.getParam("packet.attributes.machine_name"));
164     _ip.setText(packet.getParam("packet.attributes.ip"));
165 ajm 1.2 _date.setText(DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM).format(new Date(Long.parseLong(packet.getParam("packet.attributes.date")))));
166 ajm 1.1 _seq_no.setText(packet.getParam("packet.attributes.seq_no"));
167    
168     _sTime.setText(packet.getParam("packet.sTime"));
169    
170     _load_load1.setText(packet.getParam("packet.load.load1"));
171     _load_load5.setText(packet.getParam("packet.load.load5"));
172     _load_load15.setText(packet.getParam("packet.load.load15"));
173    
174     _processes_total.setText(packet.getParam("packet.processes.total"));
175     _processes_sleeping.setText(packet.getParam("packet.processes.sleeping"));
176     _processes_zombie.setText(packet.getParam("packet.processes.zombie"));
177     _processes_stopped.setText(packet.getParam("packet.processes.stopped"));
178    
179 ajm 1.2 _cpu_idle.setString(packet.getParam("packet.cpu.idle") + "%");
180     _cpu_idle.setValue(new Double(packet.getParam("packet.cpu.idle")).intValue());
181     _cpu_user.setString(packet.getParam("packet.cpu.user") + "%");
182     _cpu_user.setValue(new Double(packet.getParam("packet.cpu.user")).intValue());
183     _cpu_kernel.setString(packet.getParam("packet.cpu.kernel") + "%");
184     _cpu_kernel.setValue(new Double(packet.getParam("packet.cpu.kernel")).intValue());
185     _cpu_iowait.setString(packet.getParam("packet.cpu.iowait") + "%");
186     _cpu_iowait.setValue(new Double(packet.getParam("packet.cpu.iowait")).intValue());
187     _cpu_swap.setString(packet.getParam("packet.cpu.swap") + "%");
188     _cpu_swap.setValue(new Double(packet.getParam("packet.cpu.swap")).intValue());
189 ajm 1.1
190     _memory_real.setText(packet.getParam("packet.memory.real"));
191     _memory_free.setText(packet.getParam("packet.memory.free"));
192     _memory_swapinuse.setText(packet.getParam("packet.memory.swapinuse"));
193     _memory_swapfree.setText(packet.getParam("packet.memory.swapfree"));
194     }
195 ajm 1.3 }
196     } catch (Exception e) {
197     System.err.println("ERROR: " + e);
198 ajm 1.1 }
199     }
200    
201     //---PRIVATE METHODS---
202    
203 ajm 1.2 protected JPanel makeTextPanel(String text, Component item) {
204 ajm 1.1 JPanel panel = new JPanel(false);
205     JLabel label = new JLabel(text);
206     label.setHorizontalAlignment(JLabel.RIGHT);
207 ajm 1.2 //item.setHorizontalAlignment(JLabel.LEFT);
208 ajm 1.1 panel.setLayout(new GridLayout(1, 2));
209     panel.add(label);
210     panel.add(item);
211     return panel;
212     }
213    
214    
215     //---ACCESSOR/MUTATOR METHODS---
216    
217     //---ATTRIBUTES---
218    
219     JLabel _machine_name = new JLabel();
220     JLabel _ip = new JLabel();
221     JLabel _date = new JLabel();
222     JLabel _seq_no = new JLabel();
223    
224     JLabel _sTime = new JLabel();
225    
226     JLabel _load_load1 = new JLabel();
227     JLabel _load_load5 = new JLabel();
228     JLabel _load_load15 = new JLabel();
229    
230     JLabel _processes_total = new JLabel();
231     JLabel _processes_sleeping = new JLabel();
232     JLabel _processes_zombie = new JLabel();
233     JLabel _processes_stopped = new JLabel();
234    
235 ajm 1.2 int min = 0;
236     int max = 100;
237     JProgressBar _cpu_idle = new JProgressBar(JProgressBar.HORIZONTAL, min, max);
238     {
239     _cpu_idle.setStringPainted(true);
240     }
241     JProgressBar _cpu_user = new JProgressBar(JProgressBar.HORIZONTAL, min, max);
242     {
243     _cpu_user.setStringPainted(true);
244     }
245     JProgressBar _cpu_kernel = new JProgressBar(JProgressBar.HORIZONTAL, min, max);
246     {
247     _cpu_kernel.setStringPainted(true);
248     }
249     JProgressBar _cpu_iowait = new JProgressBar(JProgressBar.HORIZONTAL, min, max);
250     {
251     _cpu_iowait.setStringPainted(true);
252     }
253     JProgressBar _cpu_swap = new JProgressBar(JProgressBar.HORIZONTAL, min, max);
254     {
255     _cpu_swap.setStringPainted(true);
256     }
257 ajm 1.1
258     JLabel _memory_real = new JLabel();
259     JLabel _memory_free = new JLabel();
260     JLabel _memory_swapinuse = new JLabel();
261     JLabel _memory_swapfree = new JLabel();
262     DataReader _data;
263    
264     //---STATIC ATTRIBUTES---
265    
266     }