Class ApplyFilterOverArray

  • All Implemented Interfaces:
    java.lang.Cloneable, Actor, Executable, ExecutionListener, FiringsRecordable, Initializable, TypedActor, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable

    public class ApplyFilterOverArray
    extends TypedAtomicActor
    implements ExecutionListener
    This is an atomic actor that filters an array received at its inputArray input port via applying a model specified by a file or URL. The specified model is evaluated on each input array element and should return a boolean value, and the output is an array that only contains elements satisfying the specified model (the evaluated result is true). An element of the array received at inputArray is provided to the model by setting its inputArrayElement parameter (which it must have defined). The result of executing the model is obtained by reading its evaluatedValue parameter (which it must have defined).

    Instead of outputting all the satisfied elements in the input array, the parameter maxOutputLength can be used to specify how many elements this actor should only output. If the specified length is larger than the number of satisfied elements, it will ignore the specified length and only output all the satisfied elements.

    FIXME: what should be the correct behavior if there are not enough elements to output?

    FIXME: make a convention, say when the maxOutputLength is -1, for output all the satisfied elements? FIXME: should add a ModelToken and an input port for receiving the filter model. Create a composite actor for providing a ModelToken from its inside model.

    Since:
    Ptolemy II 4.1
    Version:
    $Id$
    Author:
    Yang Zhao, Ilkay Altintas
    See Also:
    ModelReference
    Pt.AcceptedRating:
    Red (ellen_zh)
    Pt.ProposedRating:
    Yellow (ellen_zh)
    • Field Detail

      • inputArray

        public TypedIOPort inputArray
        The input port for an input array. It is an ArrayType.
      • outputArray

        public TypedIOPort outputArray
        The output port for output the filtered array. It has the same type as the inputArray port.
      • maxOutputLength

        public Parameter maxOutputLength
        The max amount of elements in the output array.
      • modelFileOrURL

        public FileParameter modelFileOrURL
        The file name or URL of the filter model.
      • _model

        protected NamedObj _model
        The model.
    • Constructor Detail

      • ApplyFilterOverArray

        public ApplyFilterOverArray​(CompositeEntity container,
                                    java.lang.String name)
                             throws IllegalActionException,
                                    NameDuplicationException
        Construct a ApplyFilterOverArray with a name and a container. The container argument must not be null, or a NullPointerException will be thrown. If the name argument is null, then the name is set to the empty string.
        Parameters:
        container - The container.
        name - The name of this actor.
        Throws:
        IllegalActionException - If the container is incompatible with this actor.
        NameDuplicationException - If the name coincides with an actor already in the container.
    • Method Detail

      • attributeChanged

        public void attributeChanged​(Attribute attribute)
                              throws IllegalActionException
        Override the base class to open the model specified if the attribute is modelFileOrURL, or for other parameters, to cache their values.
        Overrides:
        attributeChanged in class NamedObj
        Parameters:
        attribute - The attribute that changed.
        Throws:
        IllegalActionException - If the change is not acceptable to this container (not thrown in this base class).
      • clone

        public java.lang.Object clone​(Workspace workspace)
                               throws java.lang.CloneNotSupportedException
        Clone the actor into the specified workspace. This overrides the base class ensure that private variables are reset to null.
        Overrides:
        clone in class TypedAtomicActor
        Parameters:
        workspace - The workspace for the new object.
        Returns:
        A new instance of ApplyFilterOverArray.
        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)
      • executionError

        public void executionError​(Manager manager,
                                   java.lang.Throwable throwable)
        React to the fact that execution has failed by unregistering as an execution listener and by allowing subsequent executions. Report an execution failure at the next opportunity. This method will be called when an exception or error is caught by a manager during a run in another thread of the referenced model.
        Specified by:
        executionError in interface ExecutionListener
        Parameters:
        manager - The manager controlling the execution.
        throwable - The throwable to report.
      • executionFinished

        public void executionFinished​(Manager manager)
        React to the fact that execution is finished by unregistering as an execution listener and by allowing subsequent executions. This is called when an execution of the referenced model in another thread has finished and the wrapup sequence has completed normally. The number of successfully completed iterations can be obtained by calling getIterationCount() on the manager.
        Specified by:
        executionFinished in interface ExecutionListener
        Parameters:
        manager - The manager controlling the execution.
      • fire

        public void fire()
                  throws IllegalActionException
        Execute the filter model on each input array element until it gets as many elements as specified by the maxOutputLength parameter. If there are no enough elements satisfying the filter model, then only output all the satisfied elements. Before running the filter model, this method update the filter model's inputArrayElement parameter for each array element. After running the filter model, this method looks for the evaluatedValue parameter and keep the input element if the evaluated value is ture, otherwise, skip the element.
        Specified by:
        fire in interface Executable
        Overrides:
        fire in class AtomicActor<TypedIOPort>
        Throws:
        IllegalActionException - If there is no director, or if the director's action methods throw it.
      • managerStateChanged

        public void managerStateChanged​(Manager manager)
        Report in debugging statements that the manager state has changed. This method is called if the referenced model is executed in another thread and the manager changes state.
        Specified by:
        managerStateChanged in interface ExecutionListener
        Parameters:
        manager - The manager controlling the execution.
        See Also:
        Manager.getState()