Search in sources :

Example 1 with SysAttributeControlledValueFilter

use of eu.bcvsolutions.idm.acc.dto.filter.SysAttributeControlledValueFilter in project CzechIdMng by bcvsolutions.

the class DefaultSysAttributeControlledValueService method setControlledValues.

@Transactional
@Override
public void setControlledValues(SysSystemAttributeMappingDto attributeMapping, List<Serializable> controlledAttributeValues) {
    Assert.notNull(attributeMapping, "Attribute mapping is required.");
    Assert.notNull(controlledAttributeValues, "Controlled values are required.");
    SysAttributeControlledValueFilter attributeControlledValueFilter = new SysAttributeControlledValueFilter();
    attributeControlledValueFilter.setAttributeMappingId(attributeMapping.getId());
    attributeControlledValueFilter.setHistoricValue(Boolean.FALSE);
    // Search controlled values for that attribute
    List<SysAttributeControlledValueDto> controlledValues = // 
    this.find(attributeControlledValueFilter, null).getContent();
    // Search values for which does not exists same controlled value (for given
    // attribute)
    List<Serializable> valuesToAdd = controlledAttributeValues.stream().filter(newValue -> {
        // 
        return !// 
        controlledValues.stream().filter(// 
        controlledValue -> controlledValue.getValue().equals(newValue)).findFirst().isPresent();
    }).collect(Collectors.toList());
    // Search old controlled values which does not exists in new definition
    List<SysAttributeControlledValueDto> controlledValuesToDelete = controlledValues.stream().filter(controlledValue -> {
        // 
        return !// 
        controlledAttributeValues.stream().filter(// 
        newValue -> controlledValue.getValue().equals(newValue)).findFirst().isPresent();
    }).collect(Collectors.toList());
    // Delete old values
    controlledValuesToDelete.forEach(controlledValue -> this.delete(controlledValue));
    // Persists new controlled values
    valuesToAdd.forEach(valueToAdd -> {
        SysAttributeControlledValueDto controlledValue = new SysAttributeControlledValueDto();
        controlledValue.setAttributeMapping(attributeMapping.getId());
        controlledValue.setHistoricValue(false);
        controlledValue.setValue(valueToAdd);
        controlledValue = this.save(controlledValue);
    });
    // Search historic controlled values for that attribute
    attributeControlledValueFilter.setHistoricValue(Boolean.TRUE);
    List<SysAttributeControlledValueDto> historicControlledValues = // 
    this.find(attributeControlledValueFilter, // 
    null).getContent().stream().collect(Collectors.toList());
    List<SysAttributeControlledValueDto> historicValuesToDelete = // 
    historicControlledValues.stream().filter(// 
    historicValue -> controlledAttributeValues.contains(historicValue.getValue())).collect(Collectors.toList());
    // If historic value exists in current definition, then will be deleted
    historicValuesToDelete.forEach(historicValue -> {
        this.delete(historicValue);
    });
    // Controlled values are synchronized now, so we can set evict to false
    attributeMapping.setEvictControlledValuesCache(false);
    systemAttributeMappingService.save(attributeMapping);
}
Also used : SysAttributeControlledValue_(eu.bcvsolutions.idm.acc.entity.SysAttributeControlledValue_) ObjectUtils(org.springframework.util.ObjectUtils) SysAttributeControlledValueService(eu.bcvsolutions.idm.acc.service.api.SysAttributeControlledValueService) AbstractEventableDtoService(eu.bcvsolutions.idm.core.api.service.AbstractEventableDtoService) Autowired(org.springframework.beans.factory.annotation.Autowired) SysAttributeControlledValueDto(eu.bcvsolutions.idm.acc.dto.SysAttributeControlledValueDto) SysAttributeControlledValueFilter(eu.bcvsolutions.idm.acc.dto.filter.SysAttributeControlledValueFilter) Collectors(java.util.stream.Collectors) Serializable(java.io.Serializable) List(java.util.List) SysAttributeControlledValue(eu.bcvsolutions.idm.acc.entity.SysAttributeControlledValue) Predicate(javax.persistence.criteria.Predicate) SysAttributeControlledValueRepository(eu.bcvsolutions.idm.acc.repository.SysAttributeControlledValueRepository) Service(org.springframework.stereotype.Service) SysSystemAttributeMappingDto(eu.bcvsolutions.idm.acc.dto.SysSystemAttributeMappingDto) CriteriaBuilder(javax.persistence.criteria.CriteriaBuilder) SysSystemAttributeMappingService(eu.bcvsolutions.idm.acc.service.api.SysSystemAttributeMappingService) Root(javax.persistence.criteria.Root) EntityEventManager(eu.bcvsolutions.idm.core.api.service.EntityEventManager) Transactional(org.springframework.transaction.annotation.Transactional) Assert(org.springframework.util.Assert) Serializable(java.io.Serializable) SysAttributeControlledValueDto(eu.bcvsolutions.idm.acc.dto.SysAttributeControlledValueDto) SysAttributeControlledValueFilter(eu.bcvsolutions.idm.acc.dto.filter.SysAttributeControlledValueFilter) Transactional(org.springframework.transaction.annotation.Transactional)

