use of org.jbpm.services.api.query.model.QueryParam in project jbpm by kiegroup.
the class CoreFunctionQueryParamBuilder method build.
@Override
public Object build() {
if (filterParams.length == 0 || filterParams.length <= index) {
return null;
}
QueryParam param = filterParams[index];
index++;
if ("group".equalsIgnoreCase(param.getOperator())) {
// if operator is group consider it as group functions
if (param.getValue().size() > 1) {
return new GroupColumnFilter(param.getColumn(), (String) param.getValue().get(0), (String) param.getValue().get(1), (Integer) param.getValue().get(2));
} else {
return new GroupColumnFilter(param.getColumn(), (String) param.getValue().get(0), null, -1);
}
}
// check core functions
CoreFunctionType type = CoreFunctionType.getByName(param.getOperator());
if (type != null) {
return new CoreFunctionFilter(param.getColumn(), type, param.getValue());
}
LogicalExprType logicalExprType = LogicalExprType.getByName(param.getOperator());
if (logicalExprType != null) {
return new LogicalExprFilter(param.getColumn(), logicalExprType, (List<ColumnFilter>) param.getValue());
}
// check aggregate functions
AggregateFunctionType aggregationType = AggregateFunctionType.getByName(param.getOperator());
if (aggregationType != null) {
return new AggregateColumnFilter(aggregationType, param.getColumn(), (String) param.getValue().get(0));
}
return new ExtraColumnFilter(param.getColumn(), (String) param.getValue().get(0));
}
use of org.jbpm.services.api.query.model.QueryParam in project jbpm by kiegroup.
the class QueryServiceImplTest method testGetProcessInstancesCountAndGroup.
@Test
public void testGetProcessInstancesCountAndGroup() {
query = new SqlQueryDefinition("getAllProcessInstances", dataSourceJNDIname);
query.setExpression("select * from processinstancelog");
queryService.registerQuery(query);
List<QueryDefinition> queries = queryService.getQueries(new QueryContext());
assertNotNull(queries);
assertEquals(1, queries.size());
QueryParam[] parameters = QueryParam.getBuilder().append(QueryParam.groupBy(COLUMN_PROCESSNAME)).append(QueryParam.count(COLUMN_PROCESSINSTANCEID)).get();
Collection<List<Object>> instances = queryService.query(query.getName(), RawListQueryMapper.get(), new QueryContext(), parameters);
assertNotNull(instances);
assertEquals(0, instances.size());
processInstanceId = processService.startProcess(deploymentUnit.getIdentifier(), "org.jbpm.writedocument");
assertNotNull(processInstanceId);
long processInstanceId2 = processService.startProcess(deploymentUnit.getIdentifier(), "org.jboss.qa.bpms.HumanTask");
instances = queryService.query(query.getName(), RawListQueryMapper.get(), new QueryContext(), parameters);
assertNotNull(instances);
assertEquals(2, instances.size());
// write document process
List<Object> result = instances.iterator().next();
assertNotNull(result);
assertEquals(2, result.size());
assertTrue(result.get(1) instanceof Number);
assertEquals(1, ((Number) result.get(1)).intValue());
// org.jboss.qa.bpms.HumanTask task process
result = instances.iterator().next();
assertNotNull(result);
assertEquals(2, result.size());
assertTrue(result.get(1) instanceof Number);
assertEquals(1, ((Number) result.get(1)).intValue());
processService.abortProcessInstance(processInstanceId2);
processService.abortProcessInstance(processInstanceId);
processInstanceId = null;
}
use of org.jbpm.services.api.query.model.QueryParam in project jbpm by kiegroup.
the class QueryServiceImplTest method testGetProcessInstancesGroupWithoutInterval.
@Test
public void testGetProcessInstancesGroupWithoutInterval() {
query = new SqlQueryDefinition("getAllProcessInstances", dataSourceJNDIname);
query.setExpression("select * from processinstancelog");
queryService.registerQuery(query);
List<QueryDefinition> queries = queryService.getQueries(new QueryContext());
assertNotNull(queries);
assertEquals(1, queries.size());
QueryParam[] parameters = QueryParam.getBuilder().append(QueryParam.groupBy(COLUMN_START)).get();
Collection<List<Object>> instances = queryService.query(query.getName(), RawListQueryMapper.get(), new QueryContext(), parameters);
assertNotNull(instances);
assertEquals(0, instances.size());
processInstanceId = processService.startProcess(deploymentUnit.getIdentifier(), "org.jbpm.writedocument");
assertNotNull(processInstanceId);
long processInstanceId2 = processService.startProcess(deploymentUnit.getIdentifier(), "org.jboss.qa.bpms.HumanTask");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
// expected date is day when processes started
String expectedDate = sdf.format(new Date());
instances = queryService.query(query.getName(), RawListQueryMapper.get(), new QueryContext(), parameters);
assertNotNull(instances);
assertEquals(1, instances.size());
// write document process
List<Object> result = instances.iterator().next();
assertNotNull(result);
assertEquals(1, result.size());
assertEquals(expectedDate, result.get(0));
processService.abortProcessInstance(processInstanceId2);
processService.abortProcessInstance(processInstanceId);
processInstanceId = null;
}
use of org.jbpm.services.api.query.model.QueryParam in project jbpm by kiegroup.
the class QueryServiceImplTest method testGetProcessInstancesGroupWithInterval.
@Test
public void testGetProcessInstancesGroupWithInterval() {
query = new SqlQueryDefinition("getAllProcessInstances", dataSourceJNDIname);
query.setExpression("select * from processinstancelog");
queryService.registerQuery(query);
List<QueryDefinition> queries = queryService.getQueries(new QueryContext());
assertNotNull(queries);
assertEquals(1, queries.size());
QueryParam[] parameters = QueryParam.getBuilder().append(QueryParam.groupBy(COLUMN_START, QueryParam.DAY, 30)).get();
Collection<List<Object>> instances = queryService.query(query.getName(), RawListQueryMapper.get(), new QueryContext(), parameters);
assertNotNull(instances);
assertEquals(0, instances.size());
processInstanceId = processService.startProcess(deploymentUnit.getIdentifier(), "org.jbpm.writedocument");
assertNotNull(processInstanceId);
long processInstanceId2 = processService.startProcess(deploymentUnit.getIdentifier(), "org.jboss.qa.bpms.HumanTask");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// expected date is day when processes started
String expectedDate = sdf.format(new Date());
instances = queryService.query(query.getName(), RawListQueryMapper.get(), new QueryContext(), parameters);
assertNotNull(instances);
assertEquals(1, instances.size());
// write document process
List<Object> result = instances.iterator().next();
assertNotNull(result);
assertEquals(1, result.size());
assertEquals(expectedDate, result.get(0));
processService.abortProcessInstance(processInstanceId2);
processService.abortProcessInstance(processInstanceId);
processInstanceId = null;
}
use of org.jbpm.services.api.query.model.QueryParam in project jbpm by kiegroup.
the class CoreFunctionQueryParamBuilderTest method testLogicalExprPassedAsQueryParam.
@Test
public void testLogicalExprPassedAsQueryParam() {
ArrayList values = new ArrayList();
values.add("value1");
values.add("value2");
final ColumnFilter filter1 = likeTo(COLUMN_PROCESSNAME, "%processName%");
final ColumnFilter filter2 = likeTo(COLUMN_PROCESSID, "%processName%");
ArrayList terms = new ArrayList();
terms.add(filter1);
terms.add(filter2);
QueryParam queryParam = new QueryParam("", LogicalExprType.OR.toString(), terms);
ArrayList queryParams = new ArrayList();
queryParams.add(queryParam);
coreFunctionQueryParamBuilder = new CoreFunctionQueryParamBuilder(queryParam);
Object builded = coreFunctionQueryParamBuilder.build();
assertTrue(builded instanceof LogicalExprFilter);
assertEquals("(" + COLUMN_PROCESSNAME + " like %processName%, true OR " + COLUMN_PROCESSID + " like %processName%, true)", builded.toString());
}
Aggregations