001    /*
002     * Copyright 1999-2001,2004 The Apache Software Foundation.
003     * 
004     * Licensed under the Apache License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     * 
008     *      http://www.apache.org/licenses/LICENSE-2.0
009     * 
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */ 
016    
017    package org.apache.commons.workflow;
018    
019    
020    /**
021     * <p><strong>BlockState</strong> represents the current dynamic execution
022     * state of a <code>Block</code> that is executing nested <code>Steps</code>.
023     * This class will serve for most <code>Block</code> implementations, but
024     * may be subclassed for <code>Blocks</code> with a requirement to maintain
025     * additional state information (such as a "for" loop that needs to keep
026     * track of the starting and ending indexes, and the iteration counter).</p>
027     *
028     * @author Craig R. McClanahan
029     * @version $Revision: 155475 $ $Date: 2005-02-26 13:31:11 +0000 (Sat, 26 Feb 2005) $
030     */
031    
032    public class BlockState {
033    
034    
035        // ----------------------------------------------------------- Constructors
036    
037    
038        /**
039         * Construct a new <code>BlockState</code> instance, associated with the
040         * specified <code>block</code>, and with the specified initial value
041         * for the <code>nest</code> property.
042         *
043         * @param block The <code>block</code> whose state this object represents
044         * @param nest The initial state of the <code>nest</code> property
045         */
046        public BlockState(Block block, boolean nest) {
047    
048            super();
049            this.block = block;
050            this.nest = nest;
051    
052        }
053    
054    
055        // ------------------------------------------------------------- Properties
056    
057    
058        /**
059         * The <code>Block</code> whose state is represented by this object.
060         */
061        protected Block block = null;
062    
063        public Block getBlock() {
064            return (this.block);
065        }
066    
067    
068        /**
069         * Should we execute the nested <code>Steps</code> of this
070         * <code>Block</code> again when the current execution finishes?
071         */
072        protected boolean nest = false;
073    
074        public boolean getNest() {
075            return (this.nest);
076        }
077    
078        public void setNest(boolean nest) {
079            this.nest = nest;
080        }
081    
082    
083        // --------------------------------------------------------- Public Methods
084    
085    
086        /**
087         * Render a String version of this object.
088         */
089        public String toString() {
090    
091            StringBuffer sb = new StringBuffer("BlockState[block=");
092            sb.append(block);
093            sb.append(", nest=");
094            sb.append(nest);
095            sb.append("]");
096            return (sb.toString());
097    
098        }
099    
100    }