use of org.summerb.easycrud.api.query.Query in project summerb by skarpushin.
the class DataSetLoaderImplTest method testLoadObjectsByIds_ExpectManyLoadByLongsOk.
@Test
public void testLoadObjectsByIds_ExpectManyLoadByLongsOk() throws Exception {
DataSetLoaderImpl fixture = buildMockedInstance();
EasyCrudService service = Mockito.mock(EasyCrudService.class);
when(fixture.getEasyCrudServiceResolver().resolveByEntityType("dto1")).thenReturn(service);
Matcher<Query> matcher = IsEqual.equalTo(Query.n().in(HasId.FN_ID, new Long[] { 1L, 2L }));
PaginatedList mockret = new PaginatedList<>(new PagerParams(), Arrays.asList(new TestDto1(), new TestDto1()), 2);
when(service.query(any(PagerParams.class), argThat(matcher))).thenReturn(mockret);
List<HasId> ret = fixture.loadObjectsByIds(ids(1L, 2L), "dto1");
assertNotNull(ret);
assertEquals(2, ret.size());
}
use of org.summerb.easycrud.api.query.Query in project summerb by skarpushin.
the class EasyCrudRestControllerBase method getListWithQuery.
@PostMapping(path = "/query", produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
public MultipleItemsResult<TId, TDto> getListWithQuery(@RequestBody EasyCrudQueryParams filteringParams, @RequestParam(value = "needPerms", required = false) boolean needPerms, @RequestParam(value = "referencesToResolve", required = false) List<String> referencesToResolve, @ApiIgnore PathVariablesMap pathVariables) throws Exception {
if ((filteringParams.getOrderBy() == null || filteringParams.getOrderBy().length == 0) && defaultOrderBy != null) {
filteringParams.setOrderBy(new OrderBy[] { defaultOrderBy });
}
if (filteringParams.getPagerParams() == null) {
filteringParams.setPagerParams(defaultPagerParams);
}
Query query = filteringParamsToQueryConverter.convert(filteringParams.getFilterParams(), service.getDtoClass());
query = queryNarrowerStrategy.narrow(query, pathVariables);
PaginatedList<TDto> rows = service.query(filteringParams.getPagerParams(), query, filteringParams.getOrderBy());
MultipleItemsResult<TId, TDto> ret = new MultipleItemsResult<>(service.getEntityTypeMessageCode(), rows);
if (needPerms) {
Preconditions.checkArgument(permissionsResolverStrategy != null, PERM_RESOLVER_REQ);
permissionsResolverStrategy.resolvePermissions(ret, pathVariables);
}
if (rows.getHasItems() && !CollectionUtils.isEmpty(referencesToResolve)) {
resolveReferences(referencesToResolve, ret, rows.getItems());
}
return convertBeforeReturnStrategy.convert(ret);
}
use of org.summerb.easycrud.api.query.Query in project summerb by skarpushin.
the class ArticleController method ajaxList.
@RequestMapping(method = RequestMethod.POST, value = "/rest/articles-attachments/ajaxList")
@ResponseBody
public Map<String, ? extends Object> ajaxList(@RequestBody EasyCrudQueryParams filteringParams, HttpServletResponse response) throws NotAuthorizedException {
Query query = filteringParamsToQueryConverter.convert(filteringParams.getFilterParams(), attachmentService.getDtoClass());
PaginatedList<Attachment> ret = attachmentService.query(filteringParams.getPagerParams(), query, filteringParams.getOrderBy());
return Collections.singletonMap(EasyCrudControllerBase.ATTR_LIST, ret);
}
use of org.summerb.easycrud.api.query.Query in project summerb by skarpushin.
the class DataSetLoaderImpl method loadObjectsByIds.
@Override
public List<HasId> loadObjectsByIds(Set<Object> ids, String entityTypeName) throws EntityNotFoundException, NotAuthorizedException {
Preconditions.checkArgument(!CollectionUtils.isEmpty(ids));
EasyCrudService service = easyCrudServiceResolver.resolveByEntityType(entityTypeName);
Object firstId = ids.iterator().next();
List<HasId> ret = new ArrayList<>(ids.size());
if (ids.size() == 1) {
HasId loaded = loadOne(firstId, service);
ret.add(loaded);
} else if (firstId instanceof Long || firstId instanceof String) {
Query query;
if (firstId instanceof String) {
query = Query.n().in(HasId.FN_ID, ids.toArray(new String[0]));
} else {
query = Query.n().in(HasId.FN_ID, ids.toArray(new Long[0]));
}
List loaded = loadMultipleByQuery(query, service);
assertFound(loaded.size() == ids.size(), entityTypeName, "One of: " + Arrays.toString(ids.toArray()));
ret.addAll(loaded);
} else {
List<HasId> loaded = loadOneByOne(ids, service);
ret.addAll(loaded);
}
return ret;
}
use of org.summerb.easycrud.api.query.Query in project summerb by skarpushin.
the class EasyCrudM2mServiceImpl method buildQueryToFindReferenceeByReferencerId.
private Query buildQueryToFindReferenceeByReferencerId(Set<T1Id> referencerIds) {
T1Id referenceeId = referencerIds.iterator().next();
Query q;
if (referenceeId instanceof String) {
q = Query.n().in(ManyToManyDto.FN_SRC, referencerIds.toArray(new String[0]));
} else if (referenceeId instanceof Long) {
q = Query.n().in(ManyToManyDto.FN_SRC, referencerIds.toArray(new Long[0]));
} else {
throw new RuntimeException("Unsupported type if Id = " + referenceeId.getClass());
}
return q;
}
Aggregations