
org.ow2.bonita.services.impl.QuerierChainer Maven / Gradle / Ivy
/**
* 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.HashSet;
import java.util.List;
import java.util.Set;
import org.ow2.bonita.facade.def.majorElement.ActivityDefinition;
import org.ow2.bonita.facade.def.majorElement.PackageDefinition;
import org.ow2.bonita.facade.def.majorElement.PackageFullDefinition;
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.PackageDefinitionUUID;
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;
/**
* @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(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 getPackages() {
Set packages = new HashSet();
for (Querier querier : queriers) {
Set querierPackages = querier.getPackages();
if (querierPackages != null && !querierPackages.isEmpty()) {
packages.addAll(querierPackages);
}
}
return packages;
}
public Set getPackages(String packageId) {
Set packages = new HashSet();
for (Querier querier : queriers) {
Set querierPackages = querier.getPackages(packageId);
if (querierPackages != null && !querierPackages.isEmpty()) {
packages.addAll(querierPackages);
}
}
return packages;
}
public PackageFullDefinition getPackage(PackageDefinitionUUID packageUUID) {
for (Querier querier : queriers) {
PackageFullDefinition package1 = querier.getPackage(packageUUID);
if (package1 != null) {
return package1;
}
}
return null;
}
public PackageFullDefinition getPackage(String packageId, String version) {
for (Querier querier : queriers) {
PackageFullDefinition package1 = querier.getPackage(packageId, version);
if (package1 != null) {
return package1;
}
}
return null;
}
public Set getPackages(PackageDefinition.PackageState packageState) {
Set packages = new HashSet();
for (Querier querier : queriers) {
Set querierPackages = querier.getPackages(packageState);
if (querierPackages != null && !querierPackages.isEmpty()) {
packages.addAll(querierPackages);
}
}
return packages;
}
public Set getPackages(String packageId, PackageDefinition.PackageState packageState) {
Set packages = new HashSet();
for (Querier querier : queriers) {
Set querierPackages = querier.getPackages(packageId, packageState);
if (querierPackages != null && !querierPackages.isEmpty()) {
packages.addAll(querierPackages);
}
}
return packages;
}
public PackageFullDefinition getLastDeployedPackage(String packageId, PackageDefinition.PackageState packageState) {
Set packages = getPackages(packageId, packageState);
PackageFullDefinition last = null;
for (PackageFullDefinition package1 : packages) {
if (last == null) {
last = package1;
} else if (package1.getDeployedDate().after(last.getDeployedDate())) {
last = package1;
}
}
return last;
}
public Set getPackageProcesses(PackageDefinitionUUID packageUUID) {
Set processes = new HashSet();
for (Querier querier : queriers) {
Set querierProcesses = querier.getPackageProcesses(packageUUID);
if (querierProcesses != null && !querierProcesses.isEmpty()) {
processes.addAll(querierProcesses);
}
}
return processes;
}
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 getPackageProcesses(String packageId, String processId) {
Set processes = new HashSet();
for (Querier querier : queriers) {
Set querierProcesses = querier.getPackageProcesses(packageId, 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 Set getProcesses(
String packageId, String processId, ProcessDefinition.ProcessState processState) {
Set processes = new HashSet();
for (Querier querier : queriers) {
Set querierProcesses = querier.getProcesses(packageId, 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 Set getProcesses(String processId, String version) {
for (Querier querier : queriers) {
Set processes = querier.getProcesses(processId, version);
if (processes != null) {
return processes;
}
}
return null;
}
public ProcessFullDefinition getProcess(String packageId, String processId, String version) {
for (Querier querier : queriers) {
ProcessFullDefinition process = querier.getProcess(packageId, processId, version);
if (process != null) {
return process;
}
}
return null;
}
public ProcessFullDefinition getLastDeployedProcess(
String packageId, String processId, ProcessDefinition.ProcessState processState) {
Set processes = getProcesses(packageId, processId, processState);
PackageFullDefinition lastPackage = null;
ProcessFullDefinition lastProcess = null;
for (ProcessFullDefinition process : processes) {
PackageDefinitionUUID packageIdent = process.getPackageDefinitionUUID();
PackageFullDefinition package1 = getPackage(packageIdent);
if (lastPackage == null) {
lastPackage = package1;
lastProcess = process;
} else if (package1.getDeployedDate().after(lastPackage.getDeployedDate())) {
lastPackage = package1;
lastProcess = process;
}
}
return lastProcess;
}
public Set getDependentPackages(PackageDefinitionUUID packageId) {
Set dependentPackages = new HashSet();
for (Querier querier : queriers) {
Set querierDependentPackagess = querier.getDependentPackages(packageId);
if (querierDependentPackagess != null && !querierDependentPackagess.isEmpty()) {
dependentPackages.addAll(querierDependentPackagess);
}
}
return dependentPackages;
}
public ActivityFullInstance getActivityInstance(
ActivityInstanceUUID activityInstanceUUID) {
for (Querier querier : queriers) {
ActivityFullInstance activity = querier.getActivityInstance(activityInstanceUUID);
if (activity != null) {
return activity;
}
}
return null;
}
public ProcessFullDefinition getPackageProcess(
PackageDefinitionUUID packageDefinitionUUID, String processId) {
for (Querier querier : queriers) {
ProcessFullDefinition process = querier.getPackageProcess(packageDefinitionUUID, processId);
if (process != null) {
return process;
}
}
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