
org.jbpm.services.task.persistence.AbstractTaskQueryCriteriaUtil Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jbpm-human-task-jpa Show documentation
Show all versions of jbpm-human-task-jpa Show documentation
jBPM JPA Human Task Persistence
package org.jbpm.services.task.persistence;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import org.jbpm.query.jpa.data.QueryCriteria;
import org.jbpm.query.jpa.data.QueryWhere;
import org.jbpm.query.jpa.impl.QueryCriteriaUtil;
import org.kie.internal.task.api.TaskPersistenceContext;
public class AbstractTaskQueryCriteriaUtil extends QueryCriteriaUtil {
protected final JPATaskPersistenceContext persistenceContext;
public AbstractTaskQueryCriteriaUtil(TaskPersistenceContext persistenceContext) {
this.persistenceContext = (JPATaskPersistenceContext) persistenceContext;
}
public AbstractTaskQueryCriteriaUtil() {
this.persistenceContext = null;
}
protected EntityManager getEntityManager() {
return this.persistenceContext.getEntityManager();
}
protected Object joinTransaction(EntityManager em) {
this.persistenceContext.joinTransaction();
return true;
}
protected CriteriaBuilder getCriteriaBuilder() {
return getEntityManager().getCriteriaBuilder();
}
protected void closeEntityManager(EntityManager em, Object transaction) {
// do nothing
}
@Override
protected boolean initializeCriteriaAttributes() {
return shouldBeImplementedInChildClass(boolean.class);
}
@Override
protected Predicate implSpecificCreatePredicateFromSingleCriteria( CriteriaQuery query, CriteriaBuilder builder,
Class queryType, QueryCriteria criteria, QueryWhere queryWhere ) {
return shouldBeImplementedInChildClass(Predicate.class);
}
@Override
protected List createQueryAndCallApplyMetaCriteriaAndGetResult(QueryWhere queryWhere, CriteriaQuery criteriaQuery, CriteriaBuilder builder) {
EntityManager em = getEntityManager();
Object newTx = joinTransaction(em);
Query query = em.createQuery(criteriaQuery);
applyMetaCriteriaToQuery(query, queryWhere);
// execute query
List result = query.getResultList();
// depending on the context, this is done
// 1. here
// 1. *outside* of this class (this method is a no-op)
closeEntityManager(em, newTx);
return result;
}
private static T shouldBeImplementedInChildClass(Class returnClass) {
String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();
throw new IllegalAccessError(AbstractTaskQueryCriteriaUtil.class.getSimpleName() + "." + methodName + " should be overridden in the extending class!");
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy