com.ibm.as400.vaccess.VSystemStatus Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jt400 Show documentation
Show all versions of jt400 Show documentation
The Open Source version of the IBM Toolbox for Java
The newest version!
///////////////////////////////////////////////////////////////////////////////
//
// JTOpen (IBM Toolbox for Java - OSS version)
//
// Filename: VSystemStatus.java
//
// The source code contained herein is licensed under the IBM Public License
// Version 1.0, which has been approved by the Open Source Initiative.
// Copyright (C) 1997-2000 International Business Machines Corporation and
// others. All rights reserved.
//
///////////////////////////////////////////////////////////////////////////////
package com.ibm.as400.vaccess;
import com.ibm.as400.access.AS400;
import com.ibm.as400.access.SystemPool;
import com.ibm.as400.access.SystemStatus;
import com.ibm.as400.access.Trace;
import com.ibm.as400.access.AS400Exception;
import com.ibm.as400.access.AS400SecurityException;
import com.ibm.as400.access.ConnectionDroppedException;
import com.ibm.as400.access.ErrorCompletingRequestException;
import com.ibm.as400.access.ObjectDoesNotExistException;
import javax.swing.Icon;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableColumnModel;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
import javax.swing.tree.TreeNode;
import java.beans.PropertyChangeListener;
import java.beans.VetoableChangeListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyVetoException;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.Enumeration;
/**
* The VSystemStatus class defines the representation of system status on a
* system for use in various models and panes in this package.
* The method load() must be explicitly called to load the information from
* the system.
* Most errors are reported as ErrorEvents rather than throwing exceptions.
* Users should listen for ErrorEvents in order to diagnose and recover
* from error conditions.
*
*
VSystemStatus objects generate the following events:
*
* - ErrorEvent
*
- PropertyChangeEvent
*
- VObjectEvent
*
- WorkingEvent
*
@deprecated Use Java Swing instead, along with the classes in package com.ibm.as400.access
**/
public class VSystemStatus implements VNode, Serializable //@B0C
{
private static final String copyright = "Copyright (C) 1997-2000 International Business Machines Corporation and others.";
// Static data.
private static TableColumnModel detailsColumnModel_ = null;
// MRI.
private static String description_ =
ResourceLoader.getText ("SYSTEM_STATUS_SYSTEM_STATUS");
private static final Icon icon16_ =
ResourceLoader.getIcon ("VSystemStatus16.gif", description_);
private static final Icon icon32_ =
ResourceLoader.getIcon ("VSystemStatus32.gif", description_);
private static String nameColumnHeader_ =
ResourceLoader.getText ("SYSTEM_POOL_POOL_NAME");
private static String descriptionColumnHeader_ =
ResourceLoader.getText ("SYSTEM_POOL_POOL_DESCRIPTION");
private static String identifierColumnHeader_ =
ResourceLoader.getText ("SYSTEM_POOL_IDENTIFIER");
private static String poolSizeColumnHeader_ =
ResourceLoader.getText ("SYSTEM_POOL_POOL_SIZE");
private static String reservedSizeColumnHeader_ =
ResourceLoader.getText ("SYSTEM_POOL_RESERVED_SIZE");
// MRI - bottom.
private SystemStatus systemStatus_ = null;
private VNode parent_ = null;
private boolean allowModifyAllPools_ = false;
transient private VObject[] detailsChildren_;
transient private Enumeration enum_;
transient private int loaded_;
transient private VPropertiesPane propertiesPane_;
// Event support.
transient private ErrorEventSupport errorEventSupport_;
transient private PropertyChangeSupport propertyChangeSupport_;
transient private VetoableChangeSupport vetoableChangeSupport_;
transient private VObjectEventSupport objectEventSupport_;
transient private WorkingEventSupport workingEventSupport_;
// Static initializer.
static
{
// The column widths are completely arbitrary.
detailsColumnModel_= null;
detailsColumnModel_= new DefaultTableColumnModel();
int i= 0;
VTableColumn vTable1= new VTableColumn(i++, VSystemPool.IDENTIFIER_PROPERTY);
vTable1.setCellRenderer(((TableCellRenderer)new VObjectCellRenderer()));
vTable1.setHeaderRenderer(((TableCellRenderer)new VObjectHeaderRenderer()));
vTable1.setHeaderValue(identifierColumnHeader_);
vTable1.setPreferredCharWidth(5);
detailsColumnModel_.addColumn(((TableColumn)vTable1));
VTableColumn vTable2= new VTableColumn(i++, VSystemPool.POOL_SIZE_PROPERTY);
vTable2.setCellRenderer(((TableCellRenderer)new VObjectCellRenderer()));
vTable2.setHeaderRenderer(((TableCellRenderer)new VObjectHeaderRenderer()));
vTable2.setHeaderValue(poolSizeColumnHeader_);
vTable2.setPreferredCharWidth(8);
detailsColumnModel_.addColumn(((TableColumn)vTable2));
VTableColumn vTable3= new VTableColumn(i++, VSystemPool.RESERVED_SIZE_PROPERTY);
vTable3.setCellRenderer(((TableCellRenderer)new VObjectCellRenderer()));
vTable3.setHeaderRenderer(((TableCellRenderer)new VObjectHeaderRenderer()));
vTable3.setHeaderValue(reservedSizeColumnHeader_);
vTable3.setPreferredCharWidth(8);
detailsColumnModel_.addColumn(((TableColumn)vTable3));
VTableColumn vTable4= new VTableColumn(i++, NAME_PROPERTY);
vTable4.setCellRenderer(((TableCellRenderer)new VObjectCellRenderer()));
vTable4.setHeaderRenderer(((TableCellRenderer)new VObjectHeaderRenderer()));
vTable4.setHeaderValue(nameColumnHeader_);
vTable4.setPreferredCharWidth(10);
detailsColumnModel_.addColumn(((TableColumn)vTable4));
VTableColumn vTable5= new VTableColumn(i++, DESCRIPTION_PROPERTY);
vTable5.setCellRenderer(((TableCellRenderer)new VObjectCellRenderer()));
vTable5.setHeaderRenderer(((TableCellRenderer)new VObjectHeaderRenderer()));
vTable5.setHeaderValue(descriptionColumnHeader_);
vTable5.setPreferredCharWidth(50);
detailsColumnModel_.addColumn(((TableColumn)vTable5));
}
/**
* Constructs a VSystemStatus object.
* @exception AS400Exception If the system returns an error
message.
* @exception AS400SecurityException If a security or authority error
occurs.
* @exception ConnectionDroppedException If the connection is dropped
unexpectedly.
* @exception ErrorCompletingRequestException If an error occurs before
the request is completed.
* @exception InterruptedException If this thread is interrupted.
* @exception IOException If an error occurs while communicating with
the system.
* @exception ObjectDoesNotExistException If the system object does not
exist.
* @exception PropertyVetoException If the change is vetoed.
* @exception UnsupportedEncodingException If the character encoding is
not supported.
**/
public VSystemStatus()
throws AS400Exception,
AS400SecurityException,
ConnectionDroppedException,
ErrorCompletingRequestException,
InterruptedException,
ObjectDoesNotExistException,
IOException,
UnsupportedEncodingException,
PropertyVetoException
{
systemStatus_ = new SystemStatus ();
initializeTransient ();
}
/**
* Constructs a VSystemStatus object.
*
* @param system The system in which the system status information
* resides.
* @exception AS400Exception If the system returns an error
message.
* @exception AS400SecurityException If a security or authority error
occurs.
* @exception ConnectionDroppedException If the connection is dropped
unexpectedly.
* @exception ErrorCompletingRequestException If an error occurs before
the request is completed.
* @exception InterruptedException If this thread is interrupted.
* @exception IOException If an error occurs while communicating with
the system.
* @exception ObjectDoesNotExistException If the system object does not
exist.
* @exception PropertyVetoException If the change is vetoed.
* @exception UnsupportedEncodingException If the character encoding is
not supported.
**/
public VSystemStatus (AS400 system)
throws AS400Exception,
AS400SecurityException,
ConnectionDroppedException,
ErrorCompletingRequestException,
InterruptedException,
ObjectDoesNotExistException,
IOException,
UnsupportedEncodingException,
PropertyVetoException
{
if (system == null)
throw new NullPointerException ("system");
systemStatus_ = new SystemStatus (system);
initializeTransient ();
}
/**
* Constructs a VSystemStatus object.
*
* @param systemStatus The underlying system status object.
* @exception AS400Exception If the system returns an error
message.
* @exception AS400SecurityException If a security or authority error
occurs.
* @exception ConnectionDroppedException If the connection is dropped
unexpectedly.
* @exception ErrorCompletingRequestException If an error occurs before
the request is completed.
* @exception InterruptedException If this thread is interrupted.
* @exception IOException If an error occurs while communicating with
the system.
* @exception ObjectDoesNotExistException If the system object does not
exist.
* @exception PropertyVetoException If the change is vetoed.
* @exception UnsupportedEncodingException If the character encoding is
not supported.
**/
public VSystemStatus(SystemStatus systemStatus)
throws AS400Exception,
AS400SecurityException,
ConnectionDroppedException,
ErrorCompletingRequestException,
InterruptedException,
ObjectDoesNotExistException,
IOException,
UnsupportedEncodingException,
PropertyVetoException
{
systemStatus_ = systemStatus;
initializeTransient();
}
/**
* Constructs a VSystemStatus object.
*
* @param parent The parent.
* @param system The system from which the user will be retrieved.
* @exception AS400Exception If the system returns an error
message.
* @exception AS400SecurityException If a security or authority error
occurs.
* @exception ConnectionDroppedException If the connection is dropped
unexpectedly.
* @exception ErrorCompletingRequestException If an error occurs before
the request is completed.
* @exception InterruptedException If this thread is interrupted.
* @exception IOException If an error occurs while communicating with
the system.
* @exception ObjectDoesNotExistException If the system object does not
exist.
* @exception PropertyVetoException If the change is vetoed.
* @exception UnsupportedEncodingException If the character encoding is
not supported.
**/
public VSystemStatus (VNode parent, AS400 system)
throws AS400Exception,
AS400SecurityException,
ConnectionDroppedException,
ErrorCompletingRequestException,
InterruptedException,
ObjectDoesNotExistException,
IOException,
UnsupportedEncodingException,
PropertyVetoException
{
if (parent == null)
throw new NullPointerException ("parent");
if (system == null)
throw new NullPointerException ("system");
parent_ = parent;
systemStatus_ = new SystemStatus (system);
initializeTransient ();
}
/**
* Adds a listener to be notified when an error occurs.
*
* @param listener The listener.
**/
public void addErrorListener (ErrorListener listener)
{
if (listener == null) //@B0A
throw new NullPointerException("listener"); //@B0A
errorEventSupport_.addErrorListener (listener);
}
/**
* Adds a listener to be notified when the value of any
* bound property changes.
*
* @param listener The listener.
**/
public void addPropertyChangeListener (PropertyChangeListener listener)
{
if (listener == null) //@B0A
throw new NullPointerException("listener"); //@B0A
propertyChangeSupport_.addPropertyChangeListener (listener);
}
/**
* Adds a listener to be notified when the value of any
* constrained property changes.
*
* @param listener The listener.
**/
public void addVetoableChangeListener (VetoableChangeListener listener)
{
if (listener == null) //@B0A
throw new NullPointerException("listener"); //@B0A
vetoableChangeSupport_.addVetoableChangeListener (listener);
}
/**
* Adds a listener to be notified when a VObject is changed,
* created, or deleted.
*
* @param listener The listener.
**/
public void addVObjectListener (VObjectListener listener)
{
if (listener == null) //@B0A
throw new NullPointerException("listener"); //@B0A
objectEventSupport_.addVObjectListener (listener);
}
/**
* Adds a listener to be notified when work starts and stops
* on potentially long-running operations.
*
* @param listener The listener.
**/
public void addWorkingListener (WorkingListener listener)
{
workingEventSupport_.addWorkingListener (listener);
}
/**
* Returns the children of the node.
*
* @return The children.
**/
public Enumeration children ()
{
return new VEnumeration (this);
}
/**
* Returns the list of actions that can be performed.
*
* @return Always null. There are no actions.
**/
public VAction[] getActions ()
{
return null;
}
/**
* Indicates if the node allows children.
*
* @return Always false.
**/
public boolean getAllowsChildren ()
{
return false;
}
/**
* Returns the child node at the specified index.
*
* @param index The index.
* @return Always null.
**/
public TreeNode getChildAt (int index)
{
return null;
}
/**
* Returns the number of children.
*
* @return Always 0.
**/
public /*@B0D synchronized */ int getChildCount ()
{
return 0;
}
/**
* Returns the default action.
*
* @return Always null. There is no default action.
**/
public VAction getDefaultAction ()
{
return null;
}
/**
* Returns the child for the details at the specified index.
*
* @param index The index.
* @return The child, or null if the index is not valid.
**/
public VObject getDetailsChildAt (int index)
{
if ((index < 0) || (index >= detailsChildren_.length))
return null;
loadMore (index);
return detailsChildren_[index];
}
/**
* Returns the number of children for the details.
*
* @return The number of children for the details.
**/
public /*@B0D synchronized */ int getDetailsChildCount ()
{
return detailsChildren_.length;
}
/**
* Returns the table column model to use in the details when
* representing the children.
* This column model describes the details values for the children.
*
* @return The details column model.
**/
public TableColumnModel getDetailsColumnModel ()
{
return detailsColumnModel_;
}
/**
* Returns the index of the specified child for the details.
*
* @param detailsChild The details child.
* @return The index, or -1 if the child is not found
* in the details.
**/
public /*@B0D synchronized */ int getDetailsIndex (VObject detailsChild)
{
for (int i = 0; i < loaded_; ++i)
if (detailsChildren_[i] == detailsChild)
return i;
return -1;
}
/**
* Returns the icon.
*
* @param size The icon size, either 16 or 32. If any other
* value is given, then return a default.
* @param open This parameter has no effect.
* @return The icon.
**/
public Icon getIcon (int size, boolean open)
{
if (size == 32)
return icon32_;
else
return icon16_;
}
/**
* Returns the index of the specified child.
*
* @param child The child.
* @return Always -1.
**/
public /*@B0D synchronized */ int getIndex (TreeNode child)
{
return -1;
}
/**
* Returns the parent node.
*
* @return The parent node, or null if there is no parent.
**/
public TreeNode getParent ()
{
return parent_;
}
/**
* Returns the properties pane.
*
* @return The properties pane.
**/
public VPropertiesPane getPropertiesPane ()
{
return propertiesPane_;
}
/**
* Returns a property value.
*
* @param object The property identifier.
* @return The property value, or null if the
* property identifier is not recognized.
**/
public Object getPropertyValue(Object object)
{
return null;
}
/**
* Returns the system in which the system status information resides.
*
* @return The system in which the system status information resides.
*
* @see com.ibm.as400.access.SystemStatus#getSystem
**/
public AS400 getSystem ()
{
return systemStatus_.getSystem ();
}
/**
* Returns the description text.
*
* @return The description text.
**/
public String getText ()
{
return description_;
}
/**
* Initializes the transient data.
**/
private synchronized void initializeTransient ()
{
// Initialize the event support.
errorEventSupport_ = new ErrorEventSupport (this);
objectEventSupport_ = new VObjectEventSupport (this);
propertyChangeSupport_ = new PropertyChangeSupport (this);
vetoableChangeSupport_ = new VetoableChangeSupport (this);
workingEventSupport_ = new WorkingEventSupport (this);
systemStatus_.addPropertyChangeListener (propertyChangeSupport_); //@B0C
systemStatus_.addVetoableChangeListener (vetoableChangeSupport_);
// Initialize the private data.
detailsChildren_ = new VObject[0];
enum_ = null;
loaded_ = -1;
}
/**
* Return true if the modify action to all system pools is allowed, otherwise false.
*
* @return True if the modify action to all system pools is allowed, otherwise false.
**/
public boolean isAllowModifyAllPools()
{
return allowModifyAllPools_;
}
/**
* Indicates if the node is a leaf.
*
* @return Always true.
**/
public boolean isLeaf ()
{
return true;
}
/**
* Indicates if the details children are sortable.
*
* @return Always false.
**/
public boolean isSortable ()
{
return false;
}
/**
* Loads information about the object from the system.
**/
public void load ()
{
if (Trace.isTraceOn() && Trace.isTraceInformationOn()) //@B0C
Trace.log(Trace.INFORMATION, "VSystemStatus: loading"); //@B0C
workingEventSupport_.fireStartWorking ();
Exception error = null;
synchronized (this) {
// Stop listening to the previous children.
for (int i = 0; i < loaded_; ++i)
{
detailsChildren_[i].removeErrorListener (errorEventSupport_);
detailsChildren_[i].removeVObjectListener (objectEventSupport_);
detailsChildren_[i].removeWorkingListener (workingEventSupport_);
}
// Refresh the children based on the user list.
loaded_ = 0;
try
{
systemStatus_.refreshCache(); //@B0A //@B0C - 06/17/1999
enum_ = systemStatus_.getSystemPools();
detailsChildren_ = new VSystemPool[systemStatus_.getPoolsNumber()];
}
catch (Exception e)
{
error = e;
detailsChildren_ = new VSystemPool[0];
}
}
if (error != null)
errorEventSupport_.fireError (error);
workingEventSupport_.fireStopWorking ();
}
/**
* Loads more messages from the enumeration, if needed.
*
* @param index The index needed.
**/
private void loadMore (int index)
{
if (index >= loaded_)
{
workingEventSupport_.fireStartWorking ();
Exception error = null;
synchronized (this) {
for (int i = loaded_; i <= index; ++i)
{
SystemPool systemPool = (SystemPool) enum_.nextElement ();
VSystemPool vSystemPool = new VSystemPool (systemPool);
vSystemPool.setAllowModify(allowModifyAllPools_);
detailsChildren_[i] = vSystemPool;
detailsChildren_[i].addErrorListener (errorEventSupport_);
detailsChildren_[i].addVObjectListener (objectEventSupport_);
detailsChildren_[i].addWorkingListener (workingEventSupport_);
}
}
loaded_ = index + 1;
if (error != null)
errorEventSupport_.fireError (error);
workingEventSupport_.fireStopWorking ();
}
}
/**
* Restores the state of the object from an input stream.
* This is used when deserializing an object.
*
* @param in The input stream.
**/
private void readObject (ObjectInputStream in)
throws IOException, ClassNotFoundException
{
in.defaultReadObject ();
initializeTransient ();
}
/**
* Removes an error listener.
*
* @param listener The listener.
**/
public void removeErrorListener (ErrorListener listener)
{
if (listener == null) //@B0A
throw new NullPointerException("listener"); //@B0A
errorEventSupport_.removeErrorListener (listener);
}
/**
* Removes a property change listener.
*
* @param listener The listener.
**/
public void removePropertyChangeListener (PropertyChangeListener listener)
{
if (listener == null) //@B0A
throw new NullPointerException("listener"); //@B0A
propertyChangeSupport_.removePropertyChangeListener (listener);
}
/**
* Removes a vetoable change listener.
*
* @param listener The listener.
**/
public void removeVetoableChangeListener(VetoableChangeListener listener)
{
if (listener == null) //@B0A
throw new NullPointerException("listener"); //@B0A
vetoableChangeSupport_.removeVetoableChangeListener (listener);
}
/**
* Removes a VObjectListener.
*
* @param listener The listener.
**/
public void removeVObjectListener (VObjectListener listener)
{
if (listener == null) //@B0A
throw new NullPointerException("listener"); //@B0A
objectEventSupport_.removeVObjectListener (listener);
}
/**
* Removes a working listener.
*
* @param listener The listener.
**/
public void removeWorkingListener (WorkingListener listener)
{
workingEventSupport_.removeWorkingListener (listener);
}
/**
* Sets the system in which the system status information resides.
*
* @see com.ibm.as400.access.SystemStatus#setSystem
* @param system The system in which the system status information
* resides.
* @exception PropertyVetoException If the change is vetoed.
**/
public void setSystem (AS400 system)
throws PropertyVetoException //@B0C
{
systemStatus_.setSystem (system);
}
/**
* Set the state of modify action of all the pools.
*
* @param allow The boolean value.
**/
public void setAllowModifyAllPools(boolean allow)
{
allowModifyAllPools_ = allow;
}
/**
* Sorts the children for the details. Since sorting is not supported,
this method does nothing.
*
* @param propertyIdentifiers The property identifiers.
* @param orders The sort orders for each property identifier:
* true for ascending order; false for descending order.
**/
public void sortDetailsChildren (
Object[] propertyIdentifiers, boolean[] orders)
{
// No sorting here!
}
/**
* Returns the string representation of the description.
*
* @return The string representation of the description.
**/
public String toString ()
{
return description_;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy