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

src.com.ibm.as400.access.HexFieldDescription Maven / Gradle / Ivy

There is a newer version: 11.1
Show newest version
///////////////////////////////////////////////////////////////////////////////
//                                                                             
// 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; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy