
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.ClassData;
import org.ow2.bonita.definition.InternalProcess;
import org.ow2.bonita.facade.def.element.MetaData;
import org.ow2.bonita.facade.uuid.ActivityInstanceUUID;
import org.ow2.bonita.facade.uuid.ProcessDefinitionUUID;
import org.ow2.bonita.facade.uuid.ProcessInstanceUUID;
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.InternalExecution;
import org.ow2.bonita.runtime.InternalInstance;
import org.ow2.bonita.runtime.ProcessInstanceKey;
import org.ow2.bonita.runtime.ProcessVersion;
public class RuntimeDbSessionImpl extends HibernatePvmDbSession implements RuntimeDbSession {
public RuntimeDbSessionImpl(final Session session) {
setSession(session);
session.setFlushMode(FlushMode.COMMIT);
}
public InternalInstance getInstance(final ProcessInstanceUUID instanceUUID) {
final Query query = getSession().getNamedQuery("getInternalInstance");
query.setString("instanceUUID", instanceUUID.toString());
query.setCacheable(true);
query.setMaxResults(1);
return (InternalInstance) query.uniqueResult();
}
@SuppressWarnings("unchecked")
public Set getInstances(final ProcessDefinitionUUID processUUID) {
final Query query = getSession().getNamedQuery("getInternalInstances");
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 InternalProcess getProcess(final ProcessDefinitionUUID processUUID) {
final Query query = getSession().getNamedQuery("getInternalProcess");
query.setString("processUUID", processUUID.toString());
query.setCacheable(true);
query.setMaxResults(1);
final InternalProcess processDefinition = (InternalProcess) query.uniqueResult();
return processDefinition;
}
@SuppressWarnings("unchecked")
public Collection getProcessClassDatas(final ProcessDefinitionUUID processUUID) {
final Query query = getSession().getNamedQuery("getProcessClassDatas");
query.setCacheable(true);
query.setString("processUUID", processUUID.toString());
final List classDatas = query.list();
return classDatas;
}
public ProcessVersion getLastProcessVersion(final String processId) {
final Query query = getSession().getNamedQuery("getLastProcessVersion");
query.setCacheable(true);
query.setString("processId", processId);
query.setMaxResults(1);
final ProcessVersion pv = (ProcessVersion) query.uniqueResult();
return pv;
}
public InternalExecution getExecutionPointingOnNode(final ActivityInstanceUUID activityUUID) {
final Query query = getSession().getNamedQuery("findInstanceExecutionPointingOnNode");
query.setCacheable(true);
query.setString("activityUUID", activityUUID.toString());
return (InternalExecution) query.uniqueResult();
}
@SuppressWarnings("unchecked")
public Set getDependentProcesses(final String className) {
final Query query = getSession().getNamedQuery("getClassDependentProcesses");
query.setCacheable(true);
query.setString("className", className);
final List results = query.list();
if (results != null) {
return new HashSet(results);
}
return null;
}
/*
public ProcessDependency getProcessDependency(final ProcessDefinitionUUID processUUID) {
final Query query = getSession().getNamedQuery("getProcessDependency");
query.setCacheable(true);
query.setString("processUUID", processUUID.toString());
return (ProcessDependency) query.uniqueResult();
}
*/
public InternalProcess findLatestProcessById(final String processId) {
final Query query = getSession().getNamedQuery("findLatestProcessById");
query.setCacheable(true);
query.setString("processId", processId);
return (InternalProcess)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 InternalExecution internalExecution) {
final Query query = getSession().createQuery("from " + TimerImpl.class.getName() + " as timer where timer.execution = :exec");
query.setEntity("exec", internalExecution);
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;
}
public MetaData getMetaData(String key) {
final Query query = getSession().getNamedQuery("getMetaData");
query.setCacheable(true);
query.setString("key", key);
return (MetaData) query.uniqueResult();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy