Skip to content

Commit

Permalink
JBPM-4599 - Centralize (dynamic) query code
Browse files Browse the repository at this point in the history
  • Loading branch information
Marco Rietveld committed Apr 11, 2015
1 parent cd7b9ec commit 7b440b6
Show file tree
Hide file tree
Showing 25 changed files with 1,451 additions and 9 deletions.
4 changes: 4 additions & 0 deletions jbpm-audit/pom.xml
Expand Up @@ -80,6 +80,10 @@
<groupId>org.drools</groupId>
<artifactId>drools-persistence-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.jbpm</groupId>
<artifactId>jbpm-query-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
Expand Down
Expand Up @@ -17,6 +17,7 @@
package org.jbpm.process.audit;

import static org.kie.internal.query.QueryParameterIdentifiers.ASCENDING_VALUE;
import static org.kie.internal.query.QueryParameterIdentifiers.CORRELATION_KEY_LIST;
import static org.kie.internal.query.QueryParameterIdentifiers.DATE_LIST;
import static org.kie.internal.query.QueryParameterIdentifiers.DESCENDING_VALUE;
import static org.kie.internal.query.QueryParameterIdentifiers.DURATION_LIST;
Expand Down Expand Up @@ -48,7 +49,6 @@
import static org.kie.internal.query.QueryParameterIdentifiers.VAR_VALUE_ID_LIST;
import static org.kie.internal.query.QueryParameterIdentifiers.VAR_VAL_SEPARATOR;
import static org.kie.internal.query.QueryParameterIdentifiers.WORK_ITEM_ID_LIST;
import static org.kie.internal.query.QueryParameterIdentifiers.CORRELATION_KEY_LIST;

import java.util.ArrayList;
import java.util.Arrays;
Expand Down Expand Up @@ -78,11 +78,10 @@
import org.jbpm.process.audit.strategy.PersistenceStrategy;
import org.jbpm.process.audit.strategy.PersistenceStrategyType;
import org.jbpm.process.audit.strategy.StandaloneJtaStrategy;
import org.jbpm.query.jpa.impl.QueryAndParameterAppender;
import org.jbpm.query.jpa.service.QueryModificationService;
import org.kie.api.runtime.Environment;
import org.kie.api.runtime.EnvironmentName;
import org.kie.internal.query.QueryAndParameterAppender;
import org.kie.internal.query.QueryContext;
import org.kie.internal.query.QueryModificationService;
import org.kie.internal.query.data.QueryData;
import org.kie.internal.runtime.manager.audit.query.NodeInstanceLogDeleteBuilder;
import org.kie.internal.runtime.manager.audit.query.NodeInstanceLogQueryBuilder;
Expand Down
Expand Up @@ -9,9 +9,9 @@

import org.jbpm.process.audit.JPAAuditLogService;
import org.jbpm.process.audit.command.AuditCommand;
import org.jbpm.query.jpa.builder.impl.AbstractQueryBuilderImpl;
import org.kie.api.runtime.CommandExecutor;
import org.kie.internal.command.Context;
import org.kie.internal.query.AbstractQueryBuilderImpl;
import org.kie.internal.runtime.manager.audit.query.AuditQueryBuilder;

public class AbstractAuditDeleteBuilderImpl<T> extends AbstractQueryBuilderImpl<T> implements AuditQueryBuilder<T> {
Expand Down
Expand Up @@ -8,9 +8,9 @@

import org.jbpm.process.audit.JPAAuditLogService;
import org.jbpm.process.audit.command.AuditCommand;
import org.jbpm.query.jpa.builder.impl.AbstractQueryBuilderImpl;
import org.kie.api.runtime.CommandExecutor;
import org.kie.internal.command.Context;
import org.kie.internal.query.AbstractQueryBuilderImpl;
import org.kie.internal.runtime.manager.audit.query.AuditQueryBuilder;

public class AbstractAuditQueryBuilderImpl<T> extends AbstractQueryBuilderImpl<T> implements AuditQueryBuilder<T> {
Expand Down
1 change: 1 addition & 0 deletions jbpm-audit/src/test/resources/logback-test.xml
Expand Up @@ -17,6 +17,7 @@

<!-- set to debug to see queries -->
<logger name="org.jbpm.process.audit" level="info"/>
<logger name="org.jbpm.query.jpa" level="info"/>

<root level="warn">
<appender-ref ref="consoleAppender" />
Expand Down
4 changes: 4 additions & 0 deletions jbpm-human-task/jbpm-human-task-audit/pom.xml
Expand Up @@ -23,6 +23,10 @@
<groupId>org.jbpm</groupId>
<artifactId>jbpm-human-task-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.jbpm</groupId>
<artifactId>jbpm-query-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-api</artifactId>
Expand Down
4 changes: 4 additions & 0 deletions jbpm-human-task/jbpm-human-task-core/pom.xml
Expand Up @@ -26,6 +26,10 @@
<groupId>org.drools</groupId>
<artifactId>drools-core</artifactId>
</dependency>
<dependency>
<groupId>org.jbpm</groupId>
<artifactId>jbpm-query-jpa</artifactId>
</dependency>

<dependency>
<groupId>org.kie</groupId>
Expand Down
Expand Up @@ -5,10 +5,10 @@
import java.util.List;

import org.drools.core.command.CommandService;
import org.jbpm.query.jpa.builder.impl.AbstractQueryBuilderImpl;
import org.jbpm.services.task.commands.TaskQueryDataCommand;
import org.kie.api.task.model.Status;
import org.kie.api.task.model.TaskSummary;
import org.kie.internal.query.AbstractQueryBuilderImpl;
import org.kie.internal.query.ParametrizedQuery;
import org.kie.internal.query.QueryContext;
import org.kie.internal.query.data.QueryData;
Expand Down
Expand Up @@ -48,16 +48,16 @@
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;

import org.jbpm.query.jpa.impl.QueryAndParameterAppender;
import org.jbpm.query.jpa.service.QueryModificationService;
import org.jbpm.services.task.utils.ClassUtil;
import org.kie.api.task.UserGroupCallback;
import org.kie.api.task.model.OrganizationalEntity;
import org.kie.api.task.model.Status;
import org.kie.api.task.model.Task;
import org.kie.api.task.model.TaskSummary;
import org.kie.internal.query.QueryAndParameterAppender;
import org.kie.internal.query.QueryContext;
import org.kie.internal.query.QueryFilter;
import org.kie.internal.query.QueryModificationService;
import org.kie.internal.query.data.QueryData;
import org.kie.internal.task.api.TaskPersistenceContext;
import org.kie.internal.task.api.TaskQueryService;
Expand Down Expand Up @@ -748,6 +748,7 @@ public List<TaskSummary> query( String userId, QueryData queryData ) {
for( Entry<String, List<? extends Object>> paramsEntry : queryData.getIntersectParameters().entrySet() ) {
String listId = paramsEntry.getKey();
Class<?> criteriaFieldClass = criteriaFieldClasses.get(listId);
QueryAndParameterAppender.debugQueryParametersIdentifiers();
assert criteriaFieldClass != null : listId + ": criteria field class not found";
String jpqlField = criteriaFields.get(listId);
assert jpqlField != null : listId + ": criteria field not found";
Expand Down
4 changes: 4 additions & 0 deletions jbpm-human-task/jbpm-human-task-jpa/pom.xml
Expand Up @@ -20,6 +20,10 @@
<groupId>org.drools</groupId>
<artifactId>drools-core</artifactId>
</dependency>
<dependency>
<groupId>org.jbpm</groupId>
<artifactId>jbpm-query-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
Expand Down
16 changes: 16 additions & 0 deletions jbpm-query-jpa/.gitignore
@@ -0,0 +1,16 @@
/target
/local
/data
/bin

# Eclipse, Netbeans and IntelliJ files
/.*
!.gitignore
/nbproject
/*.ipr
/*.iws
/*.iml

# test database
/JPADroolsFlow.*.db
/btm.*
111 changes: 111 additions & 0 deletions jbpm-query-jpa/pom.xml
@@ -0,0 +1,111 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.jbpm</groupId>
<artifactId>jbpm</artifactId>
<version>6.3.0-SNAPSHOT</version>
</parent>

<artifactId>jbpm-query-jpa</artifactId>
<packaging>bundle</packaging><!-- bundle = jar + OSGi metadata -->

<name>jBPM :: Query</name>
<description>jBPM Query</description>

<build>
<testResources>
<testResource>
<directory>src/test/resources</directory>
<filtering>false</filtering>
</testResource>
<testResource>
<directory>src/test/filtered-resources</directory>
<filtering>true</filtering>
</testResource>
</testResources>

<plugins>
<plugin>
<!-- ensure that db files are deleted before _any_ run
otherwise we get tests failing because of leftover db's -->
<artifactId>maven-clean-plugin</artifactId>
<configuration>
<filesets>
<fileset>
<directory>${basedir}</directory>
<includes>
<include>btm*</include>
<include>*.db</include>
</includes>
</fileset>
</filesets>
</configuration>
</plugin>

<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<configuration>
<instructions>
<Bundle-SymbolicName>org.jbpm.query.jpa</Bundle-SymbolicName>
<Import-Package>
*
</Import-Package>
<Private-Package></Private-Package>
<Export-Package>
org.jbpm.query.*,
</Export-Package>
<!-- does this module need an activator?
<Bundle-Activator>org.jbpm.osgi.flow.core.Activator</Bundle-Activator>
-->
</instructions>
</configuration>
</plugin>
</plugins>
</build>

<dependencies>
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-internal</artifactId>
</dependency>

<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
</dependency>

<!-- osgi -->
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.core</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.compendium</artifactId>
<scope>provided</scope>
</dependency>

<!-- logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<scope>test</scope>
</dependency>

<!-- TEST -->
</dependencies>
</project>
@@ -0,0 +1,57 @@
package org.jbpm.query.jpa.builder.impl;

import org.kie.internal.query.data.QueryData;

public abstract class AbstractDeleteBuilderImpl<T> {

protected QueryData queryData = new QueryData();

public QueryData getQueryData() {
return queryData;
}

protected <P> void addRangeParameter( String listId, String name, P parameter, boolean start) {
if( parameter == null ) {
throw new IllegalArgumentException("A null " + name + " criteria is invalid." );
}
this.queryData.addRangeParameter(listId, parameter, start);
}

private <P> void addParameter( String listId, P... parameter ) {
this.queryData.addAppropriateParam(listId, parameter);
}

protected void addLongParameter( String listId, String name, long [] parameter) {
if( parameter == null ) {
throw new IllegalArgumentException("A null " + name + " criteria is invalid." );
}
Long [] wrapArr = new Long[parameter.length];
for( int i = 0; i < parameter.length; ++i ) {
wrapArr[i] = parameter[i];
}
addParameter(listId, wrapArr);
}

protected void addIntParameter( String listId, String name, int [] parameter) {
if( parameter == null ) {
throw new IllegalArgumentException("A null " + name + " criteria is invalid." );
}
Integer [] wrapArr = new Integer[parameter.length];
for( int i = 0; i < parameter.length; ++i ) {
wrapArr[i] = parameter[i];
}
addParameter(listId, wrapArr);
}

protected <P> void addObjectParameter(String listId, String name, P... parameter) {
if( parameter == null ) {
throw new IllegalArgumentException("A null " + name + " criteria is invalid." );
}
for( int i = 0; i < parameter.length; ++i ) {
if( parameter[i] == null ) {
throw new IllegalArgumentException("A null " + name + " criteria (argument " + i + ") is invalid." );
}
}
addParameter(listId, parameter);
}
}

0 comments on commit 7b440b6

Please sign in to comment.