AbstractDto can be identified by uuid identifier and if dto implements Codeable interface, then by it's string code too. Codeable interface is typically used for identity, role, system etc. ⇒ for dtos with some unique code. In this tutorial we will describe how to simple find single dto (or entity) by an identifier.
If we know dto's uuid identifier, we can use:
// by uuid IdmIdentityDto identity = (IdmIdentityDto) lookupService.lookupDto(IdmIdentityDto.class, UUID.fromString("e963dd20-0a10-4052-8355-1425d021299a")); // or more simpler by string uuid representation IdmIdentityDto identity = (IdmIdentityDto) lookupService.lookupDto(IdmIdentityDto.class, "e963dd20-0a10-4052-8355-1425d021299a");
If we know dto's string code, we can use:
// by string code IdmIdentityDto identity = (IdmIdentityDto) lookupService.lookupDto(IdmIdentityDto.class, "username");
Since IdmTreeNodeDto is not Codeable (tree node doesn't have unique code, because more tree types can exist), we can't use the previous example with lookupService for searching tree nodes by their code.
But if we don't have multiple tree types, the following script works for searching the tree node with the code "123456":
import eu.bcvsolutions.idm.core.api.dto.IdmTreeNodeDto;
import eu.bcvsolutions.idm.core.api.dto.filter.IdmTreeNodeFilter;
IdmTreeNodeFilter filter = new IdmTreeNodeFilter();
filter.setCode("123456");
List<IdmTreeNodeDto> trees = treeNodeService.find(filter , null).getContent();
IdmTreeNodeDto org = null;
if (!trees.isEmpty()) {
org = trees.get(0);
}
If you use this in the Groovy script, you must add following authorizations:
Classes:
Services: