/*******************************************************************************
* Copyright (c) 1998, 2015 Oracle and/or its affiliates. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
* Oracle - initial API and implementation from Oracle TopLink
******************************************************************************/
package org.eclipse.persistence.internal.eis.cobol;
/**
* <b>Purpose</b>: This interface defines behavior for a field meta data be they elementary or
* composite. This allows reference to either type field indiscriminatly. It also defines some
* statics for use in the type attribute of field meta data.
*/
public interface FieldMetaData {
//types
public static final int NUMERIC = 1;
public static final int ALPHA_NUMERIC = 2;
public static final int COMPOSITE = 3;
public static final int ALPHABETIC = 4;
public static final int BINARY = 5;
public static final int MANTISSA = 6;
public static final int PACKED_DECIMAL = 7;
public static final int VOID = 0;
/** this method returns an new instance with the same values */
public FieldMetaData deepCopy();
/** this method returns true if the field is signed */
public boolean isSigned();
/** this method sets the signed attribute for the field */
public void setIsSigned(boolean signed);
/** this method will return the name of the field */
public String getName();
/** this method will set the name of the field */
public void setName(String newName);
/** this method will return the associated record */
public RecordMetaData getRecord();
/** this method will set the assoicated record */
public void setRecord(RecordMetaData newRecord);
/** this method will return the size in bytes of the field */
public int getSize();
/** this method will set the size of the field */
public void setSize(int size);
/** this method returns true if the field is composite, false otherwise */
public boolean isComposite();
/** this method returns the offset, in bytes, of the field in the record */
public int getOffset();
/** this method sets the offset of the field */
public void setOffset(int offset);
/** this method returns the type of the field */
public int getType();
/** this method sets the type of the field */
public void setType(int type);
/** this method sets whether this is a field redefine or not */
public boolean isFieldRedefine();
/** this method sets the boolean for field redefine to true */
public void setIsFieldRedefine(boolean status);
/** this method sets the redefined field */
public void setFieldRedefined(FieldMetaData field);
/** this method returns the field that is redefined */
public FieldMetaData getFieldRedefined();
/** this method returns true is the field has a preset decimal position */
public boolean hasDecimal();
/** this method returns the decimal position index */
public int getDecimalPosition();
/** this method sets the decimal position to the new index */
public void setDecimalPosition(int newPosition);
/** this method returns true if this field is an array */
public boolean isArray();
/** this method returns the array size */
public int getArraySize();
/** this method sets the array size for the field */
public void setArraySize(int newSize);
/** this method returns true if the array size depends on another field */
public boolean dependsOn();
/** this method returns the name of the dependent field name */
public String getDependentFieldName();
/** this method sets the dependent field name */
public void setDependentFieldName(String fieldName);
/** this method will extract the field's value from a byte array */
public Object extractValueFromArray(byte[] recordData);
/** this method will write itself on the give row extracting the data from the given
byte array */
public void writeOnRow(CobolRow row, byte[] recordData);
/** this method will write itself on the given byte array from the data in the row */
public void writeOnArray(CobolRow row, byte[] recordData);
}