All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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