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