src.com.ibm.as400.util.servlet.ResourceListRowData Maven / Gradle / Ivy
Show all versions of jt400-jdk8 Show documentation
///////////////////////////////////////////////////////////////////////////////
//
// JTOpen (IBM Toolbox for Java - OSS version)
//
// Filename: ResourceListRowData.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.util.servlet;
import com.ibm.as400.access.ExtendedIllegalArgumentException;
import com.ibm.as400.access.ExtendedIllegalStateException;
import com.ibm.as400.access.Trace;
import com.ibm.as400.resource.Resource;
import com.ibm.as400.resource.ResourceList;
import com.ibm.as400.resource.ResourceException;
import com.ibm.as400.resource.ResourceMetaData;
import java.beans.PropertyVetoException;
import java.beans.PropertyChangeSupport;
import java.util.Vector;
/**
* The ResourceListRowData class represents a resource list of data.
* The list of data is formatted into a series of rows where each row
* contains a finite number of columns determined by the number of column
* attribute ID's. Each column within a row contains an individual data item.
*
*
A ResourceListRowData object can represent any implementation of the
* {@link com.ibm.as400.resource.ResourceList ResourceList} interface. The row data
* columns are specified as an array of column attribute IDs. The row data will contain a column
* for each element of the array. The following can be specified as column attribute IDs:
*
*
* - null - The name from each Resource's Presentation object are presented in the column.
*
*
- Resource attribute IDs - These are defined by the Resource objects that make up the rows data.
* The corresponding attribute value is presented in the column.
*
* A ResourceListRowData object maintains a position in the resource list
* that points to its current row of data. The initial position in the list
* is set before the first row. The next method moves to the next row in the list.
*
*
The getObject method is used to retrieve the column value for
* the current row indexed by the column number. Columns are numbered
* starting from 0.
*
*
The following example creates a ResourceListRowData object using an RUserList:
*
* // Create an object to represent the system.
* AS400 mySystem = new AS400("mySystem.myCompany.com");
*
* // Create a resource user list.
* RUserList userList = new RUserList(sys);
*
* // Set the selection so that all user profiles
* // are included in the list.
* userList.setSelectionValue(RUserList.SELECTION_CRITERIA, RUserList.ALL);
*
* // Create an HTMLTableConverter object.
* HTMLTableConverter converter = new HTMLTableConverter();
*
* // Set up the table tag with a maximum of 20 rows per table.
* converter.setMaximumTableSize(20);
*
* // Create an HTMLTable and use the meta data for the table headers.
* HTMLTable table = new HTMLTable();
* table.setCellSpacing(6);
* table.setBorderWidth(8);
* converter.setTable(table);
* converter.setUseMetaData(true);
*
* // Create a ResourceListRowData.
* ResourceListRowData rowdata = new ResourceListRowData(userList, new Object[] { null, RUser.TEXT_DESCRIPTION } );
*
* // Convert the ResourceListRowData into an HTMLTable.
* String[] html = converter.convert(rowdata);
*
* // Print out the first table of 20 users from the html array.
* System.out.println(html[0]);
*
*
*/
public class ResourceListRowData extends RowData implements java.io.Serializable
{
static final long serialVersionUID = 1081925300369525536L;
private ResourceListMetaData metadata_; // The metadata.
private ResourceList resourceList_; // The resource list.
private Object[] columnAttributeIDs_; // The column attributes.
private Exception lastException_; // Keeps track of exceptions.
private boolean refreshed_;
/**
* Constructs a default ResourceListRowData object.
**/
public ResourceListRowData()
{
super();
setColumnAttributeIDs(new Object[] {});
}
/**
* Constructs a ResourceListRowData object with the specified resourceList and
* columnAttributeIDs.
*
* @param resourceList The resource list.
* @param columnAttributeIDs The array of column attributes.
* @see com.ibm.as400.resource.ResourceList
**/
public ResourceListRowData(ResourceList resourceList, Object[] columnAttributeIDs)
{
this();
setMetaData(resourceList, columnAttributeIDs);
setResourceList(resourceList);
setColumnAttributeIDs(columnAttributeIDs);
}
/**
* Returns the array of column attribute IDs.
* @return The column attribute IDs.
**/
public Object[] getColumnAttributeIDs()
{
return columnAttributeIDs_;
}
/**
* Return the resource list length.
* @return The list length.
**/
int getListLength()
{
try
{
if (resourceList_ == null)
return 0;
if (!refreshed_)
{
resourceList_.refreshStatus();
refreshed_ = true;
}
return (int)resourceList_.getListLength();
}
catch(ResourceException e)
{
Trace.log(Trace.ERROR, "Error getting resource length.", e);
lastException_ = e;
return 0;
}
}
/**
* Returns the metadata.
* @return The metadata.
**/
public RowMetaData getMetaData()
{
return metadata_;
}
/**
* Returns the current row's column data specified at columnIndex.
*
* @param columnIndex The column index (0-based).
* @return The column object.
* @exception RowDataException If a row data error occurs.
**/
public Object getObject(int columnIndex) throws RowDataException
{
try
{
if (lastException_ != null)
throw new RowDataException(lastException_);
// Validate that there are column attribute IDs.
if (columnAttributeIDs_ == null)
throw new NullPointerException("columnAttributeIDs");
if (columnAttributeIDs_.length == 0)
{
Trace.log(Trace.ERROR, "Attempting to get the column object before setting the column attribute IDs.");
throw new ExtendedIllegalStateException("columnAttributeIDs", ExtendedIllegalStateException.PROPERTY_NOT_SET);
}
// Validate that the list is not empty.
validateRowList("Attempting to get the column object");
// Get the current row.
validateListPosition("Attempting to get the current object");
// Validate the column parameter.
if ( columnIndex < 0 || columnIndex >= columnAttributeIDs_.length )
throw new ExtendedIllegalArgumentException("columnIndex", ExtendedIllegalArgumentException.RANGE_NOT_VALID);
resourceList_.open();
if (!resourceList_.isResourceAvailable(columnIndex)) //$A2C
resourceList_.waitForResource(columnIndex); //$A2C
// If the user specifies a null value in the columnAttributeIDs array, display the resource name.
if ( columnAttributeIDs_[columnIndex] == null)
return resourceList_.resourceAt(position_).getPresentation().getName();
else
{
ResourceMetaData meta = resourceList_.getAttributeMetaData(columnAttributeIDs_[columnIndex]); //$A1A
Object attributeValue = resourceList_.resourceAt(position_).getAttributeValue(columnAttributeIDs_[columnIndex]); //$A1A
// This will allow us to use the MRI attribute values. //$A1A
if (meta.getPossibleValuePresentation(attributeValue) != null) //$A1A
return meta.getPossibleValuePresentation(attributeValue).getName(); //$A1A
else //$A1A
return attributeValue; //$A1C
}
}
catch(ResourceException e)
{
throw new RowDataException(e);
}
}
/**
* Returns the data object's property list at the specified columnIndex.
*
* @param columnIndex The column index (0-based).
* @return The property list for the column data object.
* @see com.ibm.as400.util.servlet.RowData#setObjectProperties
**/
public Vector getObjectProperties(int columnIndex)
{
// Validate that the list is not empty.
validateRowList("Attempting to get the column object's properties");
// Get the current row.
validateListPosition("Attempting to get the current object's properties");
// Validate the columnIndex parameter.
if ( columnIndex < 0 || columnIndex >= columnAttributeIDs_.length )
throw new ExtendedIllegalArgumentException("columnIndex", ExtendedIllegalArgumentException.RANGE_NOT_VALID);
return new Vector();
}
/**
* Return the resource list.
* @return The resource list.
**/
public ResourceList getResourceList()
{
return resourceList_;
}
/**
* Returns the number of rows in the resource list.
*
* @return The number of rows.
**/
public int length()
{
return getListLength();
}
/**
* Sets the resource list column attribute IDs.
*
* @param columnAttributeIDs The column attribute IDs.
**/
public void setColumnAttributeIDs(Object[] columnAttributeIDs)
{
if (Trace.isTraceOn())
Trace.log(Trace.INFORMATION, "Setting the column attribute IDs.");
if (columnAttributeIDs == null)
throw new NullPointerException("columnAttributeIDs");
Object[] old = columnAttributeIDs_;
columnAttributeIDs_ = columnAttributeIDs;
if (changes_ != null) changes_.firePropertyChange("columnAttributeIDs", old, columnAttributeIDs); //@CRS
if (metadata_ == null)
metadata_ = new ResourceListMetaData();
metadata_.setColumnAttributeIDs(columnAttributeIDs);
}
/**
* Sets the metadata.
* @param resourceList The resource list.
* @param columnAttributeIDs The column attributes.
**/
void setMetaData(ResourceList resourceList, Object[] columnAttributeIDs)
{
// Validate the metadata parameter.
if (resourceList == null)
throw new NullPointerException("resourceList");
if (columnAttributeIDs == null)
throw new NullPointerException("columnAttributeIDs");
if (columnAttributeIDs.length == 0)
throw new ExtendedIllegalArgumentException("columnAttributeIDs", ExtendedIllegalArgumentException.RANGE_NOT_VALID);
ResourceListMetaData old = metadata_;
metadata_ = new ResourceListMetaData(resourceList, columnAttributeIDs);
if (changes_ != null) changes_.firePropertyChange("metadata", old, metadata_); //@CRS
}
/**
* Sets the resource list.
*
* @param resourceList The resource list.
* @see com.ibm.as400.resource.ResourceList
**/
public void setResourceList(ResourceList resourceList)
{
if (Trace.isTraceOn())
Trace.log(Trace.INFORMATION, "Setting the resource list.");
if (resourceList == null)
throw new NullPointerException("resourceList");
ResourceList old = resourceList_;
resourceList_ = resourceList;
if (changes_ != null) changes_.firePropertyChange("resourceList", old, resourceList); //@CRS
if (metadata_ == null)
metadata_ = new ResourceListMetaData();
metadata_.setResourceList(resourceList);
}
}