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

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