⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 abstractmodeldigester.java

📁 一个java写的business process management系统
💻 JAVA
字号:
/*
 * Copyright (c) 2003-2004, Alexander Greif
 * All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 * 
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in the
 *       documentation and/or other materials provided with the distribution.
 *     * Neither the name of the Flow4J-Eclipse project nor the names of its
 *       contributors may be used to endorse or promote products derived from
 *       this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
 * THE POSSIBILITY OF SUCH DAMAGE.
 */

package net.orthanc.flow4j.model;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import net.orthanc.flow4j.model.bind.BendpointBind;
import net.orthanc.flow4j.model.bind.BooleanTransitionBind;
import net.orthanc.flow4j.model.bind.CallFlowletBind;
import net.orthanc.flow4j.model.bind.DecisionFlowletBind;
import net.orthanc.flow4j.model.bind.EndFlowletBind;
import net.orthanc.flow4j.model.bind.FlowModelBind;
import net.orthanc.flow4j.model.bind.IFlowletBind;
import net.orthanc.flow4j.model.bind.JavaTaskFlowletBind;
import net.orthanc.flow4j.model.bind.JoinFlowletBind;
import net.orthanc.flow4j.model.bind.JumpFlowletBind;
import net.orthanc.flow4j.model.bind.ScriptTaskFlowletBind;
import net.orthanc.flow4j.model.bind.StartFlowletBind;
import net.orthanc.flow4j.model.bind.TemplateFlowletBind;
import net.orthanc.flow4j.model.bind.TransitionBind;

/**
 * @author greifa
 *
 * To change the template for this generated type comment go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
public abstract class AbstractModelDigester {

	/**
	 * Map storing the flowlet id as key and the binding object as value
	 */
	private Map flowletId2BindObjMap = new HashMap();

	/**
	 * Digests all child elements of the root element
	 * @see net.orthanc.flow4j.model.IModelDigester#digest(net.orthanc.flow4j.model.bind.FlowModelBind)
	 */
	public void digest(FlowModelBind flowModelBind) {
		digestStartFlowlets(flowModelBind);
		digestJavaTaskFlowlets(flowModelBind);
		digestScriptTaskFlowlets(flowModelBind);
		digestDecisionFlowlets(flowModelBind);
		digestJoinFlowlets(flowModelBind);
		digestCallFlowlets(flowModelBind);
		digestJumpFlowlets(flowModelBind);
		digestTemplateFlowlets(flowModelBind);
		digestEndFlowlets(flowModelBind);

		digestTransitions(flowModelBind);
		digestBooleanTransitions(flowModelBind);

	}

	/**
	 * @param flowModelBind
	 */
	protected void digestStartFlowlets(FlowModelBind flowModelBind) {
		if (flowModelBind.getStartFlowlets() == null)
			return;
		for (Iterator iter = flowModelBind.getStartFlowlets().iterator();
			iter.hasNext();
			) {
			StartFlowletBind flowlet = (StartFlowletBind) iter.next();
			flowletId2BindObjMap.put(flowlet.getId(flowModelBind), flowlet);
			digestStartFlowlet(flowlet, flowModelBind);
		}
	}

	/**
	 * @param flowletBind
	 * @param flowModelBind
	 */
	protected void digestStartFlowlet(
		StartFlowletBind flowletBind,
		FlowModelBind flowModelBind) {
	}

	/**
	 * @param flowModelBind
	 */
	protected void digestJavaTaskFlowlets(FlowModelBind flowModelBind) {
		if (flowModelBind.getJavaTaskFlowlets() == null)
			return;
		for (Iterator iter = flowModelBind.getJavaTaskFlowlets().iterator();
			iter.hasNext();
			) {
			JavaTaskFlowletBind flowlet = (JavaTaskFlowletBind) iter.next();
			flowletId2BindObjMap.put(flowlet.getId(flowModelBind), flowlet);
			digestJavaTaskFlowlet(flowlet, flowModelBind);
		}
	}

	/**
	 * @param flowletBind
	 * @param flowModelBind
	 */
	protected void digestJavaTaskFlowlet(
		JavaTaskFlowletBind flowletBind,
		FlowModelBind flowModelBind) {
	}

	/**
	 * @param flowModelBind
	 */
	protected void digestScriptTaskFlowlets(FlowModelBind flowModelBind) {
		if (flowModelBind.getScriptTaskFlowlets() == null)
			return;
		for (Iterator iter = flowModelBind.getScriptTaskFlowlets().iterator();
			iter.hasNext();
			) {
			ScriptTaskFlowletBind flowlet = (ScriptTaskFlowletBind) iter.next();
			flowletId2BindObjMap.put(flowlet.getId(flowModelBind), flowlet);
			digestScriptTaskFlowlet(flowlet, flowModelBind);
		}
	}

	/**
	 * @param flowletBind
	 * @param flowModelBind
	 */
	protected void digestScriptTaskFlowlet(
		ScriptTaskFlowletBind flowletBind,
		FlowModelBind flowModelBind) {
	}

	/**
	 * @param flowModelBind
	 */
	protected void digestDecisionFlowlets(FlowModelBind flowModelBind) {
		if (flowModelBind.getDecisionFlowlets() == null)
			return;
		for (Iterator iter = flowModelBind.getDecisionFlowlets().iterator();
			iter.hasNext();
			) {
			DecisionFlowletBind flowlet = (DecisionFlowletBind) iter.next();
			flowletId2BindObjMap.put(flowlet.getId(flowModelBind), flowlet);
			digestDecisionFlowlet(flowlet, flowModelBind);
		}
	}

	/**
	 * @param flowletBind
	 * @param flowModelBind
	 */
	protected void digestDecisionFlowlet(
		DecisionFlowletBind flowletBind,
		FlowModelBind flowModelBind) {
	}

	/**
	 * @param flowModelBind
	 */
	protected void digestJoinFlowlets(FlowModelBind flowModelBind) {
		if (flowModelBind.getJoinFlowlets() == null)
			return;
		for (Iterator iter = flowModelBind.getJoinFlowlets().iterator();
			iter.hasNext();
			) {
			JoinFlowletBind flowlet = (JoinFlowletBind) iter.next();
			flowletId2BindObjMap.put(flowlet.getId(flowModelBind), flowlet);
			digestJoinFlowlet(flowlet, flowModelBind);
		}
	}

	/**
	 * @param flowletBind
	 * @param flowModelBind
	 */
	protected void digestJoinFlowlet(
		JoinFlowletBind flowletBind,
		FlowModelBind flowModelBind) {
	}

	/**
	 * @param flowModelBind
	 */
	protected void digestCallFlowlets(FlowModelBind flowModelBind) {
		if (flowModelBind.getCallFlowlets() == null)
			return;
		for (Iterator iter = flowModelBind.getCallFlowlets().iterator();
			iter.hasNext();
			) {
			CallFlowletBind flowlet = (CallFlowletBind) iter.next();
			flowletId2BindObjMap.put(flowlet.getId(flowModelBind), flowlet);
			digestCallFlowlet(flowlet, flowModelBind);
		}
	}

	/**
	 * @param flowletBind
	 * @param flowModelBind
	 */
	protected void digestCallFlowlet(
		CallFlowletBind flowletBind,
		FlowModelBind flowModelBind) {
	}

	/**
	 * @param flowModelBind
	 */
	protected void digestJumpFlowlets(FlowModelBind flowModelBind) {
		if (flowModelBind.getJumpFlowlets() == null)
			return;
		for (Iterator iter = flowModelBind.getJumpFlowlets().iterator();
			iter.hasNext();
			) {
			JumpFlowletBind flowlet = (JumpFlowletBind) iter.next();
			flowletId2BindObjMap.put(flowlet.getId(flowModelBind), flowlet);
			digestJumpFlowlet(flowlet, flowModelBind);
		}
	}

	/**
	 * @param flowletBind
	 * @param flowModelBind
	 */
	protected void digestJumpFlowlet(
		JumpFlowletBind flowletBind,
		FlowModelBind flowModelBind) {
	}

	/**
	 * @param flowModelBind
	 */
	protected void digestTemplateFlowlets(FlowModelBind flowModelBind) {
		if (flowModelBind.getTemplateFlowlets() == null)
			return;
		for (Iterator iter = flowModelBind.getTemplateFlowlets().iterator();
			iter.hasNext();
			) {
			TemplateFlowletBind flowlet = (TemplateFlowletBind) iter.next();
			flowletId2BindObjMap.put(flowlet.getId(flowModelBind), flowlet);
			digestTemplateFlowlet(flowlet, flowModelBind);
		}
	}

	/**
	 * @param flowletBind
	 * @param flowModelBind
	 */
	protected void digestTemplateFlowlet(
		TemplateFlowletBind flowletBind,
		FlowModelBind flowModelBind) {
	}

	/**
	 * @param flowModelBind
	 */
	protected void digestEndFlowlets(FlowModelBind flowModelBind) {
		if (flowModelBind.getEndFlowlets() == null)
			return;
		for (Iterator iter = flowModelBind.getEndFlowlets().iterator();
			iter.hasNext();
			) {
			EndFlowletBind flowlet = (EndFlowletBind) iter.next();
			flowletId2BindObjMap.put(flowlet.getId(flowModelBind), flowlet);
			digestEndFlowlet(flowlet, flowModelBind);
		}
	}

	/**
	 * @param flowletBind
	 * @param flowModelBind
	 */
	protected void digestEndFlowlet(
		EndFlowletBind flowletBind,
		FlowModelBind flowModelBind) {
	}

	/**
	 * @param flowModelBind
	 */
	protected void digestTransitions(FlowModelBind flowModelBind) {
		if (flowModelBind.getTransitions() == null)
			return;
		for (Iterator iter = flowModelBind.getTransitions().iterator();
			iter.hasNext();
			) {
			TransitionBind transition = (TransitionBind) iter.next();
			IFlowletBind sourceFlowlet =
				(IFlowletBind) flowletId2BindObjMap.get(transition.getSourceId());
			IFlowletBind targetFlowlet =
				(IFlowletBind) flowletId2BindObjMap.get(transition.getTargetId());
			digestTransition(
				transition,
				sourceFlowlet,
				targetFlowlet,
				flowModelBind);
		}
	}

	/**
	 * @param flowletBind
	 * @param flowModelBind
	 */
	protected void digestTransition(
		TransitionBind transitionBind,
		IFlowletBind sourceFlowletBind,
		IFlowletBind targetFlowletBind,
		FlowModelBind flowModelBind) {
		
		//	null if the flow file was just created by the wizard
		if (transitionBind.getBendpoints() == null)
			return;
		
		for (Iterator iter = transitionBind.getBendpoints().iterator();
			iter.hasNext();
			) {
			BendpointBind bendpoint = (BendpointBind) iter.next();
			digestBendpoint(
				transitionBind,
				sourceFlowletBind,
				targetFlowletBind,
				bendpoint,
				flowModelBind);
		}
	}

	/**
	 * @param flowModelBind
	 */
	protected void digestBooleanTransitions(FlowModelBind flowModelBind) {
		if (flowModelBind.getBooleanTransitions() == null)
			return;
		for (Iterator iter = flowModelBind.getBooleanTransitions().iterator();
			iter.hasNext();
			) {
			BooleanTransitionBind transition =
				(BooleanTransitionBind) iter.next();
				IFlowletBind sourceFlowlet =
					(IFlowletBind) flowletId2BindObjMap.get(transition.getSourceId());
				IFlowletBind targetFlowlet =
					(IFlowletBind) flowletId2BindObjMap.get(transition.getTargetId());
				digestBooleanTransition(
					transition,
					sourceFlowlet,
					targetFlowlet,
					flowModelBind);
		}
	}

	/**
	 * @param flowletBind
	 * @param flowModelBind
	 */
	protected void digestBooleanTransition(
		BooleanTransitionBind transitionBind,
		IFlowletBind sourceFlowletBind,
		IFlowletBind targetFlowletBind,
		FlowModelBind flowModelBind) {

			//	null if the flow file was just created by the wizard
			if (transitionBind.getBendpoints() == null)
				return;
		
			for (Iterator iter = transitionBind.getBendpoints().iterator();
				iter.hasNext();
				) {
				BendpointBind bendpoint = (BendpointBind) iter.next();
				digestBendpoint(
					transitionBind,
					sourceFlowletBind,
					targetFlowletBind,
					bendpoint,
					flowModelBind);
			}
	}
	
	protected void digestBendpoint(
		TransitionBind transitionBind,
		IFlowletBind sourceFlowletBind,
		IFlowletBind targetFlowletBind,
		BendpointBind bendpointBind,
		FlowModelBind flowModelBind) {
	
	}




}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -