/*******************************************************************************
 * Copyright (c) 2006 Oracle Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     Oracle Corporation - initial API and implementation
 *******************************************************************************/
package org.eclipse.bpel.validator.rules;

import org.eclipse.bpel.validator.model.Filters;





/**
 * Validates Empty nodes.
 * 
 *  
 * @author Michal Chmielewski (michal.chmielewski@oracle.com)
 * @date Sep 14, 2006
 *
 */


public class ForEachValidator extends CActivityValidator {
			
	
	protected String fCounterName;
	protected String fParallel;

	/**(non-Javadoc)
	 * @see org.eclipse.bpel.validator.rules.CActivityValidator#start()
	 */
	
	@Override
	protected void start () {
		super.start();
	}
	
	/**
	 * Check parallel attribute values
	 *
	 */
	
	public void rule_CheckParallel_1 () {
		fParallel = getAttribute(mNode, 
				AT_PARALLEL, 
				KIND_ACTIVITY, 
				Filters.BOOLEAN_FILTER, 
				true);
		
		if (isEmpty(fParallel)) {
			fParallel = NO;
		}
	}
	
	/**
	 * Check the name of the counter variable, to make sure it's a valid NCName
	 */
	
	public void rule_CheckCounterName_2 () {
		
		fCounterName = mNode.getAttribute(AT_COUNTER_NAME);
		
		checkNCName(mNode, fCounterName, AT_COUNTER_NAME);
		
	}
	
	
	
	/**
	 * @see org.eclipse.bpel.validator.rules.CActivityValidator#checkChildren()
	 */
	@Override
	public void checkChildren () {
		
		super.checkChildren();
		
		checkChild(ND_START_COUNTER_VALUE,   1,1);
		checkChild(ND_FINAL_COUNTER_VALUE,   1,1);
		checkChild(ND_COMPLETION_CONDITION,  0,1);		
		checkChild(ND_SCOPE, 1,1);		
	}
	
	
	
	/** End of public rule methods.
	 * 
	 * Other methods are support methods for this class to perform its
	 * validation function.
	 * 
	 */

}
