
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