Example 2 with SysAttributeControlledValueFilter

use of eu.bcvsolutions.idm.acc.dto.filter.SysAttributeControlledValueFilter in project CzechIdMng by bcvsolutions.

the class DefaultSysAttributeControlledValueService method addHistoricValue.

@Transactional
@Override
public void addHistoricValue(SysSystemAttributeMappingDto attributeMapping, Serializable value) {
    // If value doesn't exists do nothing
    if (ObjectUtils.isEmpty(value)) {
        return;
    }
    Assert.notNull(attributeMapping, "Attribute mapping is required.");
    SysAttributeControlledValueFilter attributeControlledValueFilter = new SysAttributeControlledValueFilter();
    attributeControlledValueFilter.setAttributeMappingId(attributeMapping.getId());
    attributeControlledValueFilter.setHistoricValue(Boolean.TRUE);
    // Search historic values for that attribute
    List<SysAttributeControlledValueDto> historicValues = // 
    this.find(attributeControlledValueFilter, null).getContent();
    boolean historicValueExists = // 
    historicValues.stream().filter(// 
    historicValue -> historicValue.getValue().equals(value)).findFirst().isPresent();
    if (!historicValueExists) {
        SysAttributeControlledValueDto historicValue = new SysAttributeControlledValueDto();
        historicValue.setAttributeMapping(attributeMapping.getId());
        historicValue.setHistoricValue(true);
        historicValue.setValue(value);
        this.save(historicValue);
    }
}
Also used : SysAttributeControlledValueDto(eu.bcvsolutions.idm.acc.dto.SysAttributeControlledValueDto) SysAttributeControlledValueFilter(eu.bcvsolutions.idm.acc.dto.filter.SysAttributeControlledValueFilter) Transactional(org.springframework.transaction.annotation.Transactional)

Example 3 with SysAttributeControlledValueFilter

use of eu.bcvsolutions.idm.acc.dto.filter.SysAttributeControlledValueFilter in project CzechIdMng by bcvsolutions.

the class ProvisioningMergeTest method testSkipMergeValueIfContractExcluded.

