Search in sources :

Example 6 with Query

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());
}
Also used : HasId(org.summerb.easycrud.api.dto.HasId) EasyCrudService(org.summerb.easycrud.api.EasyCrudService) Query(org.summerb.easycrud.api.query.Query) PagerParams(org.summerb.easycrud.api.dto.PagerParams) PaginatedList(org.summerb.easycrud.api.dto.PaginatedList) TestDto1(integr.org.summerb.easycrud.TestDto1) Test(org.junit.Test)

Example 7 with Query

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);
}
Also used : MultipleItemsResult(org.summerb.easycrud.rest.dto.MultipleItemsResult) Query(org.summerb.easycrud.api.query.Query) PostMapping(org.springframework.web.bind.annotation.PostMapping)

Example 8 with Query

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);
}
Also used : Query(org.summerb.easycrud.api.query.Query) Attachment(org.summerb.minicms.api.dto.Attachment) RequestMapping(org.springframework.web.bind.annotation.RequestMapping) ResponseBody(org.springframework.web.bind.annotation.ResponseBody)

Example 9 with Query

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;
}
Also used : HasId(org.summerb.easycrud.api.dto.HasId) EasyCrudService(org.summerb.easycrud.api.EasyCrudService) Query(org.summerb.easycrud.api.query.Query) ArrayList(java.util.ArrayList) PaginatedList(org.summerb.easycrud.api.dto.PaginatedList) ArrayList(java.util.ArrayList) LinkedList(java.util.LinkedList) List(java.util.List)

Example 10 with Query

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;
}
Also used : Query(org.summerb.easycrud.api.query.Query)

Aggregations

Query (org.summerb.easycrud.api.query.Query)14 EasyCrudService (org.summerb.easycrud.api.EasyCrudService)4 HasId (org.summerb.easycrud.api.dto.HasId)4 ArrayList (java.util.ArrayList)3 PaginatedList (org.summerb.easycrud.api.dto.PaginatedList)3 TestDto1 (integr.org.summerb.easycrud.TestDto1)2 List (java.util.List)2 Test (org.junit.Test)2 RequestMapping (org.springframework.web.bind.annotation.RequestMapping)2 ResponseBody (org.springframework.web.bind.annotation.ResponseBody)2 PagerParams (org.summerb.easycrud.api.dto.PagerParams)2 ManyToManyDto (org.summerb.easycrud.api.dto.relations.ManyToManyDto)2 HashSet (java.util.HashSet)1 LinkedList (java.util.LinkedList)1 Entry (java.util.Map.Entry)1 Set (java.util.Set)1 PostMapping (org.springframework.web.bind.annotation.PostMapping)1 DataSet (org.summerb.easycrud.api.dto.datapackage.DataSet)1 Ref (org.summerb.easycrud.api.dto.relations.Ref)1 EntityNotFoundException (org.summerb.easycrud.api.exceptions.EntityNotFoundException)1