Media Authoring
with Java API

tv.amwa.maj.entity
Class NestedScope

java.lang.Object
  extended by tv.amwa.maj.entity.InterchangeObject
      extended by tv.amwa.maj.entity.Component
          extended by tv.amwa.maj.entity.Segment
              extended by tv.amwa.maj.entity.NestedScope
All Implemented Interfaces:
Serializable, Cloneable, MAJCommon, Component, InterchangeObject, NestedScope, Segment, XMLSerializable

@AAFClass(uuid1=218169601,
          uuid2=257,
          uuid3=2816,
          uuid4={6,14,43,52,2,6,1,1},
          definedName="NestedScope",
          description="The NestedScope class defines a scope and has an ordered set of Segments.")
public class NestedScope
extends Segment
implements NestedScope, Serializable, Cloneable, MAJCommon

Implements a scope and has an ordered set of segments. Typically, nested scopes are used within composition mobs.

THE COMMENTS FOR THIS CLASS ARE INCOMPLETE.

Author:
Richard Cartwright
See Also:
Serialized Form

Nested Class Summary
static class NestedScope.SlotsXMLHandler
           
static class NestedScope.XMLHandler
           
 
Nested classes/interfaces inherited from class tv.amwa.maj.entity.Segment
Segment.SegmentXMLHandler
 
Nested classes/interfaces inherited from class tv.amwa.maj.entity.Component
Component.ComponentAttributesXMLHandler, Component.ComponentUserCommentsXMLHandler, Component.ComponentXMLHandler, Component.KLVDataXMLHandler
 
Nested classes/interfaces inherited from class tv.amwa.maj.entity.InterchangeObject
InterchangeObject.InterchangeObjectXMLHandler
 
Field Summary
static String NESTEDSCOPE_TAG
           
 
Fields inherited from class tv.amwa.maj.entity.Component
COMPONENT_ITEM
 
Constructor Summary
NestedScope(List<Segment> slots)
          Creates and initializes a nested scope object, which defines a scope and has an ordered set of segments.
 
Method Summary
 void appendSegment(Segment segment)
          Append an input segment to the list of segments of this nested scope.
 void appendXMLChildren(Node parent)
          Append child elements to the given parent node to serialize the value of an object to an XML fragment.
 NestedScope clone()
          Creates a cloned copy of this entity.
 int countSegments()
          Returns the number of segments in the list of segments of this nested scope.
 boolean equals(Object o)
          Tests to see if the given object is equal to this interchange object.
 Segment getSegmentAt(int index)
          Returns the segment at the given index through the list of segments in this nested scope.
 List<Segment> getSegments()
          Returns the list of segments that make up this nested scope.
 int hashCode()
          Returns a hash code value for this interchange object.
 void insertSegmentAt(int index, Segment segment)
          Insert an input segment into the list of segments of this nested scope at the given index.
 void prependSegment(Segment segment)
          Prepend an input segment to the list of segments of this nested scope.
 void removeSegmentAt(int index)
          Removes the segment at the given index in the list of segments of this nested scope.
 void setPropertiesFromInterface(NestedScope castFrom)
           
 
Methods inherited from class tv.amwa.maj.entity.Segment
segmentOffsetToTC, segmentTCToOffset, setPropertiesFromInterface
 
Methods inherited from class tv.amwa.maj.entity.Component
appendAttribute, appendAttribute, appendComment, appendComment, appendKLVData, countAttributes, countComments, countKLVData, getAttributes, getComments, getDataDefinition, getKLVData, getLength, getLengthPresent, removeAttribute, removeComment, removeKLVData, setDataDefinition, setLength, setLengthPresent, setPropertiesFromInterface
 
Methods inherited from class tv.amwa.maj.entity.InterchangeObject
castFromInterface, countProperties, createOptionalPropertyValue, disableGenerationTracking, enableGenerationTracking, getDefinition, getGeneration, getGenerationAUID, getProperties, getPropertyValue, isGenerationTracked, isPropertyPresent, omitOpionalProperty, registerImplementation, setPropertiesFromInterface, setPropertyValue, toString
 
