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

org.ow2.bonita.facade.impl.QueryDefinitionAPIImpl Maven / Gradle / Ivy

/**
 * Copyright (C) 2006  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.facade.impl;

import java.util.HashSet;
import java.util.Set;

import org.ow2.bonita.facade.def.majorElement.ActivityDefinition;
import org.ow2.bonita.facade.def.majorElement.DataFieldDefinition;
import org.ow2.bonita.facade.def.majorElement.PackageDefinition;
import org.ow2.bonita.facade.def.majorElement.PackageFullDefinition;
import org.ow2.bonita.facade.def.majorElement.ParticipantDefinition;
import org.ow2.bonita.facade.def.majorElement.ProcessDefinition;
import org.ow2.bonita.facade.def.majorElement.ProcessFullDefinition;
import org.ow2.bonita.facade.def.majorElement.impl.ActivityDefinitionImpl;
import org.ow2.bonita.facade.def.majorElement.impl.DataFieldDefinitionImpl;
import org.ow2.bonita.facade.def.majorElement.impl.PackageDefinitionImpl;
import org.ow2.bonita.facade.def.majorElement.impl.ParticipantDefinitionImpl;
import org.ow2.bonita.facade.def.majorElement.impl.ProcessDefinitionImpl;
import org.ow2.bonita.facade.exception.ActivityDefNotFoundException;
import org.ow2.bonita.facade.exception.ActivityNotFoundException;
import org.ow2.bonita.facade.exception.DataFieldNotFoundException;
import org.ow2.bonita.facade.exception.PackageNotFoundException;
import org.ow2.bonita.facade.exception.ParticipantNotFoundException;
import org.ow2.bonita.facade.exception.ProcessNotFoundException;
import org.ow2.bonita.facade.internal.InternalQueryDefinitionAPI;
import org.ow2.bonita.facade.uuid.ActivityDefinitionUUID;
import org.ow2.bonita.facade.uuid.PackageDefinitionUUID;
import org.ow2.bonita.facade.uuid.ParticipantDefinitionUUID;
import org.ow2.bonita.facade.uuid.ProcessDefinitionUUID;
import org.ow2.bonita.util.EngineEnvTool;


public class QueryDefinitionAPIImpl implements InternalQueryDefinitionAPI {

  protected QueryDefinitionAPIImpl() {
  }

  private Set getProcessCopy(final Set src) {
    final Set result = new HashSet();
    if (src != null) {
      for (final ProcessDefinition p : src) {
        result.add(new ProcessDefinitionImpl(p));
      }
    }
    return result;
  }

  private Set getPackageCopy(final Set< PackageDefinition> src) {
    final Set result = new HashSet();
    if (src != null) {
      for (final PackageDefinition p : src) {
        result.add(new PackageDefinitionImpl(p));
      }
    }
    return result;
  }

  private Set getActivityCopy(final Set src) {
    final Set result = new HashSet();
    if (src != null) {
      for (final ActivityDefinition p : src) {
        result.add(new ActivityDefinitionImpl(p));
      }
    }
    return result;
  }

  private Set getParticipantCopy(final Set src) {
    final Set result = new HashSet();
    if (src != null) {
      for (final ParticipantDefinition p : src) {
        result.add(new ParticipantDefinitionImpl(p));
      }
    }
    return result;
  }

  private Set getDataFieldCopy(final Set src) {
    final Set result = new HashSet();
    if (src != null) {
      for (final DataFieldDefinition p : src) {
        result.add(new DataFieldDefinitionImpl(p));
      }
    }
    return result;
  }

  public PackageDefinition getLastPackage(final String packageId, final String queryList) throws PackageNotFoundException {
    FacadeUtil.checkArgsNotNull(packageId);
    final PackageFullDefinition last = EngineEnvTool.getAllQueriers(queryList).getLastDeployedPackage(packageId,
        PackageDefinition.PackageState.DEPLOYED);
    if (last == null) {
      throw new PackageNotFoundException(packageId);
    }
    return new PackageDefinitionImpl(last);
  }

  public ProcessDefinition getLastProcess(final String packageId, 
      final String processId, final String queryList) throws ProcessNotFoundException {
    FacadeUtil.checkArgsNotNull(processId);
    final ProcessFullDefinition last = EngineEnvTool.getAllQueriers(queryList).getLastDeployedProcess(packageId, processId,
        ProcessDefinition.ProcessState.DEPLOYED);
    if (last == null) {
      throw new ProcessNotFoundException(processId);
    }
    return new ProcessDefinitionImpl(last);
  }

  public PackageDefinition getPackage(final PackageDefinitionUUID packageUUID, 
      final String queryList) throws PackageNotFoundException {
    FacadeUtil.checkArgsNotNull(packageUUID);
    final PackageFullDefinition package1 = EngineEnvTool.getAllQueriers(queryList).getPackage(packageUUID);
    if (package1 == null) {
      throw new PackageNotFoundException(packageUUID);
    }
    return new PackageDefinitionImpl(package1);
  }

  public PackageDefinition getPackage(final String packageId, final String version, 
      final String queryList) throws PackageNotFoundException {
    FacadeUtil.checkArgsNotNull(packageId, version);
    final PackageFullDefinition package1 = EngineEnvTool.getAllQueriers(queryList).getPackage(packageId, version);
    if (package1 == null) {
      throw new PackageNotFoundException(packageId, version);
    }
    return new PackageDefinitionImpl(package1);
  }

  @SuppressWarnings("unchecked")
  public Set getPackageProcesses(final PackageDefinitionUUID packageUUID, 
      final String queryList) throws PackageNotFoundException {
    FacadeUtil.checkArgsNotNull(packageUUID);
    final Set processes = EngineEnvTool.getAllQueriers(queryList).getPackageProcesses(packageUUID);
    if (processes == null || processes.isEmpty()) {
      // check that package exists (throws exception)
      getPackage(packageUUID, queryList);
    }
    return getProcessCopy((Set)processes);
  }

  @SuppressWarnings("unchecked")
  public Set getPackages(final String queryList) {
    final Set packages = EngineEnvTool.getAllQueriers(queryList).getPackages();
    return getPackageCopy((Set)packages);
  }

  @SuppressWarnings("unchecked")
  public Set getPackages(final String packageId, final String queryList) {
    FacadeUtil.checkArgsNotNull(packageId);
    final Set packages = EngineEnvTool.getAllQueriers(queryList).getPackages(packageId);
    return getPackageCopy((Set)packages);
  }

  public ProcessDefinition getProcess(final ProcessDefinitionUUID processUUID, 
      final String queryList) throws ProcessNotFoundException {
    FacadeUtil.checkArgsNotNull(processUUID);
    final ProcessFullDefinition process = EngineEnvTool.getAllQueriers(queryList).getProcess(processUUID);
    if (process == null) {
      throw new ProcessNotFoundException(processUUID);
    }
    return new ProcessDefinitionImpl(process);
  }

  @SuppressWarnings("unchecked")
  public Set getProcesses(final String processId, final String processVersion, final String queryList) {
    FacadeUtil.checkArgsNotNull(processId, processVersion);
    final Set processes = EngineEnvTool.getAllQueriers(queryList).getProcesses(processId, processVersion);
    return getProcessCopy((Set)processes);
  }

  public ProcessDefinition getProcess(final String packageId,
      final String processId, final String processVersion, final String queryList) throws ProcessNotFoundException {
    FacadeUtil.checkArgsNotNull(packageId, processId, processVersion);
    final ProcessFullDefinition process = EngineEnvTool.getAllQueriers(queryList).getProcess(
        packageId, processId, processVersion);
    if (process == null) {
      throw new ProcessNotFoundException(processId, processVersion);
    }
    return new ProcessDefinitionImpl(process);
  }

  public Set getProcessActivities(final ProcessDefinitionUUID processUUID, 
      final String queryList) throws ProcessNotFoundException {
    FacadeUtil.checkArgsNotNull(processUUID);
    final ProcessFullDefinition process = EngineEnvTool.getAllQueriers(queryList).getProcess(processUUID);
    if (process == null) {
      throw new ProcessNotFoundException(processUUID);
    }
    final Set activities = process.getActivities();
    return getActivityCopy(activities);
  }

  public ActivityDefinition getProcessActivity(final ProcessDefinitionUUID processUUID, 
      final String activityId, final String queryList)
    throws ProcessNotFoundException, ActivityNotFoundException {
    FacadeUtil.checkArgsNotNull(processUUID, activityId);
    final ProcessFullDefinition process = EngineEnvTool.getAllQueriers(queryList).getProcess(processUUID);
    if (process == null) {
      throw new ProcessNotFoundException(processUUID);
    }
    final Set activities = process.getActivities();
    if (activities != null) {
      for (final ActivityDefinition activityDefinition : activities) {
        if (activityDefinition.getActivityId().equals(activityId)) {
          return new ActivityDefinitionImpl(activityDefinition);
        }
      }
    }
    throw new ActivityNotFoundException(processUUID, activityId);
  }

  public ParticipantDefinition getProcessParticipant(final ProcessDefinitionUUID processUUID, 
      final String participantId, final String queryList)
    throws ProcessNotFoundException, ParticipantNotFoundException {
    FacadeUtil.checkArgsNotNull(processUUID, participantId);
    final Set participants = getProcessParticipants(processUUID, queryList);
    if (participants != null) {
      for (final ParticipantDefinition participant : participants) {
        if (participant.getParticipantId().equals(participantId)) {
          return new ParticipantDefinitionImpl(participant);
        }
      }
    }
    throw new ParticipantNotFoundException(participantId, processUUID);
  }

  public Set getProcessParticipants(
      final ProcessDefinitionUUID processUUID, final String queryList) throws ProcessNotFoundException {
    FacadeUtil.checkArgsNotNull(processUUID);
    final ProcessFullDefinition process = EngineEnvTool.getAllQueriers(queryList).getProcess(processUUID);
    if (process == null) {
      throw new ProcessNotFoundException(processUUID);
    }
    final Set participants = process.getParticipants();
    return getParticipantCopy(participants);
  }

  @SuppressWarnings("unchecked")
  public Set getProcesses(final String queryList) {
    final Set processes = EngineEnvTool.getAllQueriers(queryList).getProcesses();
    return getProcessCopy((Set)processes);
  }

  @SuppressWarnings("unchecked")
  public Set getProcesses(final String processId, final String queryList) {
    FacadeUtil.checkArgsNotNull(processId);
    final Set processes = EngineEnvTool.getAllQueriers(queryList).getProcesses(processId);
    return getProcessCopy((Set)processes);
  }

  @SuppressWarnings("unchecked")
  public Set getPackageProcesses(
      final String packageId, final String processId, final String queryList) {
    FacadeUtil.checkArgsNotNull(packageId, processId);
    final Set processes = EngineEnvTool.getAllQueriers(queryList).getPackageProcesses(
        packageId, processId);
    return getProcessCopy((Set)processes);
  }

  public ParticipantDefinitionUUID getProcessParticipantId(
      final ProcessDefinitionUUID processUUID, final String participantName, final String queryList)
    throws ProcessNotFoundException {
    FacadeUtil.checkArgsNotNull(processUUID, participantName);
    final Set participants = getProcessParticipants(processUUID,queryList);
    if (participants != null) {
      for (final ParticipantDefinition participant : participants) {
        if (participantName.equals(participant.getName())) {
          return participant.getUUID();
        }
      }
    }
    return null;
  }

  public ActivityDefinitionUUID getProcessActivityId(final ProcessDefinitionUUID processUUID, 
      final String activityName, final String queryList)
    throws ProcessNotFoundException {
    FacadeUtil.checkArgsNotNull(processUUID, activityName);
    final Set activities = getProcessActivities(processUUID, queryList);
    if (activities != null) {
      for (final ActivityDefinition activity : activities) {
        if (activityName.equals(activity.getName())) {
          return activity.getUUID();
        }
      }
    }
    return null;
  }

  @SuppressWarnings("unchecked")
  public Set getPackages(final String packageId, 
      final PackageDefinition.PackageState packageState, final String queryList) {
    FacadeUtil.checkArgsNotNull(packageId, packageState);
    final Set packages = EngineEnvTool.getAllQueriers(queryList).getPackages(packageId, packageState);
    return getPackageCopy((Set)packages);
  }
  @SuppressWarnings("unchecked")
  public Set getPackages(
      final PackageDefinition.PackageState packageState, final String queryList) {
    FacadeUtil.checkArgsNotNull(packageState);
    final Set packages = EngineEnvTool.getAllQueriers(queryList).getPackages(packageState);
    return getPackageCopy((Set)packages);
  }
  @SuppressWarnings("unchecked")
  public Set getProcesses(final String processId, 
      final ProcessDefinition.ProcessState processState, final String queryList) {
    FacadeUtil.checkArgsNotNull(processId, processId);
    final Set processes = EngineEnvTool.getAllQueriers(queryList).getProcesses(processId, processState);
    return getProcessCopy((Set)processes);
  }

  @SuppressWarnings("unchecked")
  public Set getProcesses(final ProcessDefinition.ProcessState processState, final String queryList) {
    FacadeUtil.checkArgsNotNull(processState);
    final Set processes = EngineEnvTool.getAllQueriers(queryList).getProcesses(processState);
    return getProcessCopy((Set)processes);
  }

  public ProcessDefinition getPackageProcess(final PackageDefinitionUUID packageDefinitionUUID, 
      final String processId, final String queryList)
    throws PackageNotFoundException, ProcessNotFoundException {
    FacadeUtil.checkArgsNotNull(packageDefinitionUUID, processId);
    final ProcessDefinition process = EngineEnvTool.getAllQueriers(queryList).getPackageProcess(packageDefinitionUUID, processId);
    if (process == null) {
      if (EngineEnvTool.getAllQueriers(queryList).getPackage(packageDefinitionUUID) == null) {
        throw new PackageNotFoundException(packageDefinitionUUID);
      }
      throw new ProcessNotFoundException(processId, packageDefinitionUUID);
    }
    return new ProcessDefinitionImpl(process);
  }

  public DataFieldDefinition getProcessDataField(final ProcessDefinitionUUID processDefinitionUUID, 
      final String dataFieldId, final String queryList)
    throws ProcessNotFoundException, DataFieldNotFoundException {
    FacadeUtil.checkArgsNotNull(processDefinitionUUID, dataFieldId);
    final Set datafields = getProcessDataFields(processDefinitionUUID, queryList);
    if (datafields != null) {
      for (final DataFieldDefinition datefield : datafields) {
        if (datefield.getDataFieldId().equals(dataFieldId)) {
          return new DataFieldDefinitionImpl(datefield);
        }
      }
    }
    throw new DataFieldNotFoundException(dataFieldId, processDefinitionUUID);
  }

  public Set getProcessDataFields(final ProcessDefinitionUUID processDefinitionUUID, final String queryList)
    throws ProcessNotFoundException {
    FacadeUtil.checkArgsNotNull(processDefinitionUUID);
    final ProcessFullDefinition process = EngineEnvTool.getAllQueriers(queryList).getProcess(processDefinitionUUID);
    if (process == null) {
      throw new ProcessNotFoundException(processDefinitionUUID);
    }
    final Set datafields = process.getDataFields();
    return getDataFieldCopy(datafields);
  }

  public Set getActivityDataFields(final ActivityDefinitionUUID activityDefinitionUUID, 
      final String queryList) throws ActivityDefNotFoundException {
    FacadeUtil.checkArgsNotNull(activityDefinitionUUID);
    final ActivityDefinition activity = EngineEnvTool.getAllQueriers(queryList).getActivity(activityDefinitionUUID);
    if (activity == null) {
      throw new ActivityDefNotFoundException(activityDefinitionUUID);
    }
    final Set datafields = activity.getDataFields();
    return getDataFieldCopy(datafields);
  }

  public DataFieldDefinition getActivityDataField(final ActivityDefinitionUUID activityDefinitionUUID, 
      final String dataFieldId, final String queryList)
    throws ActivityDefNotFoundException, DataFieldNotFoundException {
    FacadeUtil.checkArgsNotNull(activityDefinitionUUID);
    final ActivityDefinition activity = EngineEnvTool.getAllQueriers(queryList).getActivity(activityDefinitionUUID);
    if (activity == null) {
      throw new ActivityDefNotFoundException(activityDefinitionUUID);
    }
    final Set datafields = activity.getDataFields();
    if (datafields != null) {
      for (final DataFieldDefinition datefield : datafields) {
        if (datefield.getDataFieldId().equals(dataFieldId)) {
          return new DataFieldDefinitionImpl(datefield);
        }
      }
    }
    throw new DataFieldNotFoundException(dataFieldId, activityDefinitionUUID);
  }

}





© 2015 - 2025 Weber Informatics LLC | Privacy Policy