    001    /*
    002     * Licensed to the Apache Software Foundation (ASF) under one or more
    003     * contributor license agreements.  See the NOTICE file distributed with
    004     * this work for additional information regarding copyright ownership.
    005     * The ASF licenses this file to You under the Apache License, Version 2.0
    006     * (the "License"); you may not use this file except in compliance with
    007     * the License.  You may obtain a copy of the License at
    008     *
    009     *     http://www.apache.org/licenses/LICENSE-2.0
    010     *
    011     * Unless required by applicable law or agreed to in writing, software
    012     * distributed under the License is distributed on an "AS IS" BASIS,
    013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    014     * See the License for the specific language governing permissions and
    015     * limitations under the License.
    016     */
    017    package org.apache.commons.scxml;
    018
    019    import java.util.ArrayList;
    020    import java.util.Collection;
    021    import java.util.List;
    022
    023    /**
    024     * A logical unit of progression in the execution of a SCXML model.
    025     *
    026     */
    027    public class Step {
    028
    029        /**
    030         * Constructor.
    031          */
    032        public Step() {
    033            this.externalEvents = new ArrayList();
    034            this.beforeStatus = new Status();
    035            this.afterStatus = new Status();
    036            this.exitList = new ArrayList();
    037            this.entryList = new ArrayList();
    038            this.transitList = new ArrayList();
    039        }
    040
    041        /**
    042         * @param externalEvents The external events received in this
    043         *     unit of progression
    044         * @param beforeStatus The before status
    045         */
    046        public Step(final Collection externalEvents, final Status beforeStatus) {
    047            if (externalEvents != null) {
    048                this.externalEvents = externalEvents;
    049            } else {
    050                this.externalEvents = new ArrayList();
    051            }
    052            if (beforeStatus != null) {
    053                this.beforeStatus = beforeStatus;
    054            } else {
    055                this.beforeStatus = new Status();
    056            }
    057            this.afterStatus = new Status();
    058            this.exitList = new ArrayList();
    059            this.entryList = new ArrayList();
    060            this.transitList = new ArrayList();
    061        }
    062
    063        /**
    064         * The external events in this step.
    065         */
    066        private Collection externalEvents;
    067
    068        /**
    069         * The status before this step.
    070         */
    071        private Status beforeStatus;
    072
    073        /**
    074         * The status after this step.
    075         */
    076        private Status afterStatus;
    077
    078        /**
    079         * The list of TransitionTargets that were exited during this step.
    080         */
    081        private List exitList;
    082
    083        /**
    084         * The list of TransitionTargets that were entered during this step.
    085         */
    086        private List entryList;
    087
    088        /**
    089         * The list of Transitions taken during this step.
    090         */
    091        private List transitList;
    092
    093        /**
    094         * @return Returns the afterStatus.
    095         */
    096        public Status getAfterStatus() {
    097            return afterStatus;
    098        }
    099
    100        /**
    101         * @param afterStatus The afterStatus to set.
    102         */
    103        public void setAfterStatus(final Status afterStatus) {
    104            this.afterStatus = afterStatus;
    105        }
    106
    107        /**
    108         * @return Returns the beforeStatus.
    109         */
    110        public Status getBeforeStatus() {
    111            return beforeStatus;
    112        }
    113
    114        /**
    115         * @param beforeStatus The beforeStatus to set.
    116         */
    117        public void setBeforeStatus(final Status beforeStatus) {
    118            this.beforeStatus = beforeStatus;
    119        }
    120
    121        /**
    122         * @return Returns the entryList.
    123         */
    124        public List getEntryList() {
    125            return entryList;
    126        }
    127
    128        /**
    129         * @return Returns the exitList.
    130         */
    131        public List getExitList() {
    132            return exitList;
    133        }
    134
    135        /**
    136         * @return Returns the externalEvents.
    137         */
    138        public Collection getExternalEvents() {
    139            return externalEvents;
    140        }
    141
    142        /**
    143         * @return Returns the transitList.
    144         */
    145        public List getTransitList() {
    146            return transitList;
    147        }
    148
    149    }
    150