
org.ow2.bonita.services.impl.QuerierChainer Maven / Gradle / Ivy
The newest version!
/**
* Copyright (C) 2007 Bull S. A. S.
* Bull, Rue Jean Jaures, B.P.68, 78340, Les Clayes-sous-Bois
* This library is free software; you can redistribute it and/or modify it under the terms
* of the GNU Lesser General Public License as published by the Free Software Foundation
* version 2.1 of the License.
* This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public License along with this
* program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
* Floor, Boston, MA 02110-1301, USA.
**/
package org.ow2.bonita.services.impl;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.ow2.bonita.facade.def.majorElement.ActivityDefinition;
import org.ow2.bonita.facade.def.majorElement.ProcessDefinition;
import org.ow2.bonita.facade.def.majorElement.ProcessFullDefinition;
import org.ow2.bonita.facade.runtime.ActivityBody;
import org.ow2.bonita.facade.runtime.ActivityFullInstance;
import org.ow2.bonita.facade.runtime.ActivityState;
import org.ow2.bonita.facade.runtime.ProcessFullInstance;
import org.ow2.bonita.facade.runtime.TaskInstance;
import org.ow2.bonita.facade.uuid.ActivityDefinitionUUID;
import org.ow2.bonita.facade.uuid.ActivityInstanceUUID;
import org.ow2.bonita.facade.uuid.ProcessDefinitionUUID;
import org.ow2.bonita.facade.uuid.ProcessInstanceUUID;
import org.ow2.bonita.facade.uuid.TaskUUID;
import org.ow2.bonita.services.Querier;
import org.ow2.bonita.util.Misc;
/**
* @author Guillaume Porcher
*
* Chainer for Queriers :
* - for methods that returns only one object, search for the first matching object
* - for methods that returns a collection: search for all objects in all return queriers.
*/
public class QuerierChainer implements Querier {
private List queriers;
public QuerierChainer(List queriers) {
this.queriers = queriers;
}
public ProcessFullInstance getProcessInstance(ProcessInstanceUUID instanceUUID) {
for (Querier querier : queriers) {
ProcessFullInstance processInst = querier.getProcessInstance(instanceUUID);
if (processInst != null) {
return processInst;
}
}
return null;
}
public Set getProcessInstances() {
Set processInsts = new HashSet();
for (Querier querier : queriers) {
Set tmp = querier.getProcessInstances();
if (tmp != null && !tmp.isEmpty()) {
processInsts.addAll(tmp);
}
}
return processInsts;
}
public Set getProcessInstances(
Collection instanceUUIDs) {
Set processInsts = new HashSet();
for (Querier querier : queriers) {
Set tmp = querier.getProcessInstances(instanceUUIDs);
if (tmp != null && !tmp.isEmpty()) {
processInsts.addAll(tmp);
}
}
return processInsts;
}
public Set getProcessInstancesWithTaskState(Collection acitivtyStates) {
Set processInsts = new HashSet();
for (Querier querier : queriers) {
Set tmp = querier.getProcessInstancesWithTaskState(acitivtyStates);
if (tmp != null && !tmp.isEmpty()) {
processInsts.addAll(tmp);
}
}
return processInsts;
}
public Set getProcessInstances(ProcessDefinitionUUID processUUI) {
Set processInsts = new HashSet();
for (Querier querier : queriers) {
processInsts.addAll(querier.getProcessInstances(processUUI));
}
return processInsts;
}
public ActivityFullInstance getActivityInstance(ProcessInstanceUUID instanceUUID,
String activityId, String iterationId, String activityInstanceId) {
for (Querier querier : queriers) {
ActivityFullInstance activityInst =
querier.getActivityInstance(instanceUUID, activityId, iterationId, activityInstanceId);
if (activityInst != null) {
return activityInst;
}
}
return null;
}
public Set> getActivityInstances(ProcessInstanceUUID instanceUUID) {
Set> activityInsts = new HashSet>();
for (Querier querier : queriers) {
activityInsts.addAll(querier.getActivityInstances(instanceUUID));
}
return activityInsts;
}
public ActivityFullInstance< TaskInstance > getTaskInstance(TaskUUID taskUUID) {
for (Querier querier : queriers) {
ActivityFullInstance< TaskInstance > activity = querier.getTaskInstance(taskUUID);
if (activity != null) {
return activity;
}
}
return null;
}
public Set getProcesses() {
Set processes = new HashSet();
for (Querier querier : queriers) {
Set querierProcesses = querier.getProcesses();
if (querierProcesses != null && !querierProcesses.isEmpty()) {
processes.addAll(querierProcesses);
}
}
return processes;
}
public Set getProcesses(String processId) {
Set processes = new HashSet();
for (Querier querier : queriers) {
Set querierProcesses = querier.getProcesses(processId);
if (querierProcesses != null && !querierProcesses.isEmpty()) {
processes.addAll(querierProcesses);
}
}
return processes;
}
public Set getProcesses(ProcessDefinition.ProcessState processState) {
Set processes = new HashSet();
for (Querier querier : queriers) {
Set querierProcesses = querier.getProcesses(processState);
if (querierProcesses != null && !querierProcesses.isEmpty()) {
processes.addAll(querierProcesses);
}
}
return processes;
}
public Set getProcesses(String processId, ProcessDefinition.ProcessState processState) {
Set processes = new HashSet();
for (Querier querier : queriers) {
Set querierProcesses = querier.getProcesses(processId, processState);
if (querierProcesses != null && !querierProcesses.isEmpty()) {
processes.addAll(querierProcesses);
}
}
return processes;
}
public ProcessFullDefinition getProcess(ProcessDefinitionUUID processUUID) {
for (Querier querier : queriers) {
ProcessFullDefinition process = querier.getProcess(processUUID);
if (process != null) {
return process;
}
}
return null;
}
public ProcessFullDefinition getProcess(String processId, String version) {
for (Querier querier : queriers) {
ProcessFullDefinition process = querier.getProcess(processId, version);
if (process != null) {
return process;
}
}
return null;
}
public ProcessFullDefinition getLastDeployedProcess(String processId, ProcessDefinition.ProcessState processState) {
Misc.checkArgsNotNull(processId, processState);
Set processes = getProcesses(processId, processState);
ProcessFullDefinition lastProcess = null;
for (ProcessFullDefinition process : processes) {
if (lastProcess == null) {
lastProcess = process;
} else if (process.getDeployedDate().after(lastProcess.getDeployedDate())) {
lastProcess = process;
}
}
return lastProcess;
}
public Set getDependentProcesses(ProcessDefinitionUUID processUUID) {
Set dependentProcesses = new HashSet();
for (Querier querier : queriers) {
Set querierDependentProcesses = querier.getDependentProcesses(processUUID);
if (querierDependentProcesses != null && !querierDependentProcesses.isEmpty()) {
dependentProcesses.addAll(querierDependentProcesses);
}
}
return dependentProcesses;
}
public ActivityFullInstance getActivityInstance(
ActivityInstanceUUID activityInstanceUUID) {
for (Querier querier : queriers) {
ActivityFullInstance activity = querier.getActivityInstance(activityInstanceUUID);
if (activity != null) {
return activity;
}
}
return null;
}
public Set> getTaskInstances(
ProcessInstanceUUID instanceUUID) {
Set> activities = new HashSet>();
for (Querier querier : queriers) {
activities.addAll(querier.getTaskInstances(instanceUUID));
}
return activities;
}
public Set> getUserInstanceTasks(
String userId, ProcessInstanceUUID instanceUUID, ActivityState taskState) {
Set> activities = new HashSet>();
for (Querier querier : queriers) {
activities.addAll(querier.getUserInstanceTasks(userId, instanceUUID, taskState));
}
return activities;
}
public Set> getUserTasks(String userId,
ActivityState taskState) {
Set> activities = new HashSet>();
for (Querier querier : queriers) {
activities.addAll(querier.getUserTasks(userId, taskState));
}
return activities;
}
public ActivityDefinition getActivity(ActivityDefinitionUUID activityDefinitionUUID) {
for (Querier querier : queriers) {
ActivityDefinition activity = querier.getActivity(activityDefinitionUUID);
if (activity != null) {
return activity;
}
}
return null;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy