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

org.ow2.bonita.persistence.db.RuntimeDbSessionImpl 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.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import org.hibernate.FlushMode;
import org.hibernate.Query;
import org.hibernate.Session;
import org.ow2.bonita.definition.GlobalClassData;
import org.ow2.bonita.definition.PackageClassData;
import org.ow2.bonita.definition.PackageDependency;
import org.ow2.bonita.definition.XpdlProcess;
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.RuntimeDbSession;
import org.ow2.bonita.pvm.internal.hibernate.HibernatePvmDbSession;
import org.ow2.bonita.pvm.internal.job.TimerImpl;
import org.ow2.bonita.pvm.job.Timer;
import org.ow2.bonita.runtime.ActivityInstanceKey;
import org.ow2.bonita.runtime.PackageVersion;
import org.ow2.bonita.runtime.ProcessInstanceKey;
import org.ow2.bonita.runtime.ProcessVersion;
import org.ow2.bonita.runtime.TaskRunTime;
import org.ow2.bonita.runtime.XpdlExecution;
import org.ow2.bonita.runtime.XpdlInstance;


public class RuntimeDbSessionImpl extends HibernatePvmDbSession implements RuntimeDbSession {

  public RuntimeDbSessionImpl(final Session session) {
    setSession(session);
    session.setFlushMode(FlushMode.COMMIT);
  }

  public TaskRunTime getTask(final TaskUUID taskUUID) {
    final Query query = getSession().getNamedQuery("getTask");
    query.setString("taskUUID", taskUUID.toString());
    query.setMaxResults(1);
    query.setCacheable(true);
    final TaskRunTime task = (TaskRunTime) query.uniqueResult();
    return task;
  }

  @SuppressWarnings("unchecked")
  public Set getInstanceTasks(final ProcessInstanceUUID instanceUUID) {
    final Set result = new HashSet();
    final Query query = getSession().getNamedQuery("getInstanceTasks");
    query.setCacheable(true);
    query.setString("instanceUUID", instanceUUID.toString());
    result.addAll(query.list());
    return result;
  }

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

  @SuppressWarnings("unchecked")
  public Set getXpdlInstances(final ProcessDefinitionUUID processUUID) {
    final Query query = getSession().getNamedQuery("getXpdlInstances");
    query.setCacheable(true);
    query.setString("processUUID", processUUID.toString());
    final List list = query.list();
    final Set result = new HashSet();
    if (list != null && !list.isEmpty()) {
      result.addAll(list);
    }
    return result;
  }

  public XpdlProcess getXpdlProcess(final ProcessDefinitionUUID processUUID) {
    final Query query = getSession().getNamedQuery("getXpdlProcess");
    query.setString("processUUID", processUUID.toString());
    query.setCacheable(true);
    query.setMaxResults(1);
    final XpdlProcess processDefinition = (XpdlProcess) query.uniqueResult();
    return processDefinition;
  }

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

  public ProcessVersion getLastProcessVersion(final String processId, final String packageId) {
    final Query query = getSession().getNamedQuery("getLastProcessVersion");
    query.setCacheable(true);
    query.setString("processId", processId);
    query.setString("packageId", packageId);
    query.setMaxResults(1);
    final ProcessVersion pv = (ProcessVersion) query.uniqueResult();
    return pv;
  }

  public PackageVersion getLastPackageVersion(final String packageId) {
    final Query query = getSession().getNamedQuery("getLastPackageVersion");
    query.setCacheable(true);
    query.setString("packageId", packageId);
    query.setMaxResults(1);
    final PackageVersion pv = (PackageVersion) query.uniqueResult();
    return pv;
  }

  public GlobalClassData getGlobalClassData(final String className) {
    final Query query = getSession().getNamedQuery("getGlobalClassData");
    query.setCacheable(true);
    query.setString("className", className);
    query.setMaxResults(1);
    final GlobalClassData classData = (GlobalClassData) query.uniqueResult();
    return classData;
  }

  public XpdlExecution getExecutionPointingOnNode(final ActivityInstanceUUID activityUUID) {
    final Query query = getSession().getNamedQuery("findInstanceExecutionPointingOnNode");
    query.setCacheable(true);
    query.setString("activityUUID", activityUUID.toString());
    return (XpdlExecution) query.uniqueResult();
  }

  @SuppressWarnings("unchecked")
  public Set getPackageDependencies(final String className) {
    final Query query = getSession().getNamedQuery("getPackageDependencies");
    query.setCacheable(true);
    query.setString("className", className);
    final List results = query.list();
    if (results != null) {
      return new HashSet(results);
    }
    return null;
  }

  public PackageDependency getPackageDependency(final PackageDefinitionUUID packageUUID) {
    final Query query = getSession().getNamedQuery("getPackageDependency");
    query.setCacheable(true);
    query.setString("packageUUID", packageUUID.toString());
    return (PackageDependency) query.uniqueResult();
  }

  public XpdlProcess findLatestProcessById(final String processId) {
    final Query query = getSession().getNamedQuery("findLatestProcessById");
    query.setCacheable(true);
    query.setString("processId", processId);
    return (XpdlProcess)query.uniqueResult();
  }

  public ActivityInstanceKey getActivityInstanceKey(final ProcessInstanceUUID instanceUUID,
      final String activityName) {
    final Query query = getSession().getNamedQuery("getActivityInstanceKey");
    query.setCacheable(true);
    query.setString("instanceUUID", instanceUUID.toString());
    query.setString("activityId", activityName);
    return (ActivityInstanceKey)query.uniqueResult();
  }

  public ProcessInstanceKey getProcessInstanceKey(final ProcessDefinitionUUID processUUID) {
    final Query query = getSession().getNamedQuery("getProcessInstanceKey");
    query.setCacheable(true);
    query.setString("processUUID", processUUID.toString());
    return (ProcessInstanceKey)query.uniqueResult();
  }

  @SuppressWarnings("unchecked")
  public Collection getExecutionTimers(final XpdlExecution xpdlExecution) {
    final Query query = getSession().createQuery("from " + TimerImpl.class.getName() + " as timer where timer.execution = :exec");
    query.setEntity("exec", xpdlExecution);
    return query.list();
  }

  @SuppressWarnings("unchecked")
  public Set getInstanceTimers(final ProcessInstanceUUID instanceUUID) {
    final Query query = getSession().getNamedQuery("getInstanceTimers");
    query.setCacheable(true);
    query.setString("instanceUUID", instanceUUID.toString());
    final List list = query.list();
    final Set result = new HashSet();
    if (list != null && !list.isEmpty()) {
      result.addAll(list);
    }
    return result;
  }

}






© 2015 - 2025 Weber Informatics LLC | Privacy Policy