package org.jbpm.process.audit.query; import static org.jbpm.persistence.util.PersistenceUtil.JBPM_PERSISTENCE_UNIT_NAME; import static org.jbpm.persistence.util.PersistenceUtil.cleanUp; import static org.jbpm.persistence.util.PersistenceUtil.setupWithPoolingDataSource; import static org.junit.Assert.assertNotNull; import static org.kie.api.runtime.EnvironmentName.ENTITY_MANAGER_FACTORY; import static org.kie.internal.query.QueryParameterIdentifiers.NODE_ID_LIST; import static org.kie.internal.query.QueryParameterIdentifiers.NODE_INSTANCE_ID_LIST; import static org.kie.internal.query.QueryParameterIdentifiers.NODE_NAME_LIST; import static org.kie.internal.query.QueryParameterIdentifiers.PROCESS_ID_LIST; import static org.kie.internal.query.QueryParameterIdentifiers.PROCESS_INSTANCE_ID_LIST; import static org.kie.internal.query.QueryParameterIdentifiers.TYPE_LIST; import java.util.HashMap; import java.util.List; import javax.persistence.EntityManagerFactory; import org.jbpm.process.audit.AuditQueryCriteriaUtil; import org.jbpm.process.audit.JPAAuditLogService; import org.jbpm.process.audit.NodeInstanceLog; import org.jbpm.query.jpa.data.QueryWhere; import org.jbpm.test.util.AbstractBaseTest; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import org.kie.internal.query.QueryParameterIdentifiers; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class AuditQueryCriteriaUtilTest { private static HashMap<String, Object> context; private static EntityManagerFactory emf; private static AuditQueryCriteriaUtil util; private static JPAAuditLogService auditLogService; private static final Logger logger = LoggerFactory.getLogger(AuditQueryCriteriaUtilTest.class); @BeforeClass public static void configure() { AbstractBaseTest.hackTheDatabaseMetadataLoggerBecauseTheresALogbackXmlInTheClasspath(); context = setupWithPoolingDataSource(JBPM_PERSISTENCE_UNIT_NAME); emf = (EntityManagerFactory) context.get(ENTITY_MANAGER_FACTORY); auditLogService = new JPAAuditLogService(emf); util = new AuditQueryCriteriaUtil(auditLogService); } @AfterClass public static void reset() { cleanUp(context); } @Test public void auditQueryCriteriaWhereTest() { QueryWhere where = new QueryWhere(); // OR where.setToUnion(); where.addParameter(NODE_ID_LIST, "node.id"); where.addParameter(NODE_INSTANCE_ID_LIST, "node-inst"); where.addParameter(TYPE_LIST, "type"); // OR ( where.newGroup(); where.setToLike(); where.addParameter(NODE_NAME_LIST, "n*ends.X" ); where.setToNormal(); where.setToIntersection(); where.addParameter(TYPE_LIST, "oneOf3", "twoOf3", "thrOf3" ); where.endGroup(); where.setToIntersection(); where.addRangeParameter(PROCESS_INSTANCE_ID_LIST, 0l, true); where.addRangeParameter(PROCESS_INSTANCE_ID_LIST, 10l, false); where.addParameter(PROCESS_ID_LIST, "org.process.id"); List<NodeInstanceLog> result = util.doCriteriaQuery(where, NodeInstanceLog.class); assertNotNull( "Null result from 1rst query.", result ); } @Test public void auditQueryCriteriaMetaTest() { QueryWhere where = new QueryWhere(); where.setAscending(QueryParameterIdentifiers.NODE_INSTANCE_ID_LIST); where.setCount(10); where.setOffset(2); List<NodeInstanceLog> result = util.doCriteriaQuery(where, NodeInstanceLog.class); assertNotNull( "Null result from 1rst query.", result ); } }