Search in sources :

Example 6 with DataSetLoader

use of org.summerb.easycrud.api.relations.DataSetLoader in project summerb by skarpushin.

the class DomLoaderDeviceGatewayTest method testResolveCollectionElementType_expectCorrectFieldTypeResolution.

@Test
public void testResolveCollectionElementType_expectCorrectFieldTypeResolution() {
    // Deps and fixture
    DataSetLoader dataSetLoader = mock(DataSetLoader.class);
    EasyCrudServiceResolver easyCrudServiceResolver = mock(EasyCrudServiceResolver.class);
    DomLoaderImpl f = new DomLoaderImpl(dataSetLoader, easyCrudServiceResolver);
    PropertyDescriptor pd = BeanUtils.getPropertyDescriptor(Env.class, "devices");
    // test
    Class<HasId<Object>> elType = f.resolveCollectionElementType(pd);
    assertEquals(Device.class, elType);
}
Also used : HasId(org.summerb.easycrud.api.dto.HasId) EasyCrudServiceResolver(org.summerb.easycrud.api.EasyCrudServiceResolver) PropertyDescriptor(java.beans.PropertyDescriptor) DataSetLoader(org.summerb.easycrud.api.relations.DataSetLoader) Test(org.junit.Test)

Example 7 with DataSetLoader

use of org.summerb.easycrud.api.relations.DataSetLoader in project summerb by skarpushin.

the class EasyCrudRestControllerBase method resolveReferences.

protected void resolveReferences(List<String> referencesToResolve, CrudQueryResult<TId, TDto> ret, List<TDto> items) throws EntityNotFoundException, NotAuthorizedException {
    Preconditions.checkState(dataSetLoader != null, "DataSetLoader is required to resolve references");
    Preconditions.checkState(referencesRegistry != null, "referencesRegistry is required to resolve references");
    DataSet ds = new DataSet();
    DataTable<TId, TDto> table = new DataTable<>(service.getEntityTypeMessageCode());
    table.putAll(items);
    ds.getTables().put(table.getName(), table);
    List<Ref> references = referencesToResolve.stream().map(name -> referencesRegistry.getRefByName(name)).collect(Collectors.toList());
    Ref[] refsArr = (Ref[]) references.toArray(new Ref[references.size()]);
    dataSetLoader.resolveReferencedObjects(ds, refsArr);
    // now remove initial table from dataset because we don't want to
    // duplicate this. It's already populated to rows
    ds.getTables().remove(table.getName());
    // x. ret
    ret.setRefsResolved(references.stream().collect(Collectors.toMap(Ref::getName, Function.identity())));
    ret.setRefs(ds);
}
Also used : PathVariable(org.springframework.web.bind.annotation.PathVariable) Arrays(java.util.Arrays) RequestParam(org.springframework.web.bind.annotation.RequestParam) PaginatedList(org.summerb.easycrud.api.dto.PaginatedList) EasyCrudQueryParams(org.summerb.easycrud.mvc.model.EasyCrudQueryParams) DataTable(org.summerb.easycrud.api.dto.datapackage.DataTable) Autowired(org.springframework.beans.factory.annotation.Autowired) DataSetLoader(org.summerb.easycrud.api.relations.DataSetLoader) PermissionsResolverStrategy(org.summerb.easycrud.rest.permissions.PermissionsResolverStrategy) Ref(org.summerb.easycrud.api.dto.relations.Ref) ReferencesRegistry(org.summerb.easycrud.api.relations.ReferencesRegistry) Function(java.util.function.Function) InitializingBean(org.springframework.beans.factory.InitializingBean) RequestBody(org.springframework.web.bind.annotation.RequestBody) OrderBy(org.summerb.easycrud.api.query.OrderBy) PutMapping(org.springframework.web.bind.annotation.PutMapping) EntityNotFoundException(org.summerb.easycrud.api.exceptions.EntityNotFoundException) GenericFilterBean(org.springframework.web.filter.GenericFilterBean) NotAuthorizedException(org.summerb.security.api.exceptions.NotAuthorizedException) GetMapping(org.springframework.web.bind.annotation.GetMapping) FilteringParamsToQueryConverterImpl(org.summerb.easycrud.mvc.filter.FilteringParamsToQueryConverterImpl) QueryNarrowerStrategy(org.summerb.easycrud.rest.querynarrower.QueryNarrowerStrategy) DeleteMapping(org.springframework.web.bind.annotation.DeleteMapping) Query(org.summerb.easycrud.api.query.Query) MultipleItemsResult(org.summerb.easycrud.rest.dto.MultipleItemsResult) PostMapping(org.springframework.web.bind.annotation.PostMapping) SingleItemResult(org.summerb.easycrud.rest.dto.SingleItemResult) MediaType(org.springframework.http.MediaType) BeansException(org.springframework.beans.BeansException) HasId(org.summerb.easycrud.api.dto.HasId) Collectors(java.util.stream.Collectors) ApplicationContext(org.springframework.context.ApplicationContext) ApiIgnore(springfox.documentation.annotations.ApiIgnore) List(java.util.List) DataSet(org.summerb.easycrud.api.dto.datapackage.DataSet) CollectionUtils(org.springframework.util.CollectionUtils) PathVariablesMap(org.summerb.easycrud.rest.commonpathvars.PathVariablesMap) PagerParams(org.summerb.easycrud.api.dto.PagerParams) EasyCrudService(org.summerb.easycrud.api.EasyCrudService) CrudQueryResult(org.summerb.easycrud.rest.dto.CrudQueryResult) Preconditions(com.google.common.base.Preconditions) ApplicationContextAware(org.springframework.context.ApplicationContextAware) FilteringParamsToQueryConverter(org.summerb.easycrud.mvc.filter.FilteringParamsToQueryConverter) DataTable(org.summerb.easycrud.api.dto.datapackage.DataTable) Ref(org.summerb.easycrud.api.dto.relations.Ref) DataSet(org.summerb.easycrud.api.dto.datapackage.DataSet)

