示例#1
0
  /**
   * Specify the container, adding the entity to the list of entities in the container. If the
   * container already contains an entity with the same name, then throw an exception and do not
   * make any changes. Similarly, if the container is not in the same workspace as this entity,
   * throw an exception. If this entity is a class element and the proposed container does not match
   * the current container, then also throw an exception. If the entity is already contained by the
   * container, do nothing. If this entity already has a container, remove it from that container
   * first. Otherwise, remove it from the directory of the workspace, if it is present. If the
   * argument is null, then unlink the ports of the entity from any relations and remove it from its
   * container. It is not added to the workspace directory, so this could result in this entity
   * being garbage collected. Derived classes may further constrain the container to subclasses of
   * CompositeEntity by overriding the protected method _checkContainer(). This method validates all
   * deeply contained instances of Settable, since they may no longer be valid in the new context.
   * This method is write-synchronized to the workspace and increments its version number.
   *
   * @param container The proposed container.
   * @exception IllegalActionException If the action would result in a recursive containment
   *     structure, or if this entity and container are not in the same workspace, or if the
   *     protected method _checkContainer() throws it, or if a contained Settable becomes invalid
   *     and the error handler throws it.
   * @exception NameDuplicationException If the name of this entity collides with a name already in
   *     the container.
   * @see #getContainer()
   */
  public void setContainer(CompositeEntity container)
      throws IllegalActionException, NameDuplicationException {
    super.setContainer(container);

    if (container != null && directory != null) {
      directory.setBaseDirectory(URIAttribute.getModelURI(container));
    }
  }
示例#2
0
 /**
  * Get the tableau to be used by the event that requires a tableau in its actions.
  *
  * @param event The event.
  * @param referredTableau The parameter that contains the name of the TableauParameter to be used,
  *     if not empty.
  * @param defaultTableau The default TableauParameter to be used.
  * @return The tableau.
  * @exception IllegalActionException If the tableau cannot be retrieved.
  * @see #setTableau(Event, StringParameter, TableauParameter, Tableau)
  */
 public static Tableau getTableau(
     Event event, StringParameter referredTableau, TableauParameter defaultTableau)
     throws IllegalActionException {
   TableauParameter parameter = getTableauParameter(event, referredTableau, defaultTableau);
   if (parameter == null) {
     throw new IllegalActionException(
         "referredTableau has not been " + "specified in " + event.getName() + ".");
   }
   Tableau tableau = (Tableau) ((ObjectToken) parameter.getToken()).getValue();
   return tableau;
 }
 /**
  * Invoked when an event is inserted into the event queue.
  *
  * @param position The position at which the event is inserted.
  * @param time The time at which the event is scheduled to fire.
  * @param event The event.
  * @param arguments Arguments to the event, which must be either an ArrayToken or a RecordToken,
  *     or null.
  */
 @Override
 public void insertEvent(int position, Time time, Event event, Token arguments) {
   try {
     boolean isActive = ((BooleanToken) active.getToken()).booleanValue();
     if (isActive) {
       System.out.println(
           "Schedule " + event.getName() + " at " + time + " at position " + position);
     }
   } catch (IllegalActionException e) {
     System.out.println(e.getMessage());
   }
 }