src.com.ibm.as400.util.servlet.ResourceListMetaData Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jt400-jdk8 Show documentation
Show all versions of jt400-jdk8 Show documentation
The Open Source version of the IBM Toolbox for Java
///////////////////////////////////////////////////////////////////////////////
//
// JTOpen (IBM Toolbox for Java - OSS version)
//
// Filename: ResourceListMetaData.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.util.html.HTMLConstants;
import com.ibm.as400.access.ExtendedIllegalArgumentException;
import com.ibm.as400.access.Trace;
import com.ibm.as400.resource.ResourceList;
import com.ibm.as400.resource.ResourceMetaData;
import com.ibm.as400.resource.ResourceException;
import com.ibm.as400.resource.Presentation;
class ResourceListMetaData implements RowMetaData, java.io.Serializable
{
static final long serialVersionUID = 773517785366319026L;
private ResourceList resourceList_; // The resource list.
private Object[] columnAttributeIDs_; // The column attributes.
private String[] columnLabel_; // The array of column labels.
private String[] columnAlignment_; // The array of column alignments. @D5A
private String[] columnDirection_; // The array of column alignments. @D5A
/**
* Constructs a default ResourceListMetaData object.
**/
public ResourceListMetaData()
{
super();
}
/**
* Constructs a ResourceListMetaData object with the specified resourceList and columnAttributeIDs.
* @param resourceList The resource list.
* @param columnAttributeIDs The array of column attribute IDs.
* @see com.ibm.as400.resource.ResourceList
**/
public ResourceListMetaData(ResourceList resourceList, Object[] columnAttributeIDs)
{
this();
setResourceList(resourceList);
setColumnAttributeIDs(columnAttributeIDs);
columnAlignment_ = new String[ getColumnCount() ];
columnDirection_ = new String[ getColumnCount() ];
}
/**
* Returns the alignment of the column specified by columnIndex.
* @param columnIndex The column index (0-based).
* @return The horizontal column alignment. One of the following constants
* defined in HTMLConstants: LEFT, CENTER, RIGHT, or JUSTIFY.
* @see com.ibm.as400.util.html.HTMLConstants
**/
public String getColumnAlignment(int columnIndex) //@D5A
{
// Validate the column parameter.
validateColumnIndex(columnIndex);
return columnAlignment_[columnIndex];
}
/**
* Returns the direction of the column specified by columnIndex.
* @param columnIndex The column index (0-based).
* @return The column direction.
* @see com.ibm.as400.util.html.HTMLConstants
**/
public String getColumnDirection(int columnIndex) //@D5A
{
// Validate the column parameter.
validateColumnIndex(columnIndex);
return columnDirection_[columnIndex];
}
/**
* Returns the number of columns.
* @return The column count.
**/
public int getColumnCount()
{
return columnAttributeIDs_.length;
}
/**
* Returns the display size in characters of the column specified by columnIndex.
* @param columnIndex The column index (0-based).
* @return The column display size in characters.
**/
public int getColumnDisplaySize(int columnIndex)
{
// Validate the column parameter.
validateColumnIndex(columnIndex);
if (columnAttributeIDs_[columnIndex] == null)
return 20;
else
{
int dataWidth = 20;
ResourceMetaData attributeMetaData = resourceList_.getAttributeMetaData(columnAttributeIDs_[columnIndex]);
Class type = attributeMetaData.getType();
Presentation[] possibleValuePresentations = attributeMetaData.getPossibleValuePresentations();
// If it is a numeric value, use 10.
if (Number.class.isAssignableFrom(type))
dataWidth = 10;
// If it has possible values, use the width of the longest.
else if (possibleValuePresentations.length > 0)
{
dataWidth = 1;
for(int i = 0; i < possibleValuePresentations.length; ++i)
{
int nameLength = possibleValuePresentations[i].getName().toString().length();
if (nameLength > dataWidth)
dataWidth = nameLength;
}
}
// Make sure its big enough to show the header.
int nameLength = attributeMetaData.getPresentation().getName().toString().length();
if (nameLength > dataWidth)
dataWidth = nameLength;
return dataWidth;
}
}
/**
* Returns the label of the column specified by columnIndex.
* @param columnIndex The column index (0-based).
* @return The column label.
**/
public String getColumnLabel(int columnIndex)
{
// Validate the column parameter.
validateColumnIndex(columnIndex);
if (columnLabel_ != null && columnLabel_[columnIndex] != null)
{
return columnLabel_[columnIndex];
}
else
{
if (columnAttributeIDs_[columnIndex] == null)
{
// ResourceBundleLoader_s loader = new ResourceBundleLoader_s();
return ResourceBundleLoader_s.getText("PROP_NAME_RL_NAME");
}
else
return resourceList_.getAttributeMetaData(columnAttributeIDs_[columnIndex]).getPresentation().getFullName();
}
}
/**
* Returns the name of the column specified by columnIndex.
* @param columnIndex The column index (0-based).
* @return The column name.
**/
public String getColumnName(int columnIndex)
{
// Validate the column parameter.
validateColumnIndex(columnIndex);
if (columnAttributeIDs_[columnIndex] != null)
return resourceList_.getAttributeMetaData(columnAttributeIDs_[columnIndex]).getPresentation().getName();
else
{
// ResourceBundleLoader_s loader = new ResourceBundleLoader_s();
return ResourceBundleLoader_s.getText("PROP_NAME_RL_NAME");
}
}
/**
* Returns the data type of the column specified by columnIndex.
* @param columnIndex The column index (0-based).
* @return The column RowMetaDataType.
* @see com.ibm.as400.util.servlet.RowMetaDataType
**/
public int getColumnType(int columnIndex)
{
// Validate the column parameter.
validateColumnIndex(columnIndex);
if (columnAttributeIDs_[columnIndex] == null)
return RowMetaDataType.STRING_DATA_TYPE;
Class type = resourceList_.getAttributeMetaData(columnAttributeIDs_[columnIndex]).getType();
if (type == byte[].class)
return RowMetaDataType.BYTE_ARRAY_DATA_TYPE;
else if (type == java.math.BigDecimal.class)
return RowMetaDataType.BIG_DECIMAL_DATA_TYPE;
else if ((type == Double.class) || (type == Double.TYPE))
return RowMetaDataType.DOUBLE_DATA_TYPE;
else if ((type == Float.class) || (type == Float.TYPE))
return RowMetaDataType.FLOAT_DATA_TYPE;
else if ((type == Integer.class) || (type == Integer.TYPE))
return RowMetaDataType.INTEGER_DATA_TYPE;
else if ((type == Long.class) || (type == Long.TYPE))
return RowMetaDataType.LONG_DATA_TYPE;
else if ((type == Short.class) || (type == Short.TYPE))
return RowMetaDataType.SHORT_DATA_TYPE;
else
return RowMetaDataType.STRING_DATA_TYPE;
}
/**
* Returns the data type name of the column specified by columnIndex.
* @param columnIndex The column index (0-based).
* @return The column data type name.
**/
public String getColumnTypeName(int columnIndex)
{
// Validate the column parameter.
validateColumnIndex(columnIndex);
return RowMetaDataType.getDataTypeName(getColumnType(columnIndex));
}
/**
* Returns the precision of the column specified by columnIndex.
* This value is not used. It will always return zero.
* @param columnIndex The column index (0-based).
* @return The column precision (number of decimal digits).
**/
public int getPrecision(int columnIndex)
{
// Validate the column parameter.
validateColumnIndex(columnIndex);
return 0;
}
/**
* Returns the scale of the column specified by columnIndex.
* This value is not used. It will always return zero.
* @param columnIndex The column index (0-based).
* @return The column scale (number of digits to the right of the decimal point).
**/
public int getScale(int columnIndex)
{
// Validate the column parameter.
validateColumnIndex(columnIndex);
return 0;
}
/**
* Indicates if the data type is numeric data.
* @param columnIndex The column index (0-based).
* @return true if numeric data; false otherwise.
**/
public boolean isNumericData(int columnIndex)
{
return RowMetaDataType.isNumericData(getColumnType(columnIndex));
}
/**
* Indicates if the data type is text data.
* @param columnIndex The column index (0-based).
* @return true if text data; false otherwise.
**/
public boolean isTextData(int columnIndex)
{
return RowMetaDataType.isTextData(getColumnType(columnIndex));
}
/**
* Sets the column attribute IDs.
* @param columnAttributeIDs The array of column attribute IDs.
**/
public void setColumnAttributeIDs(Object[] columnAttributeIDs)
{
if (Trace.isTraceOn())
Trace.log(Trace.INFORMATION, "Setting the column attribute IDs.");
columnAttributeIDs_ = columnAttributeIDs;
}
/**
* Sets the specified horizontal alignment for the column data specified by columnIndex.
* @param columnIndex The column index (0-based).
* @param alignment The horizontal column alignment. One of the following constants
* defined in HTMLConstants: LEFT, CENTER, RIGHT, or JUSTIFY.
* @see com.ibm.as400.util.html.HTMLConstants
**/
public void setColumnAlignment(int columnIndex, String alignment) //@D5A
{
// Validate the label parameter.
if (alignment == null)
throw new NullPointerException("alignment");
validateColumnIndex(columnIndex);
// If align is not one of the valid HTMLConstants, throw an exception.
if ( !(alignment.equals(HTMLConstants.LEFT)) && !(alignment.equals(HTMLConstants.RIGHT)) && !(alignment.equals(HTMLConstants.CENTER)) && !(alignment.equals(HTMLConstants.JUSTIFY)) )
throw new ExtendedIllegalArgumentException("alignment", ExtendedIllegalArgumentException.PARAMETER_VALUE_NOT_VALID);
if (columnAlignment_ == null)
columnAlignment_ = new String[getColumnCount()];
columnAlignment_[columnIndex] = alignment;
}
/**
* Sets the specified direction for the column data specified by columnIndex.
* @param columnIndex The column index (0-based).
* @param dir The column direction.
* @see com.ibm.as400.util.html.HTMLConstants
**/
public void setColumnDirection(int columnIndex, String dir) //@D5A
{
// Validate the label parameter.
if (dir == null)
throw new NullPointerException("dir");
validateColumnIndex(columnIndex);
// If direction is not one of the valid HTMLConstants, throw an exception.
if ( !(dir.equals(HTMLConstants.LTR)) && !(dir.equals(HTMLConstants.RTL)) )
throw new ExtendedIllegalArgumentException("dir", ExtendedIllegalArgumentException.PARAMETER_VALUE_NOT_VALID);
if (columnDirection_ == null)
columnDirection_ = new String[getColumnCount()];
columnDirection_[columnIndex] = dir;
}
/**
* Sets the specified label for the column specified by columnIndex.
* @param columnIndex The column index (0-based).
* @param label The column label.
**/
public void setColumnLabel(int columnIndex, String label)
{
// Validate the column parameter.
validateColumnIndex(columnIndex);
// Validate the label parameter.
if (label == null)
throw new NullPointerException("label");
if (columnLabel_ == null)
columnLabel_ = new String[getColumnCount()];
columnLabel_[columnIndex] = label;
}
/**
* 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 meta resource list.");
resourceList_ = resourceList;
}
/**
* Validates the column index.
* @param columnIndex The column index (0-based).
**/
private void validateColumnIndex(int columnIndex)
{
if ( columnIndex < 0 || columnIndex >= columnAttributeIDs_.length )
throw new ExtendedIllegalArgumentException("columnIndex", ExtendedIllegalArgumentException.RANGE_NOT_VALID);
}
}