Methods inherited from class java.lang.Object
getClass, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface tv.amwa.maj.iface.Segment
segmentOffsetToTC, segmentTCToOffset
 
Methods inherited from interface tv.amwa.maj.iface.Component
appendAttribute, appendAttribute, appendComment, appendComment, appendKLVData, countAttributes, countComments, countKLVData, getAttributes, getComments, getDataDefinition, getKLVData, getLength, removeAttribute, removeComment, removeKLVData, setDataDefinition, setLength
 
Methods inherited from interface tv.amwa.maj.iface.InterchangeObject
countProperties, createOptionalPropertyValue, disableGenerationTracking, enableGenerationTracking, getDefinition, getGeneration, getGenerationAUID, getProperties, getPropertyValue, isGenerationTracked, isPropertyPresent, omitOpionalProperty, setPropertyValue
 
Methods inherited from interface tv.amwa.maj.entity.MAJCommon
toString
 

Field Detail

NESTEDSCOPE_TAG

public static final String NESTEDSCOPE_TAG
See Also:
Constant Field Values
Constructor Detail

NestedScope

public NestedScope(List<Segment> slots)
            throws NullPointerException,
                   BadLengthException,
                   IllegalArgumentException

Creates and initializes a nested scope object, which defines a scope and has an ordered set of segments.

Parameters:
slots - Ordered set of segments; where the last segment provides the value for the nested scope object itself. The last segment is used to set the data definition and length for this segment.
Throws:
NullPointerException - The argument is null.
BadLengthException - One or more of the segments in the given list has a length that is different to the length of the last segment.
IllegalArgumentException - The list of slots is empty and it should contain at least one element.
Method Detail

setPropertiesFromInterface

public final void setPropertiesFromInterface(NestedScope castFrom)
See Also:
InterchangeObject.setPropertiesFromInterface(tv.amwa.maj.iface.InterchangeObject)

appendSegment

public void appendSegment(Segment segment)
                   throws NullPointerException,
                          InvalidDataDefinitionException,
                          BadLengthException
Description copied from interface: NestedScope

Append an input segment to the list of segments of this nested scope. The last segment added will be used as the output value of the nested scope. Typically, the given segment contains operations whose inputs are scope references.

Specified by:
appendSegment in interface NestedScope
Parameters:
segment - Input segment to append to the list of segments in this nested scope.
Throws:
NullPointerException - The given segment is null.
InvalidDataDefinitionException - The given segment will become the value of this nested scope has an incompatible data definition.
BadLengthException - The given segment has a different length from that of this nested scope.

countSegments

public int countSegments()
Description copied from interface: NestedScope

Returns the number of segments in the list of segments of this nested scope.

Specified by:
countSegments in interface NestedScope
Returns:
Number of segments in the list of segments of this nested scope.

getSegmentAt

public Segment getSegmentAt(int index)
                     throws IndexOutOfBoundsException
Description copied from interface: NestedScope

Returns the segment at the given index through the list of segments in this nested scope.

Specified by:
getSegmentAt in interface NestedScope
Parameters:
index - 0-based index of the segment to return.
Returns:
Segment at the given index.
Throws:
IndexOutOfBoundsException - Index is outside the range acceptable range for the current list of segments of this nested scope.

getSegments

@AAFProperty(uuid1=100729092,
             uuid2=1543,
             uuid3=0,
             uuid4={6,14,43,52,1,1,1,2},
             definedName="Slots",
             typeName="StrongReferenceVector of Segment",
             optional=false,
             uniqueIdentifier=false,
             pid=3073)
public List<Segment> getSegments()
Description copied from interface: NestedScope

Returns the list of segments that make up this nested scope.

Specified by:
getSegments in interface NestedScope
Returns:
Shallow copy of the list of segments of this nested scope.

insertSegmentAt

public void insertSegmentAt(int index,
                            Segment segment)
                     throws NullPointerException,
                            IndexOutOfBoundsException,
                            InvalidDataDefinitionException,
                            BadLengthException
Description copied from interface: NestedScope

Insert an input segment into the list of segments of this nested scope at the given index. Segments already existing at the given and higher indices will be moved up by one index to accommodate.

Specified by:
insertSegmentAt in interface NestedScope
Parameters:
index - Index at which the segment is to be inserted into the list of segments of this nested scope.
segment - Segment to be inserted into the list.
Throws:
NullPointerException - The given segment is null.
IndexOutOfBoundsException - Index is outside the range of the indices of the current list.
InvalidDataDefinitionException - The given segment will become the value of this nested scope and has an incompatible data definition.
BadLengthException - The given segment has a different length from that of this nested scope.

prependSegment

public void prependSegment(Segment segment)
                    throws NullPointerException,
                           BadLengthException
Description copied from interface: NestedScope

Prepend an input segment to the list of segments of this nested scope.

Specified by:
prependSegment in interface NestedScope
Parameters:
segment - Segment to add at the beginning of the list.
Throws:
NullPointerException - The given segment is null.
BadLengthException - The given segment has a different length from that of this nested scope.

removeSegmentAt

public void removeSegmentAt(int index)
                     throws IndexOutOfBoundsException,
                            IllegalArgumentException,
                            InvalidDataDefinitionException
Description copied from interface: NestedScope

Removes the segment at the given index in the list of segments of this nested scope. Segments already existing at indices greater than the given index will be moved down by one index to accommodate.

Specified by:
removeSegmentAt in interface NestedScope
Parameters:
index - Index corresponding to segment to be removed from the list of segments of this nested scope.
Throws:
IndexOutOfBoundsException - The given index is outside the acceptable range for the current list of segments.
InvalidDataDefinitionException - The removal operation for the given index will result in the value of the nested scope having an incompatible data definition to the nested scope itself.
IllegalArgumentException - Removal of a segment will leave an empty list.

equals

public boolean equals(Object o)
Description copied from interface: MAJCommon

Tests to see if the given object is equal to this interchange object. To be equal, the given value must be not null, share the same interface to its value and each of the properties of the value must each be equal.

Specified by:
equals in interface MAJCommon
Overrides:
equals in class Component
Parameters:
o - Object to test for equality with.
Returns:
Is the given object equals to this value?
See Also:
Object.equals(Object)

hashCode

public int hashCode()
Description copied from interface: MAJCommon

Returns a hash code value for this interchange object.

Specified by:
hashCode in interface MAJCommon
Overrides:
hashCode in class Component
Returns:
Hash code value for this interchange object.
See Also:
Object.hashCode()

clone

public NestedScope clone()
Description copied from interface: MAJCommon

Creates a cloned copy of this entity. The clone will be initialized to have the same value as this value but exists independently from then on. Changes to this value will not effect the clone and changes to the clone will not effect this. MAJ API clones are true deep clones with no shared references to areas of memory within the original.

This method does not throw a CloneNotSupportedException as all entity values must implement the Cloneable interface. If a cloning error does occur, a null value will be returned but this is very unlikely to happen.

Specified by:
clone in interface MAJCommon
Overrides:
clone in class Segment
Returns:
Independent clone of this value, which is a deep copy.
See Also:
Object.clone()

appendXMLChildren

public void appendXMLChildren(Node parent)
Description copied from interface: XMLSerializable

Append child elements to the given parent node to serialize the value of an object to an XML fragment. Methods of the XMLBuilder class are provided to help with this process.

Specified by:
appendXMLChildren in interface XMLSerializable
Overrides:
appendXMLChildren in class Component
Parameters:
parent - XML parent element to append child nodes to.

Media Authoring
with Java API

(c) 2007-2008 Richard Cartwright, all rights reserved. Subject to the terms of the AAF SDK Public Source License.