use of org.kie.kogito.persistence.api.query.Query in project kogito-apps by kiegroup.
the class TrustyServiceTest method givenStoredCounterfactualRequestsWhenGetCounterfactualRequestsThenRequestsAreReturned.
@Test
@SuppressWarnings({ "unchecked", "rawtypes" })
void givenStoredCounterfactualRequestsWhenGetCounterfactualRequestsThenRequestsAreReturned() {
Storage<String, CounterfactualExplainabilityRequest> counterfactualStorage = mock(Storage.class);
CounterfactualExplainabilityRequest request1 = mock(CounterfactualExplainabilityRequest.class);
CounterfactualExplainabilityRequest request2 = mock(CounterfactualExplainabilityRequest.class);
Query queryMock = mock(Query.class);
when(queryMock.filter(any(List.class))).thenReturn(queryMock);
when(queryMock.execute()).thenReturn(List.of(request1, request2));
when(counterfactualStorage.query()).thenReturn(queryMock);
when(trustyStorageServiceMock.getCounterfactualRequestStorage()).thenReturn(counterfactualStorage);
assertTrue(trustyService.getCounterfactualRequests(TEST_EXECUTION_ID).containsAll(List.of(request1, request2)));
}
use of org.kie.kogito.persistence.api.query.Query in project kogito-apps by kiegroup.
the class TrustyServiceTest method givenMultipleStoredCounterfactualRequestsWhenGetCounterfactualRequestThenIllegalArgumentExceptionIsThrown.
@Test
@SuppressWarnings({ "unchecked", "rawtypes" })
void givenMultipleStoredCounterfactualRequestsWhenGetCounterfactualRequestThenIllegalArgumentExceptionIsThrown() {
Storage<String, CounterfactualExplainabilityRequest> counterfactualStorage = mock(Storage.class);
CounterfactualExplainabilityRequest request1 = mock(CounterfactualExplainabilityRequest.class);
CounterfactualExplainabilityRequest request2 = mock(CounterfactualExplainabilityRequest.class);
Query queryMock = mock(Query.class);
when(queryMock.filter(any(List.class))).thenReturn(queryMock);
when(queryMock.execute()).thenReturn(List.of(request1, request2));
when(counterfactualStorage.query()).thenReturn(queryMock);
when(trustyStorageServiceMock.getCounterfactualRequestStorage()).thenReturn(counterfactualStorage);
assertThrows(IllegalArgumentException.class, () -> trustyService.getCounterfactualRequest(TEST_EXECUTION_ID, TEST_COUNTERFACTUAL_ID));
}
use of org.kie.kogito.persistence.api.query.Query in project kogito-apps by kiegroup.
the class GraphQLSchemaManager method createSchema.
private GraphQLSchema createSchema() {
InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("schema.graphqls");
SchemaParser schemaParser = new SchemaParser();
TypeDefinitionRegistry typeDefinitionRegistry = schemaParser.parse(new InputStreamReader(stream));
RuntimeWiring runtimeWiring = RuntimeWiring.newRuntimeWiring().type("Query", builder -> {
builder.dataFetcher("ProcessInstances", this::getProcessInstancesValues);
builder.dataFetcher("UserTaskInstances", this::getUserTaskInstancesValues);
builder.dataFetcher("Jobs", this::getJobsValues);
return builder;
}).type("Mutation", builder -> {
builder.dataFetcher("ProcessInstanceAbort", this::abortProcessInstance);
builder.dataFetcher("ProcessInstanceRetry", this::retryProcessInstance);
builder.dataFetcher("ProcessInstanceSkip", this::skipProcessInstance);
builder.dataFetcher("ProcessInstanceUpdateVariables", this::updateProcessInstanceVariables);
builder.dataFetcher("NodeInstanceTrigger", this::triggerNodeInstance);
builder.dataFetcher("NodeInstanceRetrigger", this::retriggerNodeInstance);
builder.dataFetcher("NodeInstanceCancel", this::cancelNodeInstance);
builder.dataFetcher("JobCancel", this::cancelJob);
builder.dataFetcher("JobReschedule", this::rescheduleJob);
builder.dataFetcher("UserTaskInstanceUpdate", this::updateUserTaskInstance);
builder.dataFetcher("UserTaskInstanceCommentCreate", this::createTaskInstanceComment);
builder.dataFetcher("UserTaskInstanceAttachmentCreate", this::createTaskInstanceAttachment);
builder.dataFetcher("UserTaskInstanceCommentUpdate", this::updateUserTaskComment);
builder.dataFetcher("UserTaskInstanceCommentDelete", this::deleteUserTaskComment);
builder.dataFetcher("UserTaskInstanceAttachmentUpdate", this::updateUserTaskAttachment);
builder.dataFetcher("UserTaskInstanceAttachmentDelete", this::deleteUserTaskAttachment);
return builder;
}).type("ProcessInstance", builder -> {
builder.dataFetcher("parentProcessInstance", this::getParentProcessInstanceValue);
builder.dataFetcher("childProcessInstances", this::getChildProcessInstancesValues);
builder.dataFetcher("serviceUrl", this::getProcessInstanceServiceUrl);
builder.dataFetcher("diagram", this::getProcessInstanceDiagram);
builder.dataFetcher("nodeDefinitions", this::getProcessNodes);
return builder;
}).type("UserTaskInstance", builder -> {
builder.dataFetcher("schema", this::getUserTaskInstanceSchema);
return builder;
}).type("ProcessInstanceMeta", builder -> {
builder.dataFetcher("serviceUrl", this::getProcessInstanceJsonServiceUrl);
return builder;
}).type("ProcessInstanceState", builder -> {
builder.enumValues(name -> ProcessInstanceState.valueOf(name).ordinal());
return builder;
}).type("Subscription", builder -> {
builder.dataFetcher(PROCESS_INSTANCE_ADDED, getProcessInstanceAddedDataFetcher());
builder.dataFetcher(PROCESS_INSTANCE_UPDATED, getProcessInstanceUpdatedDataFetcher());
builder.dataFetcher(USER_TASK_INSTANCE_ADDED, getUserTaskInstanceAddedDataFetcher());
builder.dataFetcher(USER_TASK_INSTANCE_UPDATED, getUserTaskInstanceUpdatedDataFetcher());
builder.dataFetcher(JOB_ADDED, getJobAddedDataFetcher());
builder.dataFetcher(JOB_UPDATED, getJobUpdatedDataFetcher());
return builder;
}).scalar(qlDateTimeScalarType).build();
SchemaGenerator schemaGenerator = new SchemaGenerator();
return schemaGenerator.makeExecutableSchema(typeDefinitionRegistry, runtimeWiring);
}
use of org.kie.kogito.persistence.api.query.Query in project kogito-apps by kiegroup.
the class OracleQuery method execute.
@Override
public List<T> execute() {
CriteriaBuilder builder = repository.getEntityManager().getCriteriaBuilder();
CriteriaQuery<E> criteriaQuery = builder.createQuery(entityClass);
Root<E> root = criteriaQuery.from(entityClass);
if (filters != null && !filters.isEmpty()) {
List<Predicate> predicates = getPredicates(builder, root);
criteriaQuery.where(predicates.toArray(new Predicate[] {}));
}
if (sortBy != null && !sortBy.isEmpty()) {
List<Order> orderBy = sortBy.stream().map(f -> {
Path attributePath = getAttributePath(root, f.getAttribute());
return f.getSort() == SortDirection.ASC ? builder.asc(attributePath) : builder.desc(attributePath);
}).collect(toList());
criteriaQuery.orderBy(orderBy);
}
javax.persistence.Query query = repository.getEntityManager().createQuery(criteriaQuery);
if (limit != null) {
query.setMaxResults(limit);
}
if (offset != null) {
query.setFirstResult(offset);
}
return (List<T>) query.getResultList().stream().map(mapper).collect(toList());
}
use of org.kie.kogito.persistence.api.query.Query in project kogito-apps by kiegroup.
the class OracleQuery method execute.
@Override
public List<T> execute() {
// Get type information from filters/sorting to cast JSON document fields in query
fields = addFilters(new HashMap<>(), filters);
if (sortBy != null && !sortBy.isEmpty()) {
sortBy.stream().filter(sortBy -> !fields.containsKey(sortBy.getAttribute())).forEach(sortBy -> fields.put(sortBy.getAttribute(), new JsonField(sortBy.getAttribute())));
}
// Build the query to retrieve the filtered data from the temporary table above.
StringBuilder queryString = new StringBuilder("SELECT key, name, json_value FROM kogito_data_cache ").append(" WHERE name = '").append(name).append("'");
if (filters != null && !filters.isEmpty()) {
queryString.append(" AND ");
queryString.append(filters.stream().map(filter -> new StringBuilder().append(filterStringFunction(filter))).collect(joining(AND)));
}
// Sorting
if (sortBy != null && !sortBy.isEmpty()) {
queryString.append(" ORDER BY ");
queryString.append(sortBy.stream().map(f -> {
final JsonField field = fields.get(f.getAttribute());
return cast(field, format(ATTRIBUTE_ACCESSOR, f.getAttribute())).append(" ").append(f.getSort().name());
}).collect(joining(", ")));
}
LOGGER.debug("Executing Oracle query: {}", queryString);
javax.persistence.Query query = repository.getEntityManager().createNativeQuery(queryString.toString()).unwrap(NativeQuery.class).addScalar("json_value", new JsonBlobType(type));
if (limit != null) {
query.setMaxResults(limit);
}
if (offset != null) {
query.setFirstResult(offset);
}
List<?> results = query.getResultList();
return results.stream().map(r -> {
if (r == null) {
return null;
}
try {
return objectMapper.readValue(objectMapper.writeValueAsString(r), type);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}).collect(Collectors.toList());
}
Aggregations