@Test
public void testSkipMergeValueIfContractExcluded() {
    SysSystemDto system = helper.createSystem("test_resource");
    SysSystemMappingDto mapping = helper.createMapping(system);
    IdmRoleDto roleOne = helper.createRole();
    IdmRoleDto roleTwo = helper.createRole();
    SysRoleSystemDto roleSystemOne = helper.createRoleSystem(roleOne, system);
    SysRoleSystemDto roleSystemTwo = helper.createRoleSystem(roleTwo, system);
    SysSchemaAttributeDto rightsSchemaAttribute = new SysSchemaAttributeDto();
    rightsSchemaAttribute.setObjectClass(mapping.getObjectClass());
    rightsSchemaAttribute.setName(RIGHTS_ATTRIBUTE);
    rightsSchemaAttribute.setMultivalued(true);
    rightsSchemaAttribute.setClassType(String.class.getName());
    rightsSchemaAttribute.setReadable(true);
    rightsSchemaAttribute.setUpdateable(true);
    rightsSchemaAttribute = schemaAttributeService.save(rightsSchemaAttribute);
    SysSystemAttributeMappingDto rightsAttribute = new SysSystemAttributeMappingDto();
    rightsAttribute.setSchemaAttribute(rightsSchemaAttribute.getId());
    rightsAttribute.setSystemMapping(mapping.getId());
    rightsAttribute.setName(RIGHTS_ATTRIBUTE);
    rightsAttribute.setStrategyType(AttributeMappingStrategyType.MERGE);
    rightsAttribute = attributeMappingService.save(rightsAttribute);
    SysRoleSystemAttributeDto roleAttributeOne = new SysRoleSystemAttributeDto();
    roleAttributeOne.setName(RIGHTS_ATTRIBUTE);
    roleAttributeOne.setEntityAttribute(false);
    roleAttributeOne.setExtendedAttribute(false);
    roleAttributeOne.setRoleSystem(roleSystemOne.getId());
    roleAttributeOne.setStrategyType(AttributeMappingStrategyType.MERGE);
    roleAttributeOne.setSystemAttributeMapping(rightsAttribute.getId());
    roleAttributeOne.setTransformToResourceScript("return '" + ONE_VALUE + "';");
    roleAttributeOne = roleSystemAttributeService.saveInternal(roleAttributeOne);
    List<Serializable> controlledAttributeValues = attributeMappingService.getControlledAttributeValues(system.getId(), mapping.getEntityType(), RIGHTS_ATTRIBUTE);
    SysRoleSystemAttributeDto roleAttributeTwo = new SysRoleSystemAttributeDto();
    roleAttributeTwo.setName(RIGHTS_ATTRIBUTE);
    roleAttributeTwo.setEntityAttribute(false);
    roleAttributeTwo.setExtendedAttribute(false);
    roleAttributeTwo.setRoleSystem(roleSystemTwo.getId());
    roleAttributeTwo.setStrategyType(AttributeMappingStrategyType.MERGE);
    roleAttributeTwo.setSystemAttributeMapping(rightsAttribute.getId());
    roleAttributeTwo.setTransformToResourceScript("return '" + TWO_VALUE + "';");
    roleAttributeTwo = roleSystemAttributeService.saveInternal(roleAttributeTwo);
    controlledAttributeValues = attributeMappingService.getControlledAttributeValues(system.getId(), mapping.getEntityType(), RIGHTS_ATTRIBUTE);
    assertNotNull(controlledAttributeValues);
    assertEquals(2, controlledAttributeValues.size());
    assertTrue(controlledAttributeValues.contains(ONE_VALUE));
    assertTrue(controlledAttributeValues.contains(TWO_VALUE));
    SysAttributeControlledValueFilter attributeControlledValueFilter = new SysAttributeControlledValueFilter();
    attributeControlledValueFilter.setAttributeMappingId(rightsAttribute.getId());
    attributeControlledValueFilter.setHistoricValue(Boolean.TRUE);
    List<Serializable> historicControlledValues = // 
    attributeControlledValueService.find(attributeControlledValueFilter, // 
    null).getContent().stream().map(// 
    SysAttributeControlledValueDto::getValue).collect(Collectors.toList());
    assertNotNull(historicControlledValues);
    assertEquals(0, historicControlledValues.size());
    IdmIdentityDto identity = this.getHelper().createIdentity();
    IdmIdentityContractDto contract = this.getHelper().getPrimeContract(identity);
    // Set contract as excluded
    contract.setState(ContractState.EXCLUDED);
    contract = identityContractService.save(contract);
    assertTrue(contract.isExcluded());
    this.getHelper().createIdentityRole(identity, roleOne);
    this.getHelper().createIdentityRole(identity, roleTwo);
    SysProvisioningOperationFilter operationFilter = new SysProvisioningOperationFilter();
    operationFilter.setEntityIdentifier(identity.getId());
    List<SysProvisioningArchiveDto> archives = provisioningArchiveService.find(operationFilter, PageRequest.of(0, 1, new Sort(Direction.DESC, AbstractEntity_.created.getName()))).getContent();
    assertEquals(1, archives.size());
    SysProvisioningArchiveDto archive = archives.get(0);
    assertEquals(ProvisioningEventType.UPDATE, archive.getOperationType());
    ProvisioningContext provisioningContext = archive.getProvisioningContext();
    Map<ProvisioningAttributeDto, Object> accountObject = provisioningContext.getAccountObject();
    Entry<ProvisioningAttributeDto, Object> attributeEntry = accountObject.entrySet().stream().filter(entry -> RIGHTS_ATTRIBUTE.equals(entry.getKey().getSchemaAttributeName())).findFirst().get();
    List<?> values = (List<?>) attributeEntry.getValue();
    assertEquals(2, values.size());
    // Set attribute TWO to skip value if contract is excluded
    roleAttributeTwo.setSkipValueIfExcluded(true);
    roleAttributeTwo = roleSystemAttributeService.saveInternal(roleAttributeTwo);
    // Save identity -> execute provisioning
    identityService.save(identity);
    archives = provisioningArchiveService.find(operationFilter, PageRequest.of(0, 1, new Sort(Direction.DESC, AbstractEntity_.created.getName()))).getContent();
    assertEquals(1, archives.size());
    archive = archives.get(0);
    assertEquals(ProvisioningEventType.UPDATE, archive.getOperationType());
    provisioningContext = archive.getProvisioningContext();
    accountObject = provisioningContext.getAccountObject();
    attributeEntry = // 
    accountObject.entrySet().stream().filter(// 
    entry -> RIGHTS_ATTRIBUTE.equals(entry.getKey().getSchemaAttributeName())).findFirst().get();
    values = (List<?>) attributeEntry.getValue();
    assertEquals(1, values.size());
    assertEquals(ONE_VALUE, values.get(0));
    // Set contract as not excluded
    contract.setState(null);
    contract = identityContractService.save(contract);
    assertFalse(contract.isExcluded());
    // Save identity -> execute provisioning
    identityService.save(identity);
    archives = provisioningArchiveService.find(operationFilter, PageRequest.of(0, 1, new Sort(Direction.DESC, AbstractEntity_.created.getName()))).getContent();
    assertEquals(1, archives.size());
    archive = archives.get(0);
    assertEquals(ProvisioningEventType.UPDATE, archive.getOperationType());
    provisioningContext = archive.getProvisioningContext();
    accountObject = provisioningContext.getAccountObject();
    attributeEntry = // 
    accountObject.entrySet().stream().filter(// 
    entry -> RIGHTS_ATTRIBUTE.equals(entry.getKey().getSchemaAttributeName())).findFirst().get();
    values = (List<?>) attributeEntry.getValue();
    assertEquals(2, values.size());
}
Also used : AttributeMappingStrategyType(eu.bcvsolutions.idm.acc.domain.AttributeMappingStrategyType) SysSchemaAttributeDto(eu.bcvsolutions.idm.acc.dto.SysSchemaAttributeDto) ProvisioningEventType(eu.bcvsolutions.idm.acc.domain.ProvisioningEventType) Autowired(org.springframework.beans.factory.annotation.Autowired) SysAttributeControlledValueDto(eu.bcvsolutions.idm.acc.dto.SysAttributeControlledValueDto) SysAttributeControlledValueFilter(eu.bcvsolutions.idm.acc.dto.filter.SysAttributeControlledValueFilter) SysSystemDto(eu.bcvsolutions.idm.acc.dto.SysSystemDto) SysRoleSystemService(eu.bcvsolutions.idm.acc.service.api.SysRoleSystemService) SysProvisioningArchiveDto(eu.bcvsolutions.idm.acc.dto.SysProvisioningArchiveDto) Map(java.util.Map) AbstractIntegrationTest(eu.bcvsolutions.idm.test.api.AbstractIntegrationTest) Sort(org.springframework.data.domain.Sort) Direction(org.springframework.data.domain.Sort.Direction) IdmIdentityContractDto(eu.bcvsolutions.idm.core.api.dto.IdmIdentityContractDto) ProvisioningContext(eu.bcvsolutions.idm.acc.domain.ProvisioningContext) SysRoleSystemAttributeService(eu.bcvsolutions.idm.acc.service.api.SysRoleSystemAttributeService) SysProvisioningArchiveService(eu.bcvsolutions.idm.acc.service.api.SysProvisioningArchiveService) AbstractEntity_(eu.bcvsolutions.idm.core.api.entity.AbstractEntity_) IdmIdentityContractService(eu.bcvsolutions.idm.core.api.service.IdmIdentityContractService) SysSchemaAttributeFilter(eu.bcvsolutions.idm.acc.dto.filter.SysSchemaAttributeFilter) Assert.assertNotNull(org.junit.Assert.assertNotNull) ContractState(eu.bcvsolutions.idm.core.api.domain.ContractState) SysAttributeControlledValueService(eu.bcvsolutions.idm.acc.service.api.SysAttributeControlledValueService) IdmIdentityDto(eu.bcvsolutions.idm.core.api.dto.IdmIdentityDto) Assert.assertTrue(org.junit.Assert.assertTrue) PageRequest(org.springframework.data.domain.PageRequest) ProvisioningAttributeDto(eu.bcvsolutions.idm.acc.dto.ProvisioningAttributeDto) Test(org.junit.Test) SysSchemaObjectClassDto(eu.bcvsolutions.idm.acc.dto.SysSchemaObjectClassDto) Collectors(java.util.stream.Collectors) Serializable(java.io.Serializable) SysRoleSystemAttributeDto(eu.bcvsolutions.idm.acc.dto.SysRoleSystemAttributeDto) SysSchemaAttributeService(eu.bcvsolutions.idm.acc.service.api.SysSchemaAttributeService) SysProvisioningOperationFilter(eu.bcvsolutions.idm.acc.dto.filter.SysProvisioningOperationFilter) List(java.util.List) IdmRoleDto(eu.bcvsolutions.idm.core.api.dto.IdmRoleDto) Assert.assertFalse(org.junit.Assert.assertFalse) SysSystemAttributeMappingDto(eu.bcvsolutions.idm.acc.dto.SysSystemAttributeMappingDto) Entry(java.util.Map.Entry) SysSystemMappingDto(eu.bcvsolutions.idm.acc.dto.SysSystemMappingDto) TestHelper(eu.bcvsolutions.idm.acc.TestHelper) SysRoleSystemDto(eu.bcvsolutions.idm.acc.dto.SysRoleSystemDto) SysSchemaObjectClassService(eu.bcvsolutions.idm.acc.service.api.SysSchemaObjectClassService) IdmIdentityService(eu.bcvsolutions.idm.core.api.service.IdmIdentityService) SysSystemAttributeMappingService(eu.bcvsolutions.idm.acc.service.api.SysSystemAttributeMappingService) Assert.assertEquals(org.junit.Assert.assertEquals) IdmRoleDto(eu.bcvsolutions.idm.core.api.dto.IdmRoleDto) Serializable(java.io.Serializable) SysSchemaAttributeDto(eu.bcvsolutions.idm.acc.dto.SysSchemaAttributeDto) SysProvisioningArchiveDto(eu.bcvsolutions.idm.acc.dto.SysProvisioningArchiveDto) ProvisioningAttributeDto(eu.bcvsolutions.idm.acc.dto.ProvisioningAttributeDto) SysRoleSystemAttributeDto(eu.bcvsolutions.idm.acc.dto.SysRoleSystemAttributeDto) Sort(org.springframework.data.domain.Sort) List(java.util.List) IdmIdentityDto(eu.bcvsolutions.idm.core.api.dto.IdmIdentityDto) SysProvisioningOperationFilter(eu.bcvsolutions.idm.acc.dto.filter.SysProvisioningOperationFilter) SysSystemAttributeMappingDto(eu.bcvsolutions.idm.acc.dto.SysSystemAttributeMappingDto) SysSystemMappingDto(eu.bcvsolutions.idm.acc.dto.SysSystemMappingDto) SysSystemDto(eu.bcvsolutions.idm.acc.dto.SysSystemDto) ProvisioningContext(eu.bcvsolutions.idm.acc.domain.ProvisioningContext) SysRoleSystemDto(eu.bcvsolutions.idm.acc.dto.SysRoleSystemDto) SysAttributeControlledValueFilter(eu.bcvsolutions.idm.acc.dto.filter.SysAttributeControlledValueFilter) IdmIdentityContractDto(eu.bcvsolutions.idm.core.api.dto.IdmIdentityContractDto) AbstractIntegrationTest(eu.bcvsolutions.idm.test.api.AbstractIntegrationTest) Test(org.junit.Test)

