
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