use of io.vertigo.dynamo.domain.metamodel.association.DtListURIForNNAssociation in project vertigo by KleeGroup.
the class StoreAccountStorePlugin method getGroupURIs.
/**
* {@inheritDoc}
*/
@Override
public Set<URI<AccountGroup>> getGroupURIs(final URI<Account> accountURI) {
if (associationUserGroup instanceof AssociationSimpleDefinition) {
// case 1 group per user
final URI<Entity> userURI = new URI(getUserDtDefinition(), accountURI.getId());
final Entity userEntity = storeManager.getDataStore().readOne(userURI);
final Object fkValue = ((AssociationSimpleDefinition) associationUserGroup).getFKField().getDataAccessor().getValue(userEntity);
final URI<AccountGroup> groupURI = new URI(userGroupDtDefinition, fkValue);
return Collections.singleton(groupURI);
}
// case N group per user
// other case checked in postStart by assertions
Assertion.checkArgument(associationUserGroup instanceof AssociationNNDefinition, "Association ({0}) between User and Group must be an AssociationSimpleDefinition or an AssociationNNDefinition", associationUserGroup.getName());
final DtListURI groupDtListURI = new DtListURIForNNAssociation((AssociationNNDefinition) associationUserGroup, accountURI, associationGroupRoleName);
// -----
final DtList<? extends Entity> result = Home.getApp().getComponentSpace().resolve(StoreManager.class).getDataStore().findAll(groupDtListURI);
return result.stream().map(groupEntity -> groupToAccount(groupEntity).getURI()).collect(Collectors.toSet());
}
use of io.vertigo.dynamo.domain.metamodel.association.DtListURIForNNAssociation in project vertigo by KleeGroup.
the class StoreAccountStorePlugin method getAccountURIs.
/**
* {@inheritDoc}
*/
@Override
public Set<URI<Account>> getAccountURIs(final URI<AccountGroup> groupURI) {
final DtListURI userDtListURI;
if (associationUserGroup instanceof AssociationSimpleDefinition) {
userDtListURI = new DtListURIForSimpleAssociation((AssociationSimpleDefinition) associationUserGroup, groupURI, associationUserRoleName);
} else {
// autres cas éliminés par assertion dans le postStart
Assertion.checkArgument(associationUserGroup instanceof AssociationNNDefinition, "Association ({0}) between User and Group must be an AssociationSimpleDefinition or an AssociationNNDefinition", associationUserGroup.getName());
userDtListURI = new DtListURIForNNAssociation((AssociationNNDefinition) associationUserGroup, groupURI, associationUserRoleName);
}
// -----
final DtList<? extends Entity> result = Home.getApp().getComponentSpace().resolve(StoreManager.class).getDataStore().findAll(userDtListURI);
return result.stream().map(userEntity -> userToAccount(userEntity).getURI()).collect(Collectors.toSet());
}
use of io.vertigo.dynamo.domain.metamodel.association.DtListURIForNNAssociation in project vertigo by KleeGroup.
the class DtObjectUtil method createDtListURIForNNAssociation.
/**
* Récupération d'une URI de Collection à partir d'un dto
* @param entity the entity
* @param associationDefinitionName Nom de l'association
* @param roleName Nom du role
* @return URI de la collection référencée.
*/
public static DtListURIForNNAssociation createDtListURIForNNAssociation(final Entity entity, final String associationDefinitionName, final String roleName) {
Assertion.checkNotNull(associationDefinitionName);
Assertion.checkNotNull(roleName);
Assertion.checkNotNull(entity);
// -----
final AssociationNNDefinition associationDefinition = Home.getApp().getDefinitionSpace().resolve(associationDefinitionName, AssociationNNDefinition.class);
return new DtListURIForNNAssociation(associationDefinition, entity.getURI(), roleName);
}
Aggregations