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.
 * 
 * Modified by Matthieu Chaffotte - BonitaSoft S.A.
 **/
package org.ow2.bonita.facade.impl;

import java.rmi.RemoteException;
import java.util.HashSet;
import java.util.Set;

import org.ow2.bonita.facade.def.element.BusinessArchive;
import org.ow2.bonita.facade.def.majorElement.ActivityDefinition;
import org.ow2.bonita.facade.def.majorElement.DataFieldDefinition;
import org.ow2.bonita.facade.def.majorElement.ParticipantDefinition;
import org.ow2.bonita.facade.def.majorElement.ProcessDefinition;
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.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.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.ParticipantDefinitionUUID;
import org.ow2.bonita.facade.uuid.ProcessDefinitionUUID;
import org.ow2.bonita.services.LargeDataRepository;
import org.ow2.bonita.util.EnvTool;
import org.ow2.bonita.util.Misc;


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 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;
  }

  public BusinessArchive getBusinessArchive(ProcessDefinitionUUID processDefinitionUUID, final String queryList) throws ProcessNotFoundException, RemoteException {
    Misc.checkArgsNotNull(processDefinitionUUID);
    LargeDataRepository ldr = EnvTool.getLargeDataRepository();
    BusinessArchive businessArchive = ldr.getData(BusinessArchive.class, Misc.getBusinessArchiveCategories(), processDefinitionUUID.toString());
    if (businessArchive == null) {
      throw new ProcessNotFoundException("bai_QDAPII_2", processDefinitionUUID);
    }
    return businessArchive;
  }
  
  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 ProcessDefinition getLastProcess(final String processId, final String queryList) throws ProcessNotFoundException {
    FacadeUtil.checkArgsNotNull(processId);
    final ProcessDefinition last = EnvTool.getAllQueriers(queryList).getLastDeployedProcess(processId,
        ProcessDefinition.ProcessState.ENABLED);
    if (last == null) {
      throw new ProcessNotFoundException("bai_QDAPII_2", processId);
    }
    return new ProcessDefinitionImpl(last);
  }

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

  public ProcessDefinition getProcess(final String processId, final String processVersion, final String queryList) throws ProcessNotFoundException {
    FacadeUtil.checkArgsNotNull(processId, processVersion);
    final ProcessDefinition process = EnvTool.getAllQueriers(queryList).getProcess(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 ProcessDefinition process = EnvTool.getAllQueriers(queryList).getProcess(processUUID);
    if (process == null) {
      throw new ProcessNotFoundException("bai_QDAPII_7", 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 ProcessDefinition process = EnvTool.getAllQueriers(queryList).getProcess(processUUID);
    if (process == null) {
      throw new ProcessNotFoundException("bai_QDAPII_8", processUUID);
    }
    final Set activities = process.getActivities();
    if (activities != null) {
      for (final ActivityDefinition activityDefinition : activities) {
        if (activityDefinition.getName().equals(activityId)) {
          return new ActivityDefinitionImpl(activityDefinition);
        }
      }
    }
    throw new ActivityNotFoundException("bai_QDAPII_9", 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.getName().equals(participantId)) {
          return new ParticipantDefinitionImpl(participant);
        }
      }
    }
    throw new ParticipantNotFoundException("bai_QDAPII_10", participantId, processUUID);
  }

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

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

  @SuppressWarnings("unchecked")
  public Set getProcesses(final String processId, final String queryList) {
    FacadeUtil.checkArgsNotNull(processId);
    final Set processes = EnvTool.getAllQueriers(queryList).getProcesses(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 getProcesses(final String processId, 
      final ProcessDefinition.ProcessState processState, final String queryList) {
    FacadeUtil.checkArgsNotNull(processId, processId);
    final Set processes = EnvTool.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 = EnvTool.getAllQueriers(queryList).getProcesses(processState);
    return getProcessCopy((Set)processes);
  }

  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.getName().equals(dataFieldId)) {
          return new DataFieldDefinitionImpl(datefield);
        }
      }
    }
    throw new DataFieldNotFoundException("bai_QDAPII_14", dataFieldId, processDefinitionUUID);
  }

  public Set getProcessDataFields(final ProcessDefinitionUUID processDefinitionUUID, final String queryList)
    throws ProcessNotFoundException {
    FacadeUtil.checkArgsNotNull(processDefinitionUUID);
    final ProcessDefinition process = EnvTool.getAllQueriers(queryList).getProcess(processDefinitionUUID);
    if (process == null) {
      throw new ProcessNotFoundException("bai_QDAPII_15", 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 = EnvTool.getAllQueriers(queryList).getActivity(activityDefinitionUUID);
    if (activity == null) {
      throw new ActivityDefNotFoundException("bai_QDAPII_16", 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 = EnvTool.getAllQueriers(queryList).getActivity(activityDefinitionUUID);
    if (activity == null) {
      throw new ActivityDefNotFoundException("bai_QDAPII_17", activityDefinitionUUID);
    }
    final Set datafields = activity.getDataFields();
    if (datafields != null) {
      for (final DataFieldDefinition datefield : datafields) {
        if (datefield.getName().equals(dataFieldId)) {
          return new DataFieldDefinitionImpl(datefield);
        }
      }
    }
    throw new DataFieldNotFoundException("bai_QDAPII_18", dataFieldId, activityDefinitionUUID);
  }

  public String getProcessMetaData(ProcessDefinitionUUID uuid, String key, final String queryList)
      throws RemoteException, ProcessNotFoundException {
    FacadeUtil.checkArgsNotNull(uuid, key);
    ProcessDefinition process = EnvTool.getAllQueriers(queryList).getProcess(uuid);
    if (process == null) {
      throw new ProcessNotFoundException("bai_QDAPII_19", uuid);
    }
    return process.getAMetaData(key);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy