mil.navy.nps.dis
Class DatumSpecification

java.lang.Object
  extended bymil.navy.nps.dis.PduElement
      extended bymil.navy.nps.dis.DatumSpecification
All Implemented Interfaces:
java.lang.Cloneable, SerializationInterface

public class DatumSpecification
extends PduElement

Grouped datum information.

Version:
1.0
Author:
Antonio Alexandre Rua (http://www.garfield.fe.up.pt/~alexrua)
Location:
Web: http://www.web3d.org/WorkingGroups/vrtp/mil/navy/nps/dis/DatumSpecification.java
or locally: ~/mil/navy/nps/dis/DatumSpecification.java
Hierarchy Diagram:
Summary:
The Datum Specification record is used to communicate grouped datum information.
Explanation:
This record shall specify the number of Fixed Datums and Variable Datums, as well as the records itself. The Datum Specification is included in several PDU, as for example the SetDataPDU, the CommentPdu...

Note that our implementation might seem quite different from the representation of a Datum Specification Record in the DIS format, in fact we take advantage of the power of java where we can use elaborate structures "transparently". As with other things, the DatumSpecification record has to know how to serialize and deserialize itself, clone itself, and print out its values.

Note: DatumSpecification doesn't exist in the on-line Dis Data Dictionary.
History:
16Sep97 /Antonio Alexandre Rua /New
8Dec97 /Ronan Fauglas /changes for documentation templates + complements in documentation
11Dec97 /Ronan Fauglas /changed access methods: thisVariable() --> getThisVariable()
References:
DIS-Java-VRML Working Group: http://www.web3d.org/WorkingGroups/vrtp/dis-java-vrml/
DIS specification : IEEE 1278.1, Section 5.3.9
See Also:
ProtocolDataUnit, PduElement, SerializationInterface

Field Summary
protected  java.util.Vector fixedDatumList
          Elaborate structure that represents the list of fixed datums.
static int sizeOf
          Constant value--size of a fixed data of the Datum Specification record (actually the 2 counters); here :sizeOf = 8 bytes.
protected  java.util.Vector variableDatumList
          Elaborate structure that represents the list of variable datums.
 
Constructor Summary
DatumSpecification()
          Default constructor.
 
Method Summary
 void addFixedDatum(FixedDatum pDatum)
          Adds the specified component to the end of this Fixed Datum list, increasing its size by one.
 void addVariableDatum(VariableDatum pDatum)
          Adds the specified component to the end of this Variable Datum list, increasing its size by one.
 java.lang.Object clone()
          Makes deep copies of all the instance variables, so we don't have two objects pointing to the same data.
 void deSerialize(java.io.DataInputStream inputStream)
          Deserialize our data from the input stream.
 void dropFixedDatum()
          Supress the existing Fixed Datum List (used in Comment PDU).
 void dropVariableDatum()
          Supress the existing Fixed Datum List.
 FixedDatum fixedDatumAt(int pIdx)
          Gets the specified component to the end at the specified index of the Fixed Datum List.
 int getFixedDatumCount()
           
 int getVariableDatumCount()
           
 int length()
          Returns the length of the object when serialized in a stream.
 void printValues(int indentLevel, java.io.PrintStream printStream)
          Prints the generated serialized object for debugging.
 void serialize(java.io.DataOutputStream outputStream)
          Serialize our data out to the stream.
 VariableDatum variableDatumAt(int pIdx)
          Gets the specified component to the end at the specified index of the Variable Datum List.
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

fixedDatumList

protected java.util.Vector fixedDatumList
Elaborate structure that represents the list of fixed datums. One fixed datum is made of Datum ID --a 32 bit long and a variable datum--a 32 bit long.


variableDatumList

protected java.util.Vector variableDatumList
Elaborate structure that represents the list of variable datums. When written on the wire One variable datum is made of Datum ID --a 32 bit long, a variable length --a 32 bit long, and of variable datum value--padding bit long.


sizeOf

public static final int sizeOf
Constant value--size of a fixed data of the Datum Specification record (actually the 2 counters); here :sizeOf = 8 bytes.

See Also:
Constant Field Values
Constructor Detail

DatumSpecification

public DatumSpecification()
Default constructor. Creates two empty lists of data.

Method Detail

serialize

public void serialize(java.io.DataOutputStream outputStream)
Description copied from class: PduElement
Serialize our data out to the stream. Subclasses of us should call super.Serialize() to make sure the superclasse's data is serialized out. The order in which instance variables are serialized is significant. They must be serialized in the same order they appear in the DIS spec. Prints out some information during execution if debugging flag is set.

Specified by:
serialize in interface SerializationInterface
Specified by:
serialize in class PduElement
Parameters:
outputStream - the stream to which this object is serialized

deSerialize

public void deSerialize(java.io.DataInputStream inputStream)
Description copied from class: PduElement
Deserialize our data from the input stream. Subclasses of us should call super.deSerialize to make sure the superclass's data are properly affected. The order in which instance variables are serialized is significant. They must be deSerialized in the same order as they have been serialized as specified by the DIS spec.

Specified by:
deSerialize in interface SerializationInterface
Specified by:
deSerialize in class PduElement
Parameters:
inputStream - the stream from which this object is initialized

clone

public java.lang.Object clone()
Description copied from class: PduElement
Makes deep copies of all the instance variables, so we don't have two objects pointing to the same data. The accessor methods make copies of the objects, rather than returning the objects themselves. The runtime provides the right object type with the call to super.clone(), and we cast it to our type. Subclasses should do the same thing, and all these ivars will be taken care of automatically.

Overrides:
clone in class PduElement
Returns:
a clone of this instance
See Also:
Object

length

public int length()
Description copied from class: PduElement
Returns the length of the object when serialized in a stream.

Specified by:
length in class PduElement
Returns:
the length of the object when serialized in a stream

printValues

public void printValues(int indentLevel,
                        java.io.PrintStream printStream)
Description copied from class: PduElement
Prints the generated serialized object for debugging.

Specified by:
printValues in class PduElement
Parameters:
indentLevel - number of spaces to indent for visibility

getFixedDatumCount

public int getFixedDatumCount()

getVariableDatumCount

public int getVariableDatumCount()

addFixedDatum

public void addFixedDatum(FixedDatum pDatum)
Adds the specified component to the end of this Fixed Datum list, increasing its size by one.

Parameters:
pDatum - the Datum to be inserted in the list.

fixedDatumAt

public FixedDatum fixedDatumAt(int pIdx)
Gets the specified component to the end at the specified index of the Fixed Datum List.

Parameters:
pIdx - the index we want to get the value of.

dropFixedDatum

public void dropFixedDatum()
Supress the existing Fixed Datum List (used in Comment PDU).

See Also:
CommentPdu

addVariableDatum

public void addVariableDatum(VariableDatum pDatum)
Adds the specified component to the end of this Variable Datum list, increasing its size by one.

Parameters:
pDatum - the Datum to be inserted in the list.

variableDatumAt

public VariableDatum variableDatumAt(int pIdx)
Gets the specified component to the end at the specified index of the Variable Datum List.

Parameters:
pIdx - the index we want to get the value of.

dropVariableDatum

public void dropVariableDatum()
Supress the existing Fixed Datum List.

See Also:
CommentPdu