All Downloads are FREE. Search and download functionalities are using the official Maven repository.

src.com.ibm.as400.vaccess.VSystemStatus Maven / Gradle / Ivy

There is a newer version: 20.0.7
Show 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 - 2024 Weber Informatics LLC | Privacy Policy