View Javadoc

    1   /*
    2    *
    3    *   Copyright 2005-2006 The Apache Software Foundation.
    4    *
    5    *  Licensed under the Apache License, Version 2.0 (the "License");
    6    *  you may not use this file except in compliance with the License.
    7    *  You may obtain a copy of the License at
    8    *
    9    *      http://www.apache.org/licenses/LICENSE-2.0
    10   *
    11   *  Unless required by applicable law or agreed to in writing, software
    12   *  distributed under the License is distributed on an "AS IS" BASIS,
    13   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14   *  See the License for the specific language governing permissions and
    15   *  limitations under the License.
    16   *
    17   */
    18  package org.apache.commons.scxml.model;
    19
    20  /***
    21   * An abstract base class for elements in SCXML that can serve as a
    22   * &lt;target&gt; for a &lt;transition&gt;, such as State or Parallel.
    23   *
    24   */
    25  public abstract class TransitionTarget {
    26
    27      /***
    28       * Identifier for this transition target. Other parts of the SCXML
    29       * document may refer to this &lt;state&gt; using this ID.
    30       */
    31      private String id;
    32
    33      /***
    34       * Optional property holding executable content to be run upon
    35       * entering this transition target.
    36       */
    37      private OnEntry onEntry;
    38
    39      /***
    40       * Optional property holding executable content to be run upon
    41       * exiting this transition target.
    42       */
    43      private OnExit onExit;
    44
    45      /***
    46       * Optional property holding the data model for this transition target.
    47       */
    48      private Datamodel datamodel;
    49
    50      /***
    51       * The parent of this transition target (may be null, if the parent
    52       * is the SCXML document root).
    53       */
    54      private TransitionTarget parent;
    55
    56      /***
    57       * Constructor.
    58       */
    59      public TransitionTarget() {
    60          super();
    61          onEntry = new OnEntry(); //empty defaults
    62          onEntry.setParent(this);
    63          onExit = new OnExit();   //empty defaults
    64          onExit.setParent(this);
    65          parent = null;
    66      }
    67
    68      /***
    69       * Get the identifier for this transition target (may be null).
    70       *
    71       * @return Returns the id.
    72       */
    73      public final String getId() {
    74          return id;
    75      }
    76
    77      /***
    78       * Set the identifier for this transition target.
    79       *
    80       * @param id The id to set.
    81       */
    82      public final void setId(final String id) {
    83          this.id = id;
    84      }
    85
    86      /***
    87       * Get the onentry property.
    88       *
    89       * @return Returns the onEntry.
    90       */
    91      public final OnEntry getOnEntry() {
    92          return onEntry;
    93      }
    94
    95      /***
    96       * Set the onentry property.
    97       *
    98       * @param onEntry The onEntry to set.
    99       */
    100     public final void setOnEntry(final OnEntry onEntry) {
    101         this.onEntry = onEntry;
    102     }
    103
    104     /***
    105      * Get the onexit property.
    106      *
    107      * @return Returns the onExit.
    108      */
    109     public final OnExit getOnExit() {
    110         return onExit;
    111     }
    112
    113     /***
    114      * Set the onexit property.
    115      *
    116      * @param onExit The onExit to set.
    117      */
    118     public final void setOnExit(final OnExit onExit) {
    119         this.onExit = onExit;
    120     }
    121
    122     /***
    123      * Get the data model for this transition target.
    124      *
    125      * @return Returns the data model.
    126      */
    127     public final Datamodel getDatamodel() {
    128         return datamodel;
    129     }
    130
    131     /***
    132      * Set the data model for this transition target.
    133      *
    134      * @param datamodel The Datamodel to set.
    135      */
    136     public final void setDatamodel(final Datamodel datamodel) {
    137         this.datamodel = datamodel;
    138     }
    139
    140     /***
    141      * Get the parent TransitionTarget.
    142      *
    143      * @return Returns the parent state
    144      * (null if parent is &lt;scxml&gt; element)
    145      */
    146     public final TransitionTarget getParent() {
    147         return parent;
    148     }
    149
    150     /***
    151      * Set the parent TransitionTarget.
    152      *
    153      * @param parent The parent state to set
    154      */
    155     public final void setParent(final TransitionTarget parent) {
    156         this.parent = parent;
    157     }
    158
    159     /***
    160      * Get the parent State.
    161      *
    162      * @return The parent State
    163      */
    164     public final State getParentState() {
    165         TransitionTarget tt = this.getParent();
    166         if (tt == null) {
    167             return null;
    168         } else {
    169             if (tt instanceof State) {
    170                 return (State) tt;
    171             } else { //tt is Parallel
    172                 return tt.getParentState();
    173             }
    174         }
    175     }
    176
    177 }
    178