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

org.ow2.bonita.persistence.db.QuerierDbSessionImpl 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.persistence.db;

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

import org.hibernate.FlushMode;
import org.hibernate.Hibernate;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.type.Type;
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.persistence.QuerierDbSession;
import org.ow2.bonita.pvm.internal.hibernate.HibernatePvmDbSession;
import org.ow2.bonita.util.hibernate.GenericEnumUserType;


public class QuerierDbSessionImpl extends HibernatePvmDbSession implements QuerierDbSession {
  
  public QuerierDbSessionImpl(Session session) {
    setSession(session);
    session.setFlushMode(FlushMode.COMMIT);
  }
  
  /*
   * QUERIER
   */
  private static Type activityStateUserType =
    Hibernate.custom(GenericEnumUserType.class, new String[]{"enumClass"}, new String[]{ActivityState.class.getName()});

  @SuppressWarnings("unchecked")
  public Set> getUserInstanceTasks(String userId,
      ProcessInstanceUUID instanceUUID, ActivityState taskState) {
    Set> result = new HashSet>();
    Query query = getSession().getNamedQuery("getUserInstanceTasksWithState");
    query.setCacheable(true);
    query.setString("userId", userId);
    query.setString("instanceUUID", instanceUUID.toString());
    query.setParameter("state", taskState, activityStateUserType);
    result.addAll(query.list());
    return result;
  }
  @SuppressWarnings("unchecked")
  public Set> getUserTasks(String userId, ActivityState taskState) {
    Query query = getSession().getNamedQuery("getUserTasksWithState");
    query.setCacheable(true);
    query.setString("userId", userId);
    query.setParameter("state", taskState, activityStateUserType);
    Set> result = new HashSet>();
    result.addAll(query.list());
    return result;
  }

  @SuppressWarnings("unchecked")
  public Set> getActivityInstances(ProcessInstanceUUID instanceUUID) {
    Query query = getSession().getNamedQuery("findActivityInstances");
    query.setCacheable(true);
    query.setString("instanceUUID", instanceUUID.toString());
    List> results = query.list();
    if (results != null) {
      return new HashSet>(results);
    }
    return null;
  }

  public ProcessFullInstance getProcessInstance(ProcessInstanceUUID instanceUUID) {
    Query query = getSession().getNamedQuery("findProcessInstance");
    query.setCacheable(true);
    query.setString("instanceUUID", instanceUUID.toString());
    query.setMaxResults(1);
    return (ProcessFullInstance) query.uniqueResult();
  }

  @SuppressWarnings("unchecked")
  public Set getProcessInstances() {
    final Set processInsts = new HashSet();
    final Query query = getSession().getNamedQuery("findAllProcessInstances");
    query.setCacheable(true);
    final List results = query.list();
    if (results != null) {
      processInsts.addAll(results);
    }
    return processInsts;
  }
  
  @SuppressWarnings("unchecked")
  public Set getProcessInstances(final ProcessDefinitionUUID processUUID) {
    final Set processInsts = new HashSet();
    final Query query = getSession().getNamedQuery("findProcessInstances");
    query.setCacheable(true);
    query.setString("processUUID", processUUID.toString());
    final List results = query.list();
    if (results != null) {
      processInsts.addAll(results);
    }
    return processInsts;
  }

  @SuppressWarnings("unchecked")
  public ActivityFullInstance< TaskInstance > getTaskInstance(TaskUUID taskUUID) {
    Query query = getSession().getNamedQuery("findTaskInstance");
    query.setCacheable(true);
    query.setString("taskUUID", taskUUID.toString());
    query.setMaxResults(1);
    return (ActivityFullInstance< TaskInstance >) query.uniqueResult();
  }

  @SuppressWarnings("unchecked")
  public Set> getTaskInstances(final ProcessInstanceUUID instanceUUID) {
    final Query query = getSession().getNamedQuery("findTaskInstances");
    query.setCacheable(true);
    query.setString("instanceUUID", instanceUUID.toString());
    final Set> taskInstances = new HashSet>();
    final List> results = query.list();
    if (results != null) {
      taskInstances.addAll(results);
    }
    return taskInstances;
  }

  

  /*
   * DEFINITION
   */
  @SuppressWarnings("unchecked")
  private Set getPackageSet(final Query query) {
    final List results = query.list();
    if (results != null) {
      return new HashSet(results);
    }
    return null;
  }


  @SuppressWarnings("unchecked")
  private Set getProcessSet(final Query query) {
    final List results = query.list();
    if (results != null) {
      return new HashSet(results);
    }
    return null;
  }

