src.com.ibm.as400.access.FloatFieldDescription 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: FloatFieldDescription.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;
/**
*Represents the description of the data in a float field.
*It allows:
*
*- The user to describe a float field to the RecordFormat object.
*
- The RecordFormat object to describe a float field to the user.
*
*Click hereto see an example.
**/
public class FloatFieldDescription extends FieldDescription implements Serializable
{
static final long serialVersionUID = 4L;
// Number of decimal positions for this field
private int decimalPositions_;
// Value specified for the FLTPCN keyword
private String floatPrecision_ = "";
/**
*Constructs a FloatFieldDescription object.
**/
public FloatFieldDescription()
{
}
/**
*Constructs a FloatFieldDescription object. It uses the specified
*data type and name of the field.
*@param dataType Describes the field and provides
* the conversion capability for the contents of the field.
*@param name The name of the field.
**/
public FloatFieldDescription(AS400Float8 dataType, String name)
{
// We pass 9 for the length in case this field will be used for DDS. We pass 9
// because if the length is greater than 9, then keyword FLTPCN must be specified
// with a value of *DOUBLE. The user should have called the appropriate constructor
// if that is what they wished.
super(dataType, name);
length_ = 9;
}
/**
*Constructs a FloatFieldDescription object. It uses the specified
*data type, name, DDS name, and length of the field.
*@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.
*@param length The number of digits that the field will hold. This is the length of
* the field as it would appear in a DDS description. The length
* must be greater than zero.
**/
public FloatFieldDescription(AS400Float8 dataType, String name, String ddsName, int length)
{
super(dataType, name, ddsName);
if (length < 1)
{
throw new ExtendedIllegalArgumentException("length", ExtendedIllegalArgumentException.PARAMETER_VALUE_NOT_VALID);
}
length_ = length;
}
/**
*Constructs a FloatFieldDescription object. It uses the specified data type,
*name, DDS name, length and decimal positions of the field.
*@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.
*@param length The number of digits that the field will hold. This is the length of
* the field as it would appear in a DDS description. The length
* must be greater than zero.
*@param decimalPositions The number of digits to the right of the decimal point.
* The decimalPositions cannot be negative.
**/
public FloatFieldDescription(AS400Float8 dataType, String name, String ddsName, int length,
int decimalPositions)
{
super(dataType, name, ddsName);
if (length < 1)
{
throw new ExtendedIllegalArgumentException("length", ExtendedIllegalArgumentException.PARAMETER_VALUE_NOT_VALID);
}
if (decimalPositions < 0)
{
throw new ExtendedIllegalArgumentException("decimalPositions", ExtendedIllegalArgumentException.PARAMETER_VALUE_NOT_VALID);
}
length_ = length;
decimalPositions_ = decimalPositions;
}
/**
*Constructs a FloatFieldDescription object. It uses the specified
*data type and name of the field.
*@param dataType Describes the field and provides
* the conversion capability for the contents of the field.
*@param name The name of the field.
**/
public FloatFieldDescription(AS400Float4 dataType, String name)
{
// We pass 9 for the length in case this field will be used for DDS. We pass 9
// because if the length is greater than 9, then keyword FLTPCN must be specified
// with a value of *DOUBLE. The user should have called the appropriate constructor
// if that is what they wished.
super(dataType, name);
length_ = 9;
}
/**
*Constructs a FloatFieldDescription object. It uses the specified data type, name,
*DDS name, and length of the field.
*@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.
*@param length The number of digits that the field will hold. This is the length of
* the field as it would appear in a DDS description. The length
* must be greater than zero.
**/
public FloatFieldDescription(AS400Float4 dataType, String name, String ddsName, int length)
{
super(dataType, name, ddsName);
if (length < 1)
{
throw new ExtendedIllegalArgumentException("length", ExtendedIllegalArgumentException.PARAMETER_VALUE_NOT_VALID);
}
length_ = length;
}
/**
*Constructs a FloatFieldDescription object. It uses the specified data type, name,
*DDS name, length and decimal positions of the field.
*@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.
*@param length The number of digits that the field will hold. This is the length of
* the field as it would appear in a DDS description. The length must be
* greater than zero.
*@param decimalPositions The number of digits to the right of the decimal point. The
*decimalPositions cannot be negative.
**/
public FloatFieldDescription(AS400Float4 dataType, String name, String ddsName, int length,
int decimalPositions)
{
super(dataType, name, ddsName);
if (length < 1)
{
throw new ExtendedIllegalArgumentException("length", ExtendedIllegalArgumentException.PARAMETER_VALUE_NOT_VALID);
}
if (decimalPositions < 0)
{
throw new ExtendedIllegalArgumentException("decimalPositions", ExtendedIllegalArgumentException.PARAMETER_VALUE_NOT_VALID);
}
length_ = length;
decimalPositions_ = decimalPositions;
}
/**
*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; idataType
*cannot be null.
**/
public void setDataType(AS400Float4 dataType)
{
// Verify parameters
if (dataType == null)
{
throw new NullPointerException("dataType");
}
dataType_ = dataType;
// Set the length of the field based on the data type
length_ = 9; // 9 is the maximum number of digits for a single precision number in DDS
}
/**
*Sets the AS400DataType object describing this field.
*@param dataType The AS400DataType that describes this field. The dataType
*cannot be null.
**/
public void setDataType(AS400Float8 dataType)
{
// Verify parameters
if (dataType == null)
{
throw new NullPointerException("dataType");
}
dataType_ = dataType;
// Set the length of the field based on the data type
length_ = 17; // 17 is the maximum number of digits for a double precision number in DDS
}
/**
*Sets the number of digits after the decimal point for this field.
*@param decimalPositions The number of digits after the decimal point.
*The decimalPositions cannot be less than zero.
**/
public void setDecimalPositions(int decimalPositions)
{
if (decimalPositions < 0)
{
throw new ExtendedIllegalArgumentException("decimalPositions (" + String.valueOf(decimalPositions) + ")", ExtendedIllegalArgumentException.PARAMETER_VALUE_NOT_VALID);
}
decimalPositions_ = decimalPositions;
}
/**
*Sets the value for the FLTPCN keyword for this field.
*@param floatPrecision The value to set for the FLTPCN keyword for
* this field. Possible values are *SINGLE or *DOUBLE.
*The floatPrecision cannot be null.
**/
public void setFLTPCN(String floatPrecision)
{
if (floatPrecision == null)
{
throw new NullPointerException("floatPrecision");
}
if (!(floatPrecision.equalsIgnoreCase("*SINGLE") || floatPrecision.equalsIgnoreCase("*DOUBLE")))
{
throw new ExtendedIllegalArgumentException("floatPrecision (" + floatPrecision + ")", ExtendedIllegalArgumentException.PARAMETER_VALUE_NOT_VALID);
}
floatPrecision_ = floatPrecision;
}
//@B0C - javadoc
/**
*Sets the value for the DFT keyword for this field. Use this version
*of setDFT() when an AS400Float8 was used to construct the object.
*@param defaultValue The default value for this
* field. The defaultValue cannot be null.
*To set a default value of *NULL, use the setDFTNull() method.
**/
public void setDFT(Double defaultValue)
{
if (defaultValue == null)
{
throw new NullPointerException("defaultValue");
}
defaultValue_ = defaultValue;
isDFTNull_ = false; //@B0A
isDFTCurrent_ = false; //@B0A
DFTCurrentValue_ = null; //@B0A
}
//@B0C - javadoc
/**
*Sets the value for the DFT keyword for this field. Use this version
*of setDFT() when an AS400Float4 was used to construct the object.
*@param defaultValue The default value for this
* field. The defaultValue cannot be null.
*To set a default value of *NULL, use the setDFTNull() method.
**/
public void setDFT(Float defaultValue)
{
if (defaultValue == null)
{
throw new NullPointerException("defaultValue");
}
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;
}
/**
*Sets the length of this field.
*@param length The length of this field. The length must be greater than
*zero.
**/
public void setLength(int length)
{
if (length < 1)
{
throw new ExtendedIllegalArgumentException("length (" + String.valueOf(length) + ")", ExtendedIllegalArgumentException.PARAMETER_VALUE_NOT_VALID);
}
length_ = length;
}
}