Search in sources :

Example 1 with ManyToManyDto

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

the class EasyCrudM2mServiceImpl method findReferenceeByReferencers.

@Override
public Map<T1Id, List<T2Dto>> findReferenceeByReferencers(Set<T1Id> referencerIds) {
    try {
        Preconditions.checkArgument(!CollectionUtils.isEmpty(referencerIds), "referencerId is required");
        Query q = buildQueryToFindReferenceeByReferencerId(referencerIds);
        List<ManyToManyDto<T1Id, T2Id>> m2mPairs = query(PagerParams.ALL, q).getItems();
        if (m2mPairs.size() == 0) {
            // Q: Should we fill key set with null (or empty lists)??...
            return Collections.emptyMap();
        }
        Set<T2Id> referenceeIds = collectReferenceeIds(m2mPairs);
        List<T2Dto> referencee = serviceTo.query(PagerParams.ALL, buildQueryToFindObjectsByIds(referenceeIds)).getItems();
        Map<T1Id, List<T2Dto>> ret = buildResultForFindReferenceeByReferencer(m2mPairs, referencee);
        return ret;
    } catch (Throwable t) {
        throw new RuntimeException("Failed to find " + serviceTo.getEntityTypeMessageCode() + " refernced by " + serviceFrom.getEntityTypeMessageCode() + " identified by " + Arrays.toString(referencerIds.toArray()), t);
    }
}
Also used : ManyToManyDto(org.summerb.easycrud.api.dto.relations.ManyToManyDto) Query(org.summerb.easycrud.api.query.Query) ArrayList(java.util.ArrayList) List(java.util.List)

Example 2 with ManyToManyDto

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

the class EasyCrudM2mServiceImpl method findReferenceeByReferencer.

@Override
public List<T2Dto> findReferenceeByReferencer(T1Id referencerId) {
    try {
        Preconditions.checkArgument(referencerId != null, "referencerId is required");
        Query q = buildQueryToFindReferenceeByReferencerId(referencerId);
        List<ManyToManyDto<T1Id, T2Id>> m2mPairs = query(PagerParams.ALL, q).getItems();
        if (m2mPairs.size() == 0) {
            return Collections.emptyList();
        }
        Set<T2Id> referenceeIds = collectReferenceeIds(m2mPairs);
        return serviceTo.query(PagerParams.ALL, buildQueryToFindObjectsByIds(referenceeIds)).getItems();
    } catch (Throwable t) {
        throw new RuntimeException("Failed to find " + serviceTo.getEntityTypeMessageCode() + " refernced by " + serviceFrom.getEntityTypeMessageCode() + " identified by " + referencerId, t);
    }
}
Also used : ManyToManyDto(org.summerb.easycrud.api.dto.relations.ManyToManyDto) Query(org.summerb.easycrud.api.query.Query)

Aggregations

ManyToManyDto (org.summerb.easycrud.api.dto.relations.ManyToManyDto)2 Query (org.summerb.easycrud.api.query.Query)2 ArrayList (java.util.ArrayList)1 List (java.util.List)1