src.com.ibm.as400.access.HexFieldDescription 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 (AS/400 Toolbox for Java - OSS version)
//
// Filename: HexFieldDescription.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.access;
import java.io.Serializable;
import java.util.Vector;
/**
*The HexFieldDescription class represents the description of the data in a hexadecimal field.
*It allows:
*
*- The user to describe a hexadecimal field to the RecordFormat object.
*
- The RecordFormat object to describe a hexadecimal field to the user.
*
*Click hereto see an example.
**/
public class HexFieldDescription extends FieldDescription implements VariableLengthFieldDescription, Serializable
{
private static final String copyright = "Copyright (C) 1997-2000 International Business Machines Corporation and others.";
static final long serialVersionUID = 4L;
// Value specified for the VARLEN keyword
private int variableLength_;
// Is the field a variable length field
private boolean isVariableLength_;
/**
*Constructs a HexFieldDescription object.
**/
public HexFieldDescription()
{
}
/**
*Constructs a HexFieldDescription object. It uses the specified data type
*and name of the field.
*The length of the field will be the length specified on the AS400ByteArray object.
*@param dataType Describes the field and provides
* the conversion capability for the contents of the field.
*@param name The name of the field.
**/
public HexFieldDescription(AS400ByteArray dataType, String name)
{
super(dataType, name);
}
/**
*Constructs a HexFieldDescription object. It uses the specified data type,
*name, and DDS name of the field.
*The length of the field will be the length specified on the AS400ByteArray object.
*@param dataType Describes the field and provides
* the conversion capability for the contents of the field.
*@param name The name of the field.
*@param ddsName The DDS name of this field. This is the
* name of the field as it would appear in a DDS description of the
* field. The length of ddsName must be 10 characters or less.
**/
public HexFieldDescription(AS400ByteArray dataType, String name, String ddsName)
{
super(dataType, name, ddsName);
}
/**
*Returns the DDS description for the field. This is a string containing
*the description of the field as it would be specified in a DDS source file.
*This method is used by AS400File.createDDSSourceFile to specify the field
*in the DDS source file which is used to create the file for the user who
*has passed in a RecordFormat object.
*@return The DDS description of this field properly formatted for entry
*into a DDS source file.
**/
String[] getDDSDescription()
{
Vector v = new Vector();
// Name columns (10)
StringBuffer desc = new StringBuffer(ddsName_);
// Blank pad the ddsName to 10 characters.
while(desc.length() < 10)
{
desc.append(" ");
}
// Reference column (1)
if (!refFld_.equals(""))
{
desc.append("R");
}
else
{
desc.append(" ");
}
// Get length as 5 digit string, right justified
/* StringBuffer len = new StringBuffer(new Integer(length_).toString());
if (len.length() < 5)
{
int blanksNeeded = 5 - len.length();
for (short i = 0; i < blanksNeeded; ++i)
{
len.insert(0, " ");
}
}
*/
String len = String.valueOf(length_);
int numSpaces = 5-len.length();
for (int i=0; i 0)
{
v.addElement("VARLEN(" + new Integer(variableLength_).toString() + ") ");
}
else
{
v.addElement("VARLEN ");
}
}
//@B0A
if (defaultValue_ != null)
{
v.addElement("DFT('" + new String((byte[])defaultValue_) + "') ");
}
else if (isDFTNull_)
{
v.addElement("DFT(*NULL) ");
}
String[] s = new String[v.size()];
v.copyInto(s);
return s;
}
/**
*Returns the value specified for the VARLEN keyword for this field.
*@return The value specified for VARLEN for this field. If VARLEN was not
* specified for this field, 0 is returned.
**/
public int getVARLEN()
{
return variableLength_;
}
/**
*Indicates if the field is a variable-length field.
*@return true if the field is a variable-length field; false otherwise.
**/
public boolean isVariableLength()
{
return isVariableLength_;
}
/**
*Sets the AS400DataType object describing this field.
*@param dataType The AS400DataType that describes this field. The dataType
*cannot be null.
**/
public void setDataType(AS400ByteArray dataType)
{
// Verify parameters
if (dataType == null)
{
throw new NullPointerException("dataType");
}
dataType_ = dataType;
// Set the length of the field based on the data type
length_ = dataType.getByteLength();
}
//@B0C - javadoc
/**
*Sets the value for the DFT keyword for this field.
*@param defaultValue The default value for this
* field. The length of defaultValue
* must be greater than zero.
*To set a default value of *NULL, use the setDFTNull() method.
**/
public void setDFT(byte[] defaultValue)
{
if (defaultValue == null)
{
throw new NullPointerException("defaultValue");
}
if (defaultValue.length < 1)
{
throw new ExtendedIllegalArgumentException("defaultValue (" + String.valueOf(defaultValue) + ")", ExtendedIllegalArgumentException.LENGTH_NOT_VALID);
}
defaultValue_ = defaultValue;
isDFTNull_ = false; //@B0A
isDFTCurrent_ = false; //@B0A
DFTCurrentValue_ = null; //@B0A
}
//@B0A
/**
*Sets the value for the DFT keyword to be *NULL for this field.
*Calling this method will replace the DFT keyword that was previously
*set on a call to setDFT(). Note: This field
*must also have its ALWNULL keyword set to true to prevent DDS errors.
**/
public void setDFTNull()
{
isDFTNull_ = true;
defaultValue_ = null;
isDFTCurrent_ = false;
DFTCurrentValue_ = null;
}
/**
*Indicates that the field is a variable-length field.
*@param value true if the field is a variable-length field; false otherwise.
**/
public void setVariableLength(boolean value)
{
isVariableLength_ = value;
}
/**
*Sets the value to specify for the VARLEN keyword for this field.
*@param varLen The value to specify for the VARLEN keyword for this field.
*The varLen cannot be less than zero.
**/
public void setVARLEN(int varLen)
{
if (varLen < 0)
{
throw new ExtendedIllegalArgumentException("varLen (" + String.valueOf(varLen) + ")", ExtendedIllegalArgumentException.PARAMETER_VALUE_NOT_VALID);
}
variableLength_ = varLen;
isVariableLength_ = true;
}
}