Example 8 with DataSetLoader

use of org.summerb.easycrud.api.relations.DataSetLoader in project summerb by skarpushin.

the class DataSetLoaderTest method testResolveReferencedObjects_ExpectDirectReferencesLoadedOk.

@Test
public void testResolveReferencedObjects_ExpectDirectReferencesLoadedOk() throws EntityNotFoundException, NotAuthorizedException, FieldValidationException {
    DataSetLoader loader = buildLoaderCase1();
    TestDto1 d1i1 = new TestDto1();
    d1i1.setEnv("d1i1");
    d1i1.setLinkToFullDonwload("required");
    d1i1 = testDto1Service.create(d1i1);
    TestDto2 d2i1 = new TestDto2();
    d2i1.setEnv(d1i1.getId());
    d2i1.setLinkToFullDonwload("required");
    d2i1 = testDto2Service.create(d2i1);
    TestDto3 d3i1 = new TestDto3();
    d3i1.setLinkToDtoTwo(d2i1.getId());
    d3i1 = testDto3Service.create(d3i1);
    DataSet result = new DataSet();
    Map<String, Set<Object>> idsToLoad = new HashMap<String, Set<Object>>();
    idsToLoad.put(testDto3Service.getEntityTypeMessageCode(), ids(d3i1.getId()));
    loader.loadObjectsByIds(idsToLoad, result);
    loader.resolveReferencedObjects(result, Refs.ref3to2mand, Refs.ref2to1);
    assertNotNull(result.get(testDto2Service.getEntityTypeMessageCode()).find(d2i1.getId()));
    assertNotNull(result.get(testDto1Service.getEntityTypeMessageCode()).find(d1i1.getId()));
}
Also used : HashSet(java.util.HashSet) Set(java.util.Set) DataSet(org.summerb.easycrud.api.dto.datapackage.DataSet) DataSet(org.summerb.easycrud.api.dto.datapackage.DataSet) HashMap(java.util.HashMap) DataSetLoader(org.summerb.easycrud.api.relations.DataSetLoader) Test(org.junit.Test)

Example 9 with DataSetLoader

