//----------------------------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.xpdl;
import java.util.ArrayList;
import java.util.List;
import org.huihoo.workflow.ComplexComponentObject;
import org.huihoo.workflow.xpdl.ExtendedAttribute;
import org.huihoo.workflow.xpdl.WorkflowApplication;
import org.huihoo.workflow.xpdl.WorkflowPackage;
import org.huihoo.workflow.xpdl.WorkflowPackageHeader;
import org.huihoo.workflow.xpdl.WorkflowParameter;
import org.huihoo.workflow.xpdl.WorkflowProcess;
import org.huihoo.workflow.xpdl.WorkflowScript;
import org.huihoo.workflow.xpdl.XPDLGlobals;
/**
* @author zosatapo
*
* To change the template for this generated type comment go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
public class WorkflowPackageImpl extends ComplexComponentObject implements WorkflowPackage
{
private WorkflowScript script;
private WorkflowPackageHeader packageHeader = null;
private List applications = new ArrayList();
private List parameters = new ArrayList();
private List processes = new ArrayList();
public WorkflowPackageImpl()
{
super();
}
public WorkflowPackageImpl(String uuid,String name)
{
super(uuid,name);
}
public WorkflowPackageImpl(String uuid,String name,String description)
{
super(uuid,name,description);
}
public WorkflowPackageHeader getPackageHeader()
{
return (this.packageHeader);
}
public void setPackageHeader(WorkflowPackageHeader packageHeader)
{
this.packageHeader = packageHeader;
}
public List getWorkflowApplications()
{
return (this.applications);
}
public WorkflowApplication findWorkflowApplication(String appId)
{
if(appId == null)
{
return null;
}
int sizeApp = applications.size();
for (int i = 0; i < sizeApp; ++i)
{
WorkflowApplication app= (WorkflowApplication) applications.get(i);
if (appId.equals(app.getUUID()))
{
return app;
}
}
return null;
}
public WorkflowApplication findWorkflowApplication(String appNameOrID,boolean isID)
{
if(appNameOrID == null)
{
return null;
}
if(isID)
{
return findWorkflowApplication(appNameOrID);
}
int sizeApp = applications.size();
for (int i = 0; i < sizeApp; ++i)
{
WorkflowApplication app= (WorkflowApplication) applications.get(i);
if (appNameOrID.equals(app.getName()))
{
return app;
}
}
return null;
}
public List getWorkflowParameters()
{
return (this.parameters);
}
public WorkflowParameter findWorkflowParameter(String paramId)
{
if(paramId == null)
{
return null;
}
int sizeParam = parameters.size();
for (int i = 0; i < sizeParam; ++i)
{
WorkflowParameter parameter = (WorkflowParameter) parameters.get(i);
if (paramId.equals(parameter.getUUID()))
{
return parameter;
}
}
return null;
}
public WorkflowParameter findWorkflowParameter(String paramNameOrID,boolean isID)
{
if(paramNameOrID == null)
{
return null;
}
if(isID)
{
return findWorkflowParameter(paramNameOrID);
}
int sizeParam = parameters.size();
for (int i = 0; i < sizeParam; ++i)
{
WorkflowParameter parameter = (WorkflowParameter) parameters.get(i);
if (paramNameOrID.equals(parameter.getName()))
{
return parameter;
}
}
return null;
}
public List getWorkflowProcesses()
{
return (this.processes);
}
public WorkflowProcess findWorkflowProcess(String processId)
{
if(processId == null)
{
return null;
}
int sizeProcess = processes.size();
for (int i = 0; i < sizeProcess; ++i)
{
WorkflowProcess workflowProcess = (WorkflowProcess) processes.get(i);
if (processId.equals(workflowProcess.getUUID()))
{
return workflowProcess;
}
}
return null;
}
public WorkflowProcess findWorkflowProcess(String processNameOrID,boolean isID)
{
if(processNameOrID == null)
{
return null;
}
if(isID)
{
return findWorkflowProcess(processNameOrID);
}
int sizeProcess = processes.size();
WorkflowProcess workflowProcess = null;
for (int i = 0; i < sizeProcess; ++i)
{
workflowProcess = (WorkflowProcess) processes.get(i);
if (processNameOrID.equals(workflowProcess.getName()))
{
return workflowProcess;
}
}
return null;
}
public WorkflowScript getWorkflowScript()
{
return (this.script);
}
public void setWorkflowScript(WorkflowScript script_)
{
this.script = script_;
}
//--------------------------------------------------------------------
public void addWorkflowProcess(WorkflowProcess workflowProcess)
{
if(processes.contains(workflowProcess))
{
return;
}
workflowProcess.setWorkflowPackage(this);
this.processes.add(workflowProcess);
}
public WorkflowProcess removeWorkflowProcess(WorkflowProcess workflowProcess)
{
if(!processes.contains(workflowProcess))
{
return null;
}
this.processes.remove(workflowProcess);
workflowProcess.setWorkflowPackage(null);
return workflowProcess;
}
public void addWorkflowParameter(WorkflowParameter initParameter)
{
if(parameters.contains(initParameter))
{
return;
}
this.parameters.add(initParameter);
}
public WorkflowParameter removeWorkflowParameter(WorkflowParameter initParameter)
{
if(!parameters.contains(initParameter))
{
return null;
}
this.parameters.remove(initParameter);
return initParameter;
}
public void addWorkflowApplication(WorkflowApplication application)
{
if(applications.contains(application))
{
return;
}
this.applications.add(application);
}
public WorkflowApplication removeWorkflowApplication(WorkflowApplication application)
{
if(!applications.contains(application))
{
return null;
}
this.applications.remove(application);
return application;
}
public WorkflowProcess getMainProcess()
{
ExtendedAttribute attribute =findExtendedAttribute(XPDLGlobals.ID_PROCESS_MAIN);
if(attribute==null)
{
return null;
}
String mainProcessId= attribute.getValue();
return findWorkflowProcess(mainProcessId);
}
public String getInfo()
{
if(getName()!=null)
{
return "package_name="+getName();
}
else
{
return "package_id="+uuid;
}
}
public String getTagName()
{
return "Package";
}
}