Example 4 with SysAttributeControlledValueFilter

use of eu.bcvsolutions.idm.acc.dto.filter.SysAttributeControlledValueFilter in project CzechIdMng by bcvsolutions.

the class ProvisioningMergeTest method testChangeStrategyAttribteControlledValues.

@Test
public void testChangeStrategyAttribteControlledValues() {
    SysSystemDto system = helper.createSystem("test_resource");
    SysSystemMappingDto mapping = helper.createMapping(system);
    IdmRoleDto roleOne = helper.createRole();
    IdmRoleDto roleTwo = helper.createRole();
    SysRoleSystemDto roleSystemOne = helper.createRoleSystem(roleOne, system);
    SysRoleSystemDto roleSystemTwo = helper.createRoleSystem(roleTwo, system);
    SysSchemaObjectClassDto objectClass = schemaService.get(mapping.getObjectClass());
    SysSchemaAttributeFilter schemaAttributeFilter = new SysSchemaAttributeFilter();
    schemaAttributeFilter.setObjectClassId(objectClass.getId());
    schemaAttributeService.find(schemaAttributeFilter, null);
    SysSchemaAttributeDto rightsSchemaAttribute = new SysSchemaAttributeDto();
    rightsSchemaAttribute.setObjectClass(objectClass.getId());
    rightsSchemaAttribute.setName(RIGHTS_ATTRIBUTE);
    rightsSchemaAttribute.setMultivalued(true);
    rightsSchemaAttribute.setClassType(String.class.getName());
    rightsSchemaAttribute.setReadable(true);
    rightsSchemaAttribute.setUpdateable(true);
    rightsSchemaAttribute = schemaAttributeService.save(rightsSchemaAttribute);
    SysSystemAttributeMappingDto rightsAttribute = new SysSystemAttributeMappingDto();
    rightsAttribute.setSchemaAttribute(rightsSchemaAttribute.getId());
    rightsAttribute.setSystemMapping(mapping.getId());
    rightsAttribute.setName(RIGHTS_ATTRIBUTE);
    rightsAttribute.setStrategyType(AttributeMappingStrategyType.MERGE);
    rightsAttribute = attributeMappingService.save(rightsAttribute);
    SysRoleSystemAttributeDto roleAttributeOne = new SysRoleSystemAttributeDto();
    roleAttributeOne.setName(RIGHTS_ATTRIBUTE);
    roleAttributeOne.setRoleSystem(roleSystemOne.getId());
    roleAttributeOne.setStrategyType(AttributeMappingStrategyType.MERGE);
    roleAttributeOne.setSystemAttributeMapping(rightsAttribute.getId());
    roleAttributeOne.setTransformToResourceScript("return '" + ONE_VALUE + "';");
    roleAttributeOne = roleSystemAttributeService.saveInternal(roleAttributeOne);
    List<Serializable> controlledAttributeValues = attributeMappingService.getControlledAttributeValues(system.getId(), mapping.getEntityType(), RIGHTS_ATTRIBUTE);
    SysRoleSystemAttributeDto roleAttributeTwo = new SysRoleSystemAttributeDto();
    roleAttributeTwo.setName(RIGHTS_ATTRIBUTE);
    roleAttributeTwo.setRoleSystem(roleSystemTwo.getId());
    roleAttributeTwo.setStrategyType(AttributeMappingStrategyType.MERGE);
    roleAttributeTwo.setSystemAttributeMapping(rightsAttribute.getId());
    roleAttributeTwo.setTransformToResourceScript("return '" + TWO_VALUE + "';");
    roleAttributeTwo = roleSystemAttributeService.saveInternal(roleAttributeTwo);
    controlledAttributeValues = attributeMappingService.getControlledAttributeValues(system.getId(), mapping.getEntityType(), RIGHTS_ATTRIBUTE);
    assertNotNull(controlledAttributeValues);
    assertEquals(2, controlledAttributeValues.size());
    assertTrue(controlledAttributeValues.contains(ONE_VALUE));
    assertTrue(controlledAttributeValues.contains(TWO_VALUE));
    SysAttributeControlledValueFilter attributeControlledValueFilter = new SysAttributeControlledValueFilter();
    attributeControlledValueFilter.setAttributeMappingId(rightsAttribute.getId());
    attributeControlledValueFilter.setHistoricValue(Boolean.TRUE);
    List<Serializable> historicControlledValues = // 
    attributeControlledValueService.find(attributeControlledValueFilter, // 
    null).getContent().stream().map(// 
    SysAttributeControlledValueDto::getValue).collect(Collectors.toList());
    assertNotNull(historicControlledValues);
    assertEquals(0, historicControlledValues.size());
    // Set attribute TWO as SET (should be disappears from controlled values
    // and appears in the history)
    roleAttributeTwo.setStrategyType(AttributeMappingStrategyType.SET);
    roleAttributeTwo = roleSystemAttributeService.saveInternal(roleAttributeTwo);
    controlledAttributeValues = attributeMappingService.getControlledAttributeValues(system.getId(), mapping.getEntityType(), RIGHTS_ATTRIBUTE);
    assertNotNull(controlledAttributeValues);
    assertEquals(1, controlledAttributeValues.size());
    assertTrue(controlledAttributeValues.contains(ONE_VALUE));
    // Search historic controlled values for that attribute
    historicControlledValues = // 
    attributeControlledValueService.find(attributeControlledValueFilter, // 
    null).getContent().stream().map(// 
    SysAttributeControlledValueDto::getValue).collect(Collectors.toList());
    assertNotNull(historicControlledValues);
    assertEquals(1, historicControlledValues.size());
    assertTrue(historicControlledValues.contains(TWO_VALUE));
    // Set attribute TWO as MERGE (should be appears in controlled values
    // and disappears from the history)
    roleAttributeTwo.setStrategyType(AttributeMappingStrategyType.MERGE);
    roleAttributeTwo = roleSystemAttributeService.saveInternal(roleAttributeTwo);
    controlledAttributeValues = attributeMappingService.getControlledAttributeValues(system.getId(), mapping.getEntityType(), RIGHTS_ATTRIBUTE);
    assertNotNull(controlledAttributeValues);
    assertEquals(2, controlledAttributeValues.size());
    assertTrue(controlledAttributeValues.contains(ONE_VALUE));
    assertTrue(controlledAttributeValues.contains(TWO_VALUE));
    // Manual recalculation (needed for deleting redundant historic value)
    attributeMappingService.recalculateAttributeControlledValues(system.getId(), mapping.getEntityType(), RIGHTS_ATTRIBUTE, rightsAttribute);
    // Search historic controlled values for that attribute
    historicControlledValues = // 
    attributeControlledValueService.find(attributeControlledValueFilter, // 
    null).getContent().stream().map(// 
    SysAttributeControlledValueDto::getValue).collect(Collectors.toList());
    assertNotNull(historicControlledValues);
    assertEquals(0, historicControlledValues.size());
}
Also used : IdmRoleDto(eu.bcvsolutions.idm.core.api.dto.IdmRoleDto) Serializable(java.io.Serializable) SysSchemaAttributeDto(eu.bcvsolutions.idm.acc.dto.SysSchemaAttributeDto) SysSystemAttributeMappingDto(eu.bcvsolutions.idm.acc.dto.SysSystemAttributeMappingDto) SysSystemMappingDto(eu.bcvsolutions.idm.acc.dto.SysSystemMappingDto) SysSystemDto(eu.bcvsolutions.idm.acc.dto.SysSystemDto) SysRoleSystemAttributeDto(eu.bcvsolutions.idm.acc.dto.SysRoleSystemAttributeDto) SysAttributeControlledValueDto(eu.bcvsolutions.idm.acc.dto.SysAttributeControlledValueDto) SysSchemaAttributeFilter(eu.bcvsolutions.idm.acc.dto.filter.SysSchemaAttributeFilter) SysRoleSystemDto(eu.bcvsolutions.idm.acc.dto.SysRoleSystemDto) SysAttributeControlledValueFilter(eu.bcvsolutions.idm.acc.dto.filter.SysAttributeControlledValueFilter) SysSchemaObjectClassDto(eu.bcvsolutions.idm.acc.dto.SysSchemaObjectClassDto) AbstractIntegrationTest(eu.bcvsolutions.idm.test.api.AbstractIntegrationTest) Test(org.junit.Test)

Example 5 with SysAttributeControlledValueFilter

use of eu.bcvsolutions.idm.acc.dto.filter.SysAttributeControlledValueFilter in project CzechIdMng by bcvsolutions.

the class DefaultSysSystemAttributeMappingService method getCachedControlledAndHistoricAttributeValues.

@Override
public List<Serializable> getCachedControlledAndHistoricAttributeValues(UUID systemId, SystemEntityType entityType, String schemaAttributeName) {
    Assert.notNull(systemId, "System ID is mandatory for get controlled values!");
    Assert.notNull(entityType, "Entity type is mandatory for get controlled values!");
    Assert.notNull(schemaAttributeName, "Schema attribute name is mandatory for get controlled values!");
    SysSystemMappingDto mapping = systemMappingService.findProvisioningMapping(systemId, entityType);
    Assert.notNull(mapping, "System provisioning mapping is mandatory for search controlled attribute values!");
    List<SysSystemAttributeMappingDto> attributes = this.getAttributeMapping(schemaAttributeName, mapping, systemId);
    Assert.notEmpty(attributes, "Mapping attribute must exists!");
    Assert.isTrue(attributes.size() == 1, "Only one mapping attribute is allowed for same schema attribute in the provisioning!");
    SysSystemAttributeMappingDto attributeMapping = attributes.get(0);
    SysAttributeControlledValueFilter attributeControlledValueFilter = new SysAttributeControlledValueFilter();
    attributeControlledValueFilter.setAttributeMappingId(attributeMapping.getId());
    attributeControlledValueFilter.setHistoricValue(Boolean.FALSE);
    // Search controlled values for that attribute
    List<Serializable> cachedControlledValues = // 
    attributeControlledValueService.find(attributeControlledValueFilter, // 
    null).getContent().stream().map(// 
    SysAttributeControlledValueDto::getValue).collect(Collectors.toList());
    if (attributeMapping.isEvictControlledValuesCache()) {
        List<Serializable> controlledAttributeValues = recalculateAttributeControlledValues(systemId, entityType, schemaAttributeName, attributeMapping);
        cachedControlledValues = controlledAttributeValues;
    }
    // Set filter for search historic values
    attributeControlledValueFilter.setHistoricValue(Boolean.TRUE);
    // Search historic controlled values for that attribute
    List<Serializable> historicControlledValues = // 
    attributeControlledValueService.find(attributeControlledValueFilter, // 
    null).getContent().stream().map(// 
    SysAttributeControlledValueDto::getValue).collect(Collectors.toList());
    List<Serializable> controlledValues = Lists.newArrayList();
    controlledValues.addAll(cachedControlledValues);
    controlledValues.addAll(historicControlledValues);
    return controlledValues;
}
Also used : Serializable(java.io.Serializable) SysSystemAttributeMappingDto(eu.bcvsolutions.idm.acc.dto.SysSystemAttributeMappingDto) SysSystemMappingDto(eu.bcvsolutions.idm.acc.dto.SysSystemMappingDto) SysAttributeControlledValueFilter(eu.bcvsolutions.idm.acc.dto.filter.SysAttributeControlledValueFilter)