use of org.summerb.easycrud.api.relations.DataSetLoader in project summerb by skarpushin.

the class DataSetLoaderTest method testResolveReferencedObjects_ExpectOneToManyDirectsLoadedOk.

@Test
public void testResolveReferencedObjects_ExpectOneToManyDirectsLoadedOk() throws EntityNotFoundException, NotAuthorizedException, FieldValidationException {
    DataSetLoader loader = buildLoaderCase1();
    TestDto2 d2i1 = new TestDto2();
    d2i1.setEnv("required");
    d2i1.setLinkToFullDonwload("required");
    d2i1 = testDto2Service.create(d2i1);
    TestDto3 d3i1 = new TestDto3();
    d3i1.setLinkToDtoTwo(d2i1.getId());
    d3i1 = testDto3Service.create(d3i1);
    TestDto3 d3i2 = new TestDto3();
    d3i2.setLinkToDtoTwo(d2i1.getId());
    d3i2 = testDto3Service.create(d3i2);
    DataSet result = new DataSet();
    result.get(testDto2Service.getEntityTypeMessageCode()).put(d2i1);
    loader.resolveReferencedObjects(result, Refs.ref3to2mand.reverse());
    assertNotNull(result.get(testDto3Service.getEntityTypeMessageCode()).find(d3i1.getId()));
    assertNotNull(result.get(testDto3Service.getEntityTypeMessageCode()).find(d3i2.getId()));
}
Also used : DataSet(org.summerb.easycrud.api.dto.datapackage.DataSet) DataSetLoader(org.summerb.easycrud.api.relations.DataSetLoader) Test(org.junit.Test)

Example 10 with DataSetLoader

use of org.summerb.easycrud.api.relations.DataSetLoader in project summerb by skarpushin.

the class DataSetLoaderTest method testLoadObjectsByIds_ExpectTwoObjsOfSameTypeLoadedOk.

@Test
public void testLoadObjectsByIds_ExpectTwoObjsOfSameTypeLoadedOk() throws EntityNotFoundException, NotAuthorizedException, FieldValidationException {
    DataSetLoader loader = buildLoaderCase1();
    TestDto2 d2i1 = new TestDto2();
    d2i1.setEnv("d2i1");
    d2i1.setLinkToFullDonwload("asdad");
    d2i1 = testDto2Service.create(d2i1);
    TestDto2 d2i2 = new TestDto2();
    d2i2.setEnv("d2i2");
    d2i2.setLinkToFullDonwload("asdad");
    d2i2 = testDto2Service.create(d2i2);
    List<HasId> result = loader.loadObjectsByIds(ids(d2i1, d2i2), testDto2Service.getEntityTypeMessageCode());
    assertNotNull(result);
    assertEquals(2, result.size());
}
Also used : HasId(org.summerb.easycrud.api.dto.HasId) DataSetLoader(org.summerb.easycrud.api.relations.DataSetLoader) Test(org.junit.Test)

Aggregations

DataSetLoader (org.summerb.easycrud.api.relations.DataSetLoader)13 Test (org.junit.Test)12 DataSet (org.summerb.easycrud.api.dto.datapackage.DataSet)9 HasId (org.summerb.easycrud.api.dto.HasId)4 HashMap (java.util.HashMap)3 HashSet (java.util.HashSet)3 Set (java.util.Set)3 EasyCrudServiceResolver (org.summerb.easycrud.api.EasyCrudServiceResolver)2 Ref (org.summerb.easycrud.api.dto.relations.Ref)2 Preconditions (com.google.common.base.Preconditions)1 PropertyDescriptor (java.beans.PropertyDescriptor)1 Arrays (java.util.Arrays)1 List (java.util.List)1 Function (java.util.function.Function)1 Collectors (java.util.stream.Collectors)1 BeansException (org.springframework.beans.BeansException)1 InitializingBean (org.springframework.beans.factory.InitializingBean)1 Autowired (org.springframework.beans.factory.annotation.Autowired)1 ApplicationContext (org.springframework.context.ApplicationContext)1 ApplicationContextAware (org.springframework.context.ApplicationContextAware)1