/**
* <copyright>
* </copyright>
*
* $Id$
*/
package orgomg.cwm.resource.record;
import org.eclipse.emf.common.util.EList;
/**
* <!-- begin-user-doc -->
* A representation of the model object '<em><b>Def</b></em>'.
* <!-- end-user-doc -->
*
* <!-- begin-model-doc -->
* A RecordDef is an ordered collection of Fields representing the structure of a Record.
*
* Examples of RecordDefs include definitions of
*
* language-specific data structures
* database records
* IMS segments
*
* The internal structure of a RecordDef instance is constructed by adding Field instances as features (using the ElementOwnership association) and pointing each Field instance�s inherited type reference to the Classifier instance representing the Field�s data type. The referenced instance can be either a primitive data type (an instance of DataType, such as "integer") or a structured data type (such as a Group instance).
*
* Refer to the example for more details of the relationships between RecordDefs, Fields, Records, and their values.
* <!-- end-model-doc -->
*
* <p>
* The following features are supported:
* <ul>
* <li>{@link orgomg.cwm.resource.record.RecordDef#getFieldDelimiter <em>Field Delimiter</em>}</li>
* <li>{@link orgomg.cwm.resource.record.RecordDef#isIsFixedWidth <em>Is Fixed Width</em>}</li>
* <li>{@link orgomg.cwm.resource.record.RecordDef#getTextDelimiter <em>Text Delimiter</em>}</li>
* <li>{@link orgomg.cwm.resource.record.RecordDef#getFile <em>File</em>}</li>
* </ul>
* </p>
*
* @see orgomg.cwm.resource.record.RecordPackage#getRecordDef()
* @model
* @generated
*/
public interface RecordDef extends orgomg.cwm.objectmodel.core.Class {
/**
* Returns the value of the '<em><b>Field Delimiter</b></em>' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The value of a fieldDelimiter used to separate field values in an input stream.
* <!-- end-model-doc -->
* @return the value of the '<em>Field Delimiter</em>' attribute.
* @see #setFieldDelimiter(String)
* @see orgomg.cwm.resource.record.RecordPackage#getRecordDef_FieldDelimiter()
* @model dataType="orgomg.cwm.objectmodel.core.String"
* @generated
*/
String getFieldDelimiter();
/**
* Sets the value of the '{@link orgomg.cwm.resource.record.RecordDef#getFieldDelimiter <em>Field Delimiter</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Field Delimiter</em>' attribute.
* @see #getFieldDelimiter()
* @generated
*/
void setFieldDelimiter(String value);
/**
* Returns the value of the '<em><b>Is Fixed Width</b></em>' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* True if the record is fixed length. Otherwise, the record can be of variable length.
* <!-- end-model-doc -->
* @return the value of the '<em>Is Fixed Width</em>' attribute.
* @see #setIsFixedWidth(boolean)
* @see orgomg.cwm.resource.record.RecordPackage#getRecordDef_IsFixedWidth()
* @model dataType="orgomg.cwm.objectmodel.core.Boolean"
* @generated
*/
boolean isIsFixedWidth();
/**
* Sets the value of the '{@link orgomg.cwm.resource.record.RecordDef#isIsFixedWidth <em>Is Fixed Width</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Is Fixed Width</em>' attribute.
* @see #isIsFixedWidth()
* @generated
*/
void setIsFixedWidth(boolean value);
/**
* Returns the value of the '<em><b>Text Delimiter</b></em>' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The delimiter of a text string in the record, such as a quote.
* <!-- end-model-doc -->
* @return the value of the '<em>Text Delimiter</em>' attribute.
* @see #setTextDelimiter(String)
* @see orgomg.cwm.resource.record.RecordPackage#getRecordDef_TextDelimiter()
* @model dataType="orgomg.cwm.objectmodel.core.String"
* @generated
*/
String getTextDelimiter();
/**
* Sets the value of the '{@link orgomg.cwm.resource.record.RecordDef#getTextDelimiter <em>Text Delimiter</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Text Delimiter</em>' attribute.
* @see #getTextDelimiter()
* @generated
*/
void setTextDelimiter(String value);
/**
* Returns the value of the '<em><b>File</b></em>' reference list.
* The list contents are of type {@link orgomg.cwm.resource.record.RecordFile}.
* It is bidirectional and its opposite is '{@link orgomg.cwm.resource.record.RecordFile#getRecord <em>Record</em>}'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Identifies the set of files in which a record is stored.
* <!-- end-model-doc -->
* @return the value of the '<em>File</em>' reference list.
* @see orgomg.cwm.resource.record.RecordPackage#getRecordDef_File()
* @see orgomg.cwm.resource.record.RecordFile#getRecord
* @model opposite="record"
* @generated
*/
EList<RecordFile> getFile();
} // RecordDef