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

src.com.ibm.as400.util.servlet.ListMetaData Maven / Gradle / Ivy

The newest version!
///////////////////////////////////////////////////////////////////////////////
//                                                                             
// JTOpen (IBM Toolbox for Java - OSS version)                              
//                                                                             
// Filename: ListMetaData.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.util.html.HTMLConstants;

import java.beans.PropertyChangeSupport;
import java.beans.PropertyChangeListener;
import java.beans.PropertyVetoException;
import java.beans.VetoableChangeSupport;
import java.beans.VetoableChangeListener;
import java.io.Serializable;

/**
*  A ListMetaData object can be used to find out information about the columns of a
*  ListRowData object.
*
*  

ListMetaData objects generate the following events: *

    *
  • PropertyChangeEvent
  • *
  • VetoableChangeEvent
  • *
**/ public class ListMetaData implements RowMetaData, Serializable { static final long serialVersionUID = -230291530342866669L; // metadata values. private int columnCount_ = 0; // The number of columns. private String[] columnName_; // The array of column names. private String[] columnLabel_; // The array of column labels. private int[] columnType_; // The array of column types. private int[] columnSize_; // The array of column sizes. private String[] columnAlignment_; // The array of column alignments. @D5A private String[] columnDirection_; // The array of column alignments. @D5A transient private PropertyChangeSupport changes_; //@CRS transient private VetoableChangeSupport vetos_; //@CRS /** * Constructs a default ListMetaData object. **/ public ListMetaData() { } /** * Constructs a ListMetaData object with the specified number of columns. * @param columns The number of columns. **/ public ListMetaData(int columns) { this(); try { setColumns(columns); } catch (PropertyVetoException e) { /* This will never happen. */ } } /** * Adds a PropertyChangeListener. The specified PropertyChangeListener's propertyChange * method is called each time the value of any bound property is changed. * @see #removePropertyChangeListener * @param listener The PropertyChangeListener. **/ public void addPropertyChangeListener(PropertyChangeListener listener) { if (listener == null) throw new NullPointerException("listener"); if (changes_ == null) changes_ = new PropertyChangeSupport(this); //@CRS changes_.addPropertyChangeListener(listener); } /** * Adds the VetoableChangeListener. The specified VetoableChangeListener's vetoableChange * method is called each time the value of any constrained property is changed. * @see #removeVetoableChangeListener * @param listener The VetoableChangeListener. **/ public void addVetoableChangeListener(VetoableChangeListener listener) { if (listener == null) throw new NullPointerException("listener"); if (vetos_ == null) vetos_ = new VetoableChangeSupport(this); //@CRS vetos_.addVetoableChangeListener(listener); } /** * Returns the number of columns. * @return The column count. **/ public int getColumnCount() { return columnCount_; } /** * 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); return columnSize_[columnIndex]; } /** * 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); return columnLabel_[columnIndex]; } /** * 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); return columnName_[columnIndex]; } /** * 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); return columnType_[columnIndex]; } /** * 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 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); if (columnType_[columnIndex] != 0) return RowMetaDataType.getDataTypeName(columnType_[columnIndex]); else return null; } /** * 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) // @A1 { 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)); } /** * Deserializes and initializes transient data. **/ private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException { in.defaultReadObject(); //@CRS changes_ = new PropertyChangeSupport(this); //@CRS vetos_ = new VetoableChangeSupport(this); } /** * Removes the PropertyChangeListener from the internal list. * If the PropertyChangeListener is not on the list, nothing is done. * @see #addPropertyChangeListener * @param listener The PropertyChangeListener. **/ public void removePropertyChangeListener(PropertyChangeListener listener) { if (listener == null) throw new NullPointerException("listener"); if (changes_ != null) changes_.removePropertyChangeListener(listener); //@CRS } /** * Removes the VetoableChangeListener from the internal list. * If the VetoableChangeListener is not on the list, nothing is done. * @see #addVetoableChangeListener * @param listener The VetoableChangeListener. **/ public void removeVetoableChangeListener(VetoableChangeListener listener) { if (listener == null) throw new NullPointerException("listener"); if (vetos_ != null) vetos_.removeVetoableChangeListener(listener); //@CRS } /** * 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 { validateColumnIndex(columnIndex); // If align is not one of the valid HTMLConstants, throw an exception. if (alignment == null) throw new NullPointerException("alignment"); else 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); 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 { 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); columnDirection_[columnIndex] = dir; } /** * Sets the specified displaySize for the column specified by columnIndex. * @param columnIndex The column index (0-based). * @param displaySize The column display size in characters. **/ public void setColumnDisplaySize(int columnIndex, int displaySize) { // Validate the column parameter. validateColumnIndex(columnIndex); // Validate the displaySize parameter. if (displaySize < 1) throw new ExtendedIllegalArgumentException("displaySize", ExtendedIllegalArgumentException.RANGE_NOT_VALID); columnSize_[columnIndex] = displaySize; } /** * 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"); columnLabel_[columnIndex] = label; } /** * Sets the specified name for the column specified by columnIndex. * @param columnIndex The column index (0-based). * @param name The column name. **/ public void setColumnName(int columnIndex, String name) { // Validate the column parameter. validateColumnIndex(columnIndex); // Validate the name parameter. if (name == null) throw new NullPointerException("name"); columnName_[columnIndex] = name; // Set the column label as well. if (columnLabel_[columnIndex] == null) { columnLabel_[columnIndex] = name; } } /** * Sets the number of columns. Any previous column information is cleared. * @param columns The number of columns. * @exception PropertyVetoException If a change is vetoed. **/ public void setColumns(int columns) throws PropertyVetoException { if (columns <= 0) throw new ExtendedIllegalArgumentException("columns", ExtendedIllegalArgumentException.RANGE_NOT_VALID); //@CRS Integer oldInt = new Integer(columnCount_); //@CRS Integer newInt = new Integer(columns); int oldInt = columnCount_; //@CRS if (vetos_ != null) vetos_.fireVetoableChange("columns", new Integer(oldInt), new Integer(columns)); //@CRS columnCount_ = columns; columnName_ = new String[columnCount_]; columnLabel_ = new String[columnCount_]; columnType_ = new int[columnCount_]; columnSize_ = new int[columnCount_]; columnAlignment_ = new String[columnCount_]; //@D5A columnDirection_ = new String[columnCount_]; //@D4A if (changes_ != null) changes_.firePropertyChange("columns", new Integer(oldInt), new Integer(columns)); //@CRS } /** * Sets the specified data type for the column specified by columnIndex. * @param columnIndex The column index (0-based). * @param type The RowMetaDataType type. * @see com.ibm.as400.util.servlet.RowMetaDataType **/ public void setColumnType(int columnIndex, int type) { // Validate the column parameter. validateColumnIndex(columnIndex); // Validate the type parameter. if (RowMetaDataType.isDataTypeValid(type)) columnType_[columnIndex] = type; else throw new ExtendedIllegalArgumentException("type", ExtendedIllegalArgumentException.PARAMETER_VALUE_NOT_VALID); } /** * Validates the column index. * @param columnIndex The column index (0-based). **/ private void validateColumnIndex(int columnIndex) { if ( columnIndex < 0 || columnIndex >= columnCount_ ) throw new ExtendedIllegalArgumentException("columnIndex", ExtendedIllegalArgumentException.RANGE_NOT_VALID); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy