Package ptolemy.actor.lib
Class RecordAssembler
- java.lang.Object
- 
- ptolemy.kernel.util.NamedObj
- 
- ptolemy.kernel.InstantiableNamedObj
- 
- ptolemy.kernel.Entity<T>
- 
- ptolemy.kernel.ComponentEntity<T>
- 
- ptolemy.actor.AtomicActor<TypedIOPort>
- 
- ptolemy.actor.TypedAtomicActor
- 
- ptolemy.actor.lib.RecordAssembler
 
 
 
 
 
 
 
- 
- All Implemented Interfaces:
- java.lang.Cloneable,- Actor,- Executable,- FiringsRecordable,- Initializable,- TypedActor,- Changeable,- Debuggable,- DebugListener,- Derivable,- Instantiable,- ModelErrorHandler,- MoMLExportable,- Moveable,- Nameable
 - Direct Known Subclasses:
- OrderedRecordAssembler
 
 public class RecordAssembler extends TypedAtomicActor On each firing, read one token from each connected input port and assemble them into a RecordToken. Disconnected input ports are ignored. The labels for the RecordToken much match the names of the input ports. This is achieved using two type constraints:- output ≥ {x = typeOf(inputPortX), y = typeOf(inputPortY), ..} , which requires the types of the input ports to be compatible with the corresponding types in the output record.
- each input ≥ the type of the corresponding field inside the output record, which together with the first constraint forces the input types to be exactly equal to the types of the corresponding fields in the output record. This constraint is intended to back- propagate type information upstream, not to assure type compatibility. Therefore, this constraint is only set up for input ports that do not already have a type declared.
 To use this class, instantiate it, and then add input ports (instances of TypedIOPort). This actor is polymorphic. The type constraint is that the type of each record field is no less than the type of the corresponding input port. Note that if the display name of a port is set, display name is used in the type constraints instead of name. This is useful in case fields to add to the record contain a period, because periods are not allowed in port names. - Since:
- Ptolemy II 1.0
- Version:
- $Id$
- Author:
- Yuhong Xiong, Marten Lohstroh
- See Also:
- RecordDisassembler
- Pt.AcceptedRating:
- Yellow (cxh)
- Pt.ProposedRating:
- Yellow (yuhong)
 
- 
- 
Nested Class Summary- 
Nested classes/interfaces inherited from class ptolemy.kernel.EntityEntity.ContainedObjectsIterator
 
- 
 - 
Field SummaryFields Modifier and Type Field Description protected java.util.Map<java.lang.String,TypedIOPort>_portMapKeeps track of which name or alias is associated with which port.TypedIOPortoutputThe output port.- 
Fields inherited from class ptolemy.actor.TypedAtomicActor_typesValid
 - 
Fields inherited from class ptolemy.actor.AtomicActor_actorFiringListeners, _initializables, _notifyingActorFiring, _stopRequested
 - 
Fields inherited from class ptolemy.kernel.util.NamedObj_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _deferChangeRequests, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS
 - 
Fields inherited from interface ptolemy.actor.ExecutableCOMPLETED, NOT_READY, STOP_ITERATING
 
- 
 - 
Constructor SummaryConstructors Constructor Description RecordAssembler(CompositeEntity container, java.lang.String name)Construct a RecordAssembler with the given container and name.
 - 
Method SummaryAll Methods Instance Methods Concrete Methods Modifier and Type Method Description protected java.util.Set<Inequality>_customTypeConstraints()Set up and return two type constraints.protected java.util.Set<Inequality>_defaultTypeConstraints()Do not establish the usual default type constraints.protected void_mapPorts()Map port names or aliases to port objects.protected java.util.Map<java.lang.String,TypedIOPort>_newPortMap()Return a new _portMap, which is a map between port names and strings.java.lang.Objectclone(Workspace workspace)Clone the actor into the specified workspace.voidfire()Read one token from each input port, assemble them into a RecordToken, and send the RecordToken to the output.voidnotifyOfNameChange(NamedObj object)React to a name change of contained ports.booleanprefire()Return true if all connected input ports have tokens, false if some connected input ports do not have a token.- 
Methods inherited from class ptolemy.actor.TypedAtomicActor_containedTypeConstraints, _fireAt, _fireAt, attributeTypeChanged, clone, isBackwardTypeInferenceEnabled, newPort, typeConstraintList, typeConstraints
 - 
Methods inherited from class ptolemy.actor.AtomicActor_actorFiring, _actorFiring, _declareDelayDependency, addActorFiringListener, addInitializable, connectionsChanged, createReceivers, declareDelayDependency, getCausalityInterface, getDirector, getExecutiveDirector, getManager, initialize, inputPortList, isFireFunctional, isStrict, iterate, newReceiver, outputPortList, postfire, preinitialize, pruneDependencies, recordFiring, removeActorFiringListener, removeDependency, removeInitializable, setContainer, stop, stopFire, terminate, wrapup
 - 
Methods inherited from class ptolemy.kernel.ComponentEntity_adjustDeferrals, _checkContainer, _getContainedObject, _propagateExistence, getContainer, instantiate, isAtomic, isOpaque, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, propagateExistence, setName
 - 
Methods inherited from class ptolemy.kernel.Entity_addPort, _description, _exportMoMLContents, _removePort, _validateSettables, connectedPortList, connectedPorts, containedObjectsIterator, getAttribute, getPort, getPorts, linkedRelationList, linkedRelations, portList, removeAllPorts, setClassDefinition, uniqueName
 - 
Methods inherited from class ptolemy.kernel.InstantiableNamedObj_setParent, exportMoML, getChildren, getElementName, getParent, getPrototypeList, isClassDefinition, isWithinClassDefinition
 - 
Methods inherited from class ptolemy.kernel.util.NamedObj_addAttribute, _adjustOverride, _attachText, _cloneFixAttributeFields, _containedDecorators, _copyChangeRequestList, _debug, _debug, _debug, _debug, _debug, _executeChangeRequests, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _notifyHierarchyListenersAfterChange, _notifyHierarchyListenersBeforeChange, _propagateValue, _removeAttribute, _splitName, _stripNumericSuffix, addChangeListener, addDebugListener, addHierarchyListener, attributeChanged, attributeDeleted, attributeList, attributeList, decorators, deepContains, depthInHierarchy, description, description, event, executeChangeRequests, exportMoML, exportMoML, exportMoML, exportMoML, exportMoMLPlain, getAttribute, getAttributes, getChangeListeners, getClassName, getDecoratorAttribute, getDecoratorAttributes, getDerivedLevel, getDerivedList, getDisplayName, getFullName, getModelErrorHandler, getName, getName, getSource, handleModelError, isDeferringChangeRequests, isOverridden, isPersistent, lazyContainedObjectsIterator, message, propagateValue, propagateValues, removeAttribute, removeChangeListener, removeDebugListener, removeHierarchyListener, requestChange, setClassName, setDeferringChangeRequests, setDerivedLevel, setDisplayName, setModelErrorHandler, setPersistent, setSource, sortContainedObjects, toplevel, toString, validateSettables, workspace
 - 
Methods inherited from class java.lang.Objectequals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 - 
Methods inherited from interface ptolemy.actor.ActorcreateReceivers, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, newReceiver, outputPortList
 - 
Methods inherited from interface ptolemy.kernel.util.DerivablegetDerivedLevel, getDerivedList, propagateValue
 - 
Methods inherited from interface ptolemy.actor.ExecutableisFireFunctional, isStrict, iterate, postfire, stop, stopFire, terminate
 - 
Methods inherited from interface ptolemy.actor.InitializableaddInitializable, initialize, preinitialize, removeInitializable, wrapup
 - 
Methods inherited from interface ptolemy.kernel.util.Nameabledescription, getContainer, getDisplayName, getFullName, getName, getName, setName
 
- 
 
- 
- 
- 
Field Detail- 
outputpublic TypedIOPort output The output port.
 - 
_portMapprotected java.util.Map<java.lang.String,TypedIOPort> _portMap Keeps track of which name or alias is associated with which port.
 
- 
 - 
Constructor Detail- 
RecordAssemblerpublic RecordAssembler(CompositeEntity container, java.lang.String name) throws NameDuplicationException, IllegalActionException Construct a RecordAssembler with the given container and name.- Parameters:
- container- The container.
- name- The name of this actor.
- Throws:
- IllegalActionException- If this actor cannot be contained by the proposed container.
- NameDuplicationException- If the container already has an actor with this name.
 
 
- 
 - 
Method Detail- 
clonepublic java.lang.Object clone(Workspace workspace) throws java.lang.CloneNotSupportedException Clone the actor into the specified workspace.- Overrides:
- clonein class- TypedAtomicActor
- Parameters:
- workspace- The workspace for the new object.
- Returns:
- A new actor.
- Throws:
- java.lang.CloneNotSupportedException- If a derived class contains an attribute that cannot be cloned.
- See Also:
- NamedObj.exportMoML(Writer, int, String),- NamedObj.setDeferringChangeRequests(boolean)
 
 - 
firepublic void fire() throws IllegalActionExceptionRead one token from each input port, assemble them into a RecordToken, and send the RecordToken to the output.- Specified by:
- firein interface- Executable
- Overrides:
- firein class- AtomicActor<TypedIOPort>
- Throws:
- IllegalActionException- If there is no director.
 
 - 
notifyOfNameChangepublic void notifyOfNameChange(NamedObj object) React to a name change of contained ports. Update the internal mapping from names and aliases to port objects, and invalidate the resolved types.- Overrides:
- notifyOfNameChangein class- NamedObj
- Parameters:
- object- The object that changed.
 
 - 
prefirepublic boolean prefire() throws IllegalActionExceptionReturn true if all connected input ports have tokens, false if some connected input ports do not have a token.- Specified by:
- prefirein interface- Executable
- Overrides:
- prefirein class- AtomicActor<TypedIOPort>
- Returns:
- True if all connected input ports have tokens and the parent method returns true.
- Throws:
- IllegalActionException- If the hasToken() call to the input port throws it.
- See Also:
- IOPort.hasToken(int)
 
 - 
_customTypeConstraintsprotected java.util.Set<Inequality> _customTypeConstraints() Set up and return two type constraints.- output ≥ {x = typeOf(inputPortX), y = typeOf(inputPortY), ..} , which requires the types of the input ports to be compatible with the corresponding types in the output record.
- each input ≥ the type of the corresponding field inside the output record, which together with the first constraint forces the input types to be exactly equal to the types of the corresponding fields in the output record. This constraint is intended to back- propagate type information upstream, not to assure type compatibility. Therefore, this constraint is only set up for input ports that do not already have a type declared.
 - Overrides:
- _customTypeConstraintsin class- TypedAtomicActor
- Returns:
- A set of type constraints
- See Also:
- ConstructAssociativeType,- ExtractFieldType
 
 - 
_defaultTypeConstraintsprotected java.util.Set<Inequality> _defaultTypeConstraints() Do not establish the usual default type constraints.- Overrides:
- _defaultTypeConstraintsin class- TypedAtomicActor
- Returns:
- null
 
 - 
_newPortMapprotected java.util.Map<java.lang.String,TypedIOPort> _newPortMap() Return a new _portMap, which is a map between port names and strings. Derived classes like OrderedRecordAssembler would return a map with a different ordering.- Returns:
- a Map from port names to TypedIOPorts.
 
 - 
_mapPortsprotected void _mapPorts() Map port names or aliases to port objects. If the mapping has changed, then invalidate the resolved types, which forces new type constraints with appropriate field names to be generated.
 
- 
 
-