Aggregations

SysAttributeControlledValueFilter (eu.bcvsolutions.idm.acc.dto.filter.SysAttributeControlledValueFilter)14 SysAttributeControlledValueDto (eu.bcvsolutions.idm.acc.dto.SysAttributeControlledValueDto)13 SysSystemAttributeMappingDto (eu.bcvsolutions.idm.acc.dto.SysSystemAttributeMappingDto)12 SysSystemMappingDto (eu.bcvsolutions.idm.acc.dto.SysSystemMappingDto)12 SysSystemDto (eu.bcvsolutions.idm.acc.dto.SysSystemDto)11 SysRoleSystemAttributeDto (eu.bcvsolutions.idm.acc.dto.SysRoleSystemAttributeDto)10 SysRoleSystemDto (eu.bcvsolutions.idm.acc.dto.SysRoleSystemDto)10 IdmRoleDto (eu.bcvsolutions.idm.core.api.dto.IdmRoleDto)10 AbstractIntegrationTest (eu.bcvsolutions.idm.test.api.AbstractIntegrationTest)10 Serializable (java.io.Serializable)10 Test (org.junit.Test)10 SysSchemaAttributeDto (eu.bcvsolutions.idm.acc.dto.SysSchemaAttributeDto)9 SysSchemaObjectClassDto (eu.bcvsolutions.idm.acc.dto.SysSchemaObjectClassDto)4 SysSchemaAttributeFilter (eu.bcvsolutions.idm.acc.dto.filter.SysSchemaAttributeFilter)4 SysAttributeControlledValueService (eu.bcvsolutions.idm.acc.service.api.SysAttributeControlledValueService)4 SysSystemAttributeMappingService (eu.bcvsolutions.idm.acc.service.api.SysSystemAttributeMappingService)4 IdmIdentityDto (eu.bcvsolutions.idm.core.api.dto.IdmIdentityDto)4 List (java.util.List)4 Autowired (org.springframework.beans.factory.annotation.Autowired)4 TestHelper (eu.bcvsolutions.idm.acc.TestHelper)3