use of org.kie.kogito.persistence.api.query.Query in project kogito-apps by kiegroup.
the class ExplainerServiceHandlerRegistryTest method testCounterfactual_getExplainabilityResultByIdWithFinalResult.
@Test
@SuppressWarnings({ "rawtypes", "unchecked" })
public void testCounterfactual_getExplainabilityResultByIdWithFinalResult() {
Query query = mock(Query.class);
CounterfactualExplainabilityResult result = mock(CounterfactualExplainabilityResult.class);
when(result.getStage()).thenReturn(CounterfactualExplainabilityResult.Stage.FINAL);
when(storageCounterfactual.containsKey(eq(EXECUTION_ID))).thenReturn(true);
when(storageCounterfactual.query()).thenReturn(query);
when(query.filter(any())).thenReturn(query);
when(query.execute()).thenReturn(List.of(result));
CounterfactualExplainabilityResult actual = registry.getExplainabilityResultById(EXECUTION_ID, CounterfactualExplainabilityResult.class);
verify(counterfactualExplainerServiceHandler).getExplainabilityResultById(eq(EXECUTION_ID));
assertEquals(result, actual);
}
use of org.kie.kogito.persistence.api.query.Query in project kogito-apps by kiegroup.
the class PostgreSqlQuery 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 RedisQuery method execute.
@Override
public List<V> execute() {
io.redisearch.Query query = new io.redisearch.Query(RedisQueryFactory.buildQueryBody(indexName, filters));
setQueryLimitAndOffset(query);
if (sortBy != null) {
query.setSortBy(sortBy.getAttribute(), SortDirection.ASC.equals(sortBy.getSort()));
}
RedisQueryFactory.addFilters(query, filters);
SearchResult search = redisClient.search(query);
LOGGER.debug(String.format("%d documets have been found for the query.", search.totalResults));
return search.docs.stream().map(x -> {
try {
return JsonUtils.getMapper().readValue((String) x.get(RAW_OBJECT_FIELD), type);
} catch (IOException e) {
throw new RuntimeException("Could not deserialize a retrieved object.", e);
}
}).collect(Collectors.toList());
}
use of org.kie.kogito.persistence.api.query.Query in project kogito-apps by kiegroup.
the class TrustyServiceTest method givenNoStoredCounterfactualResultsWhenGetCounterfactualResultsThenEmptyCollectionIsReturned.
@Test
@SuppressWarnings({ "unchecked", "rawtypes" })
void givenNoStoredCounterfactualResultsWhenGetCounterfactualResultsThenEmptyCollectionIsReturned() {
Storage<String, CounterfactualExplainabilityResult> counterfactualStorage = mock(Storage.class);
Query queryMock = mock(Query.class);
when(queryMock.filter(any(List.class))).thenReturn(queryMock);
when(queryMock.execute()).thenReturn(new ArrayList());
when(counterfactualStorage.query()).thenReturn(queryMock);
when(trustyStorageServiceMock.getCounterfactualResultStorage()).thenReturn(counterfactualStorage);
assertTrue(trustyService.getCounterfactualResults(TEST_EXECUTION_ID, TEST_COUNTERFACTUAL_ID).isEmpty());
}
use of org.kie.kogito.persistence.api.query.Query in project kogito-apps by kiegroup.
the class TrustyServiceTest method givenManyExecutionsThenPaginationWorksProperly.
@Test
@SuppressWarnings("unchecked")
void givenManyExecutionsThenPaginationWorksProperly() {
List<Decision> decisions = new ArrayList<>();
IntStream.range(0, 10).forEach(x -> {
Decision d = new Decision();
d.setExecutionId(String.valueOf(x));
decisions.add(d);
});
Query queryMock = mock(Query.class);
when(queryMock.filter(any(List.class))).thenReturn(queryMock);
when(queryMock.sort(any(List.class))).thenReturn(queryMock);
when(queryMock.execute()).thenReturn(decisions);
Storage storageMock = mock(Storage.class);
decisions.forEach(x -> {
when(storageMock.put(eq(x.getExecutionId()), any(Object.class))).thenReturn(x);
when(storageMock.containsKey(eq(x.getExecutionId()))).thenReturn(false);
});
when(storageMock.query()).thenReturn(queryMock);
when(trustyStorageServiceMock.getDecisionsStorage()).thenReturn(storageMock);
decisions.forEach(x -> trustyService.storeDecision(x.getExecutionId(), x));
MatchedExecutionHeaders result = trustyService.getExecutionHeaders(OffsetDateTime.now().minusDays(1), OffsetDateTime.now(), 3, 5, "");
assertEquals(3, result.getExecutions().size());
assertEquals(decisions.size(), result.getAvailableResults());
result = trustyService.getExecutionHeaders(OffsetDateTime.now().minusDays(1), OffsetDateTime.now(), 100, 5, "");
assertEquals(5, result.getExecutions().size());
assertEquals(decisions.size(), result.getAvailableResults());
}
Aggregations