ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/conient/uk/org/iscream/cms/conient/datacomponents/StorageDataComponent.java
Revision: 1.4
Committed: Tue May 29 17:41:32 2001 UTC (22 years, 11 months ago) by tdb
Branch: MAIN
Changes since 1.3: +4 -4 lines
Log Message:
The last of the central monitoring system packages to be changed to the newer
structure. It has changed from;

uk.org.iscream.conient.*

to;

uk.org.iscream.cms.conient.*

This is in keeping with the new style of packaging.

File Contents

# User Rev Content
1 ajm 1.1 //---PACKAGE DECLARATION---
2 tdb 1.4 package uk.org.iscream.cms.conient.datacomponents;
3 ajm 1.1
4     //---IMPORTS---
5     import javax.swing.JLabel;
6     import java.awt.GridLayout;
7     import javax.swing.JProgressBar;
8     import javax.swing.SwingUtilities;
9 tdb 1.4 import uk.org.iscream.cms.server.util.XMLPacket;
10 ajm 1.1
11     /**
12     * This is DataComponent specifically for
13     * displaying storage, eg memory, disk and swap.
14     * It displays a value/total type display using a JProgessBar.
15     *
16     * @author $Author: ajm4 $
17 tdb 1.4 * @version $Id: StorageDataComponent.java,v 1.3 2001/03/19 01:38:16 ajm4 Exp $
18 ajm 1.1 */
19     public class StorageDataComponent extends VisibleDataComponent {
20    
21     //---FINAL ATTRIBUTES---
22    
23     /**
24     * The current CVS revision of this class
25     */
26 tdb 1.4 public final String REVISION = "$Revision: 1.3 $";
27 ajm 1.1
28     //---STATIC METHODS---
29    
30     //---CONSTRUCTORS---
31    
32     /**
33     * Creates the component with a friendly name to be
34     * used as label
35     *
36     * @param name the friendly name
37     * @param attribute the data attribute we look after
38     * @param maxAttribute the data attribute to obtain the maximum value from
39     * @param unit the string representation of the units eg, "Mb" or "Kb"
40     */
41     public StorageDataComponent(String name, String attribute, String maxAttribute, String unit) {
42     this(name, attribute, maxAttribute, unit, 1);
43     }
44    
45     /**
46     * Creates the component with a friendly name to be
47     * used as label
48     *
49     * @param name the friendly name
50     * @param attribute the data attribute we look after
51     * @param maxAttribute the data attribute to obtain the maximum value from
52     * @param unit the string representation of the units eg, "Mb" or "Kb"
53     * @param divider the amount that the given value should be multiplied by to reach the given units
54     */
55     public StorageDataComponent(String name, String attribute, String maxAttribute, String unit, int divider) {
56     _name = name;
57     _attribute = attribute;
58     _unit = unit;
59     _divider = divider;
60     _maxAttribute = maxAttribute;
61     _label = new JLabel(name + ": ");
62     _label.setHorizontalAlignment(JLabel.RIGHT);
63     setLayout(new GridLayout(1, 2));
64     _item.setString("-uninitialised-");
65     add(_label);
66     add(_item);
67 ajm 1.2 setVisible(false);
68 ajm 1.1 }
69    
70     //---PUBLIC METHODS---
71    
72     /**
73     * This run method updates any Swing components
74     * The setValue() method adds this component
75     * to the Swing Event Dispatching Queue to
76     * run this method.
77     */
78     public void run() {
79 ajm 1.2 if(!isVisible()) {
80     setVisible(true);
81     }
82 ajm 1.1 int max = new Double(_maxvalue).intValue();
83     _item.setMaximum(max);
84     int value = new Double(_value).intValue();
85     _item.setValue(max - value);
86     _item.setString((max - value) + _unit + "/" + max + _unit + " (" + new Double(_item.getPercentComplete() * 100).intValue() + "%)");
87     }
88    
89     /**
90     * Overrides the {@link java.lang.Object#toString() Object.toString()}
91     * method to provide clean logging (every class should have this).
92     *
93     * @return the name of this class and its CVS revision
94     */
95     public String toString() {
96     return _name + "(" + _attribute + ")";
97     }
98    
99     //---PRIVATE METHODS---
100    
101     //---ACCESSOR/MUTATOR METHODS---
102    
103     /**
104     * This takes the packet to obtain the value from, it then performs all
105     * approriate conversions and adds this class to the Swing Event
106     * Dispatching queue.
107     *
108     * @param packet the XMLPacket to get the data from
109     * @throws DataFormatException if there was a problem converting the data for display
110     */
111     public void setValue(XMLPacket packet) throws DataFormatException {
112     String value = packet.getParam(_attribute);
113     String maxvalue = packet.getParam(_maxAttribute);
114     try {
115 ajm 1.3 if((!maxvalue.equals("0")) && (!_cache.equals(value) || !_maxcache.equals(maxvalue))) {
116 ajm 1.1 _cache = value;
117     _maxcache = maxvalue;
118     _value = Double.parseDouble(_cache) / _divider;
119     _maxvalue = Double.parseDouble(_maxcache) / _divider;
120     SwingUtilities.invokeLater(this);
121     }
122     } catch (Exception e) {
123     throw new DataFormatException(value + " is an invalid data type for " + toString());
124     }
125     }
126    
127     /**
128     * Returns the string showing the packet
129     * attribute that the component is looking after
130     *
131     * @return the packet reference
132     */
133     public String getPacketAttribute() {
134     return _attribute;
135     }
136    
137     //---ATTRIBUTES---
138    
139     /**
140     * The friendly name of this component
141     */
142     protected String _name;
143    
144     /**
145     * The attribute that this component is concerned with
146     */
147     protected String _attribute;
148    
149     /**
150     * The max attribute that this component is concerned with
151     */
152     protected String _maxAttribute;
153    
154     /**
155     * The string representation of the units the values
156     * are being measured in.
157     */
158     protected String _unit;
159    
160     /**
161     * The divider to multiply the value to
162     * to reach the units.
163     */
164     protected int _divider;
165    
166     /**
167     * Remebers what the last value was, so we
168     * only update if we have to.
169     */
170     protected String _cache = "";
171    
172     /**
173     * Remebers what the last value was, so we
174     * only update if we have to.
175     */
176     protected String _maxcache = "";
177    
178     /**
179     * Holds the integer value we are holding
180     */
181     protected double _value = 0;
182    
183     /**
184     * Holds the integer value we are holding
185     */
186     protected double _maxvalue = 0;
187    
188     /**
189     * The minimum value for the percentage
190     */
191     protected final int _min = 0;
192    
193     /**
194     * The maximum value for the percentage
195     */
196     protected int _max = 0;
197    
198     /**
199     * The friendly label for this component
200     */
201     protected JLabel _label;
202    
203     /**
204     * The progress bar that we will display memory
205     * usage data in
206     */
207     protected JProgressBar _item = new JProgressBar(JProgressBar.HORIZONTAL, _min, _max);
208     {
209     _item.setStringPainted(true);
210     }
211    
212     //---STATIC ATTRIBUTES---
213    
214     }