  public Set getPackages() {
    final Query query = getSession().getNamedQuery("getPackages1");
    query.setCacheable(true);
    return getPackageSet(query);
  }

  public Set getPackages(String packageId) {
    final Query query = getSession().getNamedQuery("getPackages2");
    query.setCacheable(true);
    query.setString("packageId", packageId);
    return getPackageSet(query);
  }
  
  public PackageFullDefinition getPackage(String packageId, String version) {
    final Query query = getSession().getNamedQuery("getPackageFromIdAndVersion");
    query.setCacheable(true);
    query.setString("packageId", packageId);
    query.setString("version", version);
    query.setMaxResults(1);
    return (PackageFullDefinition) query.uniqueResult();
  }

  public PackageFullDefinition getPackage(PackageDefinitionUUID packageUUID) {
    final Query query = getSession().getNamedQuery("getPackage");
    query.setCacheable(true);
    query.setString("packageUUID", packageUUID.toString());
    query.setMaxResults(1);
    return (PackageFullDefinition) query.uniqueResult();
  }

  public Set getPackages(PackageDefinition.PackageState packageState) {
    Query query = null;
    if (PackageDefinition.PackageState.DEPLOYED.equals(packageState)) {
      query = getSession().getNamedQuery("getDeployedPackages1");
    } else if (PackageDefinition.PackageState.UNDEPLOYED.equals(packageState)) {
      query = getSession().getNamedQuery("getUndeployedPackages1");
    } else {
      return null;
    }
    query.setCacheable(true);
    return getPackageSet(query);
  }

  public Set getPackages(String packageId, PackageDefinition.PackageState packageState) {
    Query query = null;
    if (PackageDefinition.PackageState.DEPLOYED.equals(packageState)) {
      query = getSession().getNamedQuery("getDeployedPackages2");
    } else if (PackageDefinition.PackageState.UNDEPLOYED.equals(packageState)) {
      query = getSession().getNamedQuery("getUndeployedPackages2");
    } else {
      return null;
    }
    query.setCacheable(true);
    query.setString("packageId", packageId);
    return getPackageSet(query);
  }

  public PackageFullDefinition getLastDeployedPackage(String packageId, PackageDefinition.PackageState packageState) {
    Query query = null;
    if (PackageDefinition.PackageState.DEPLOYED.equals(packageState)) {
      query = getSession().getNamedQuery("getLastDeployedPackage");
    } else if (PackageDefinition.PackageState.UNDEPLOYED.equals(packageState)) {
      query = getSession().getNamedQuery("getLastUndeployedPackage");
    } else {
      return null;
    }
    query.setCacheable(true);
    query.setString("packageId", packageId);
    query.setMaxResults(1);
    return (PackageFullDefinition) query.uniqueResult();
  }

  public Set getPackageProcesses(PackageDefinitionUUID packageId) {
    final Query query = getSession().getNamedQuery("getPackageProcesses");
    query.setCacheable(true);
    query.setString("packageUUID", packageId.toString());
    return getProcessSet(query);
  }

  public Set getProcesses() {
    final Query query = getSession().getNamedQuery("getProcesses1");
    query.setCacheable(true);
    return getProcessSet(query);
  }

  public Set getProcesses(String processId) {
    final Query query = getSession().getNamedQuery("getProcesses2");
    query.setCacheable(true);
    query.setString("processId", processId);
    return getProcessSet(query);
  }

  public ProcessFullDefinition getProcess(ProcessDefinitionUUID processUUID) {
    final Query query = getSession().getNamedQuery("getProcess");
    query.setCacheable(true);
    query.setString("processUUID", processUUID.toString());
    query.setMaxResults(1);
    return (ProcessFullDefinition) query.uniqueResult();
  }
  
  public ProcessFullDefinition getProcess(String packageId, String processId, String version) {
    final Query query = getSession().getNamedQuery("getProcessFromIdAndVersionAndPackageId");
    query.setCacheable(true);
    query.setString("processId", processId);
    query.setString("version", version);
    query.setString("packageId", packageId);
    return (ProcessFullDefinition) query.uniqueResult();
  }
  
  public Set getProcesses(String processId, String version) {
    final Query query = getSession().getNamedQuery("getProcessFromIdAndVersion");
    query.setCacheable(true);
    query.setString("processId", processId);
    query.setString("version", version);
    return getProcessSet(query);
  }

  public Set getProcesses(ProcessDefinition.ProcessState processState) {
    Query query = null;
    if (ProcessDefinition.ProcessState.DEPLOYED.equals(processState)) {
      query = getSession().getNamedQuery("getDeployedProcesses1");
    } else if (ProcessDefinition.ProcessState.UNDEPLOYED.equals(processState)) {
      query = getSession().getNamedQuery("getUndeployedProcesses1");
    } else {
      return null;
    }
    query.setCacheable(true);
    return getProcessSet(query);
  }

  public Set getProcesses(
    String packageId, String processId, ProcessDefinition.ProcessState processState) {
    Query query = null;
    if (ProcessDefinition.ProcessState.DEPLOYED.equals(processState)) {
      query = getSession().getNamedQuery("getDeployedProcesses2FromPackageId");
    } else if (ProcessDefinition.ProcessState.UNDEPLOYED.equals(processState)) {
      query = getSession().getNamedQuery("getUndeployedProcesses2FromPackageId");
    } else {
      return null;
    }
    query.setCacheable(true);
    query.setString("processId", processId);
    query.setString("packageId", packageId);
    return getProcessSet(query);  
  }
  
  public Set getProcesses(String processId, ProcessDefinition.ProcessState processState) {
    Query query = null;
    if (ProcessDefinition.ProcessState.DEPLOYED.equals(processState)) {
      query = getSession().getNamedQuery("getDeployedProcesses2");
    } else if (ProcessDefinition.ProcessState.UNDEPLOYED.equals(processState)) {
      query = getSession().getNamedQuery("getUndeployedProcesses2");
    } else {
      return null;
    }
    query.setCacheable(true);
    query.setString("processId", processId);
    return getProcessSet(query);
  }

  public ProcessFullDefinition getLastDeployedProcess(
    String packageId, String processId, ProcessDefinition.ProcessState processState) {
    Query query = null;
    if (ProcessDefinition.ProcessState.DEPLOYED.equals(processState)) {
      query = getSession().getNamedQuery("getLastDeployedProcess");
    } else if (ProcessDefinition.ProcessState.UNDEPLOYED.equals(processState)) {
      query = getSession().getNamedQuery("getLastUndeployedProcess");
    } else {
      return null;
    }
    query.setCacheable(true);
    query.setString("processId", processId);
    query.setString("packageId", packageId);
    query.setMaxResults(1);
    return (ProcessFullDefinition) query.uniqueResult();
  }

  public Set getDependentPackages(PackageDefinitionUUID packageUUID) {
    Query query = getSession().getNamedQuery("getDependentPackages");
    query.setCacheable(true);
    query.setString("packageUUID", packageUUID.toString());
    return getPackageSet(query);
  }

  @SuppressWarnings("unchecked")
  public ActivityFullInstance getActivityInstance(
      ProcessInstanceUUID instanceUUID, String activityId, String iterationId, String activityInstanceId) {
    Query query = getSession().getNamedQuery("getActivityInstance");
    query.setCacheable(true);
    query.setString("instanceUUID", instanceUUID.toString());
    query.setString("activityId", activityId);
    query.setString("iterationId", iterationId);
    query.setString("activityInstanceId", activityInstanceId);
    return (ActivityFullInstance)query.uniqueResult();
  }

  @SuppressWarnings("unchecked")
  public ActivityFullInstance getActivityInstance(
      ActivityInstanceUUID activityInstanceUUID) {
    Query query = getSession().getNamedQuery("getActivityInstanceFromUUID");
    query.setCacheable(true);
    query.setString("activityUUID", activityInstanceUUID.toString());
    return (ActivityFullInstance)query.uniqueResult();
  }

  public ProcessFullDefinition getPackageProcess(
      PackageDefinitionUUID packageDefinitionUUID, String processId) {
    Query query = getSession().getNamedQuery("getPackageProcess");
    query.setCacheable(true);
    query.setString("packageUUID", packageDefinitionUUID.toString());
    query.setString("processId", processId);
    return (ProcessFullDefinition)query.uniqueResult();
  }

  public ActivityDefinition getActivityDefinition(ActivityDefinitionUUID activityDefinitionUUID) {
    final Query query = getSession().getNamedQuery("getActivityDefinition");
    query.setCacheable(true);
    query.setString("activityUUID", activityDefinitionUUID.toString());
    query.setMaxResults(1);
    return (ActivityDefinition) query.uniqueResult();
  }
}






© 2015 - 2025 Weber Informatics LLC | Privacy Policy