//----------------------------BEGIN LICENSE----------------------------
/*
* Willow : the Open Source WorkFlow Project
* Distributable under GNU LGPL license by gun.org
*
* Copyright (C) 2004-2010 huihoo.org
* Copyright (C) 2004-2010 ZosaTapo <dertyang@hotmail.com>
*
* ====================================================================
* Project Homepage : http://www.huihoo.org/willow
* Source Forge : http://sourceforge.net/projects/huihoo
* Mailing list : willow@lists.sourceforge.net
*/
//----------------------------END LICENSE-----------------------------
package org.huihoo.workflow.impl.runtime;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.List;
import java.util.Vector;
import org.huihoo.workflow.usermodel.WorkflowParticipant;
import org.huihoo.workflow.runtime.WorkflowCase;
import org.huihoo.workflow.runtime.WorkflowCaseContext;
import org.huihoo.workflow.xpdl.WorkflowParameter;
import org.huihoo.workflow.xpdl.WorkflowTransition;
/**
* @author zosatapo
*
* To change the template for this generated type comment go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
public class CaseContextImpl implements WorkflowCaseContext
{
private Hashtable parameters=new Hashtable();
private Hashtable attributes=new Hashtable();
private Hashtable performers=new Hashtable();
private WorkflowCase workflowCase;
public CaseContextImpl(WorkflowCase workflowCase_,List initParams)
{
this.workflowCase=workflowCase_;
fillParameters(initParams);
}
public WorkflowParameter getParameterByName(String name)
{
if(name ==null)
{
return null;
}
Enumeration enum=parameters.elements();
while(enum.hasMoreElements())
{
WorkflowParameter param=(WorkflowParameter)enum.nextElement();
if(name.equals(param.getName()))
{
return param;
}
}
return null;
}
public WorkflowParameter getParameterByID(String uuid)
{
if(uuid ==null)
{
return null;
}
return (WorkflowParameter)parameters.get(uuid);
}
public Enumeration getParameterNames()
{
return parameters.keys();
}
public Object getAttribute(String name)
{
return attributes.get(name);
}
public void setAttribute(String name,Object obj)
{
attributes.put(name,obj);
}
public Object removeAttribute(String name)
{
return attributes.remove(name);
}
public Enumeration getAttributeNames()
{
return attributes.keys();
}
public WorkflowCase getWorkflowCase()
{
return workflowCase;
}
public List getPerformersByTransition(WorkflowTransition workflowTransition)
{
Vector vecPerformer=(Vector)performers.get(workflowTransition);
List users=new ArrayList();
if(vecPerformer==null)
{
return users;
}
else
{
int sizePerformer=vecPerformer.size();
for(int i=0;i<sizePerformer;++i)
{
users.add(vecPerformer.elementAt(i));
}
//release resources
vecPerformer.clear();
performers.remove(workflowTransition);
return users;
}
}
public void setPerformersByTransition(WorkflowTransition workflowTransition,WorkflowParticipant[] workflowUsers)
{
if(workflowUsers==null)
{
return;
}
Vector vecPerformer=new Vector();
for(int i=0;i<workflowUsers.length;++i)
{
vecPerformer.addElement(workflowUsers[i]);
}
performers.put(workflowTransition,vecPerformer);
}
private void fillParameters(List paramList)
{
if(paramList==null)
{
return;
}
int sizeParam=paramList.size();
WorkflowParameter parameter=null;
for(int i=0;i<sizeParam;++i)
{
parameter=(WorkflowParameter)paramList.get(i);
parameters.put(parameter.getUUID(),parameter);
}
}
}