Search in sources :

Example 41 with PersistentType

use of eu.bcvsolutions.idm.core.eav.api.domain.PersistentType in project CzechIdMng by bcvsolutions.

the class DefaultIdmAutomaticRoleAttributeRuleRequestService method saveInternal.

@Override
@Transactional
public IdmAutomaticRoleAttributeRuleRequestDto saveInternal(IdmAutomaticRoleAttributeRuleRequestDto dto) {
    // Numeric attribute can be only EAV (for now, even external code is string)
    boolean isAttributeNumeric = false;
    AutomaticRoleAttributeRuleComparison comparison = dto.getComparison();
    AutomaticRoleAttributeRuleType type = dto.getType();
    // Boolean attribute is allowed only with equals and not equals comparison.
    boolean isEqualsOrNotEquals = comparison == AutomaticRoleAttributeRuleComparison.EQUALS || comparison == AutomaticRoleAttributeRuleComparison.NOT_EQUALS;
    // use only short text
    if ((AutomaticRoleAttributeRuleType.CONTRACT_EAV == type || AutomaticRoleAttributeRuleType.IDENTITY_EAV == type) && dto.getFormAttribute() != null) {
        IdmFormAttributeDto formAttribute = formAttributeService.get(dto.getFormAttribute());
        if (formAttribute == null) {
            throw new ResultCodeException(CoreResultCode.NOT_FOUND, ImmutableMap.of("attribute", dto.getFormAttribute()));
        }
        PersistentType formAttributePersistenType = formAttribute.getPersistentType();
        if (formAttributePersistenType == PersistentType.TEXT) {
            throw new ResultCodeException(CoreResultCode.AUTOMATIC_ROLE_RULE_PERSISTENT_TYPE_TEXT);
        }
        if (formAttribute.isMultiple() && (comparison != AutomaticRoleAttributeRuleComparison.EQUALS && comparison != AutomaticRoleAttributeRuleComparison.IS_EMPTY && comparison != AutomaticRoleAttributeRuleComparison.IS_NOT_EMPTY)) {
            throw new ResultCodeException(CoreResultCode.AUTOMATIC_ROLE_RULE_INVALID_COMPARSION_WITH_MULTIPLE_ATTIBUTE, ImmutableMap.of("comparison", comparison.name()));
        }
        if (formAttributePersistenType == PersistentType.BOOLEAN && !isEqualsOrNotEquals) {
            throw new ResultCodeException(CoreResultCode.AUTOMATIC_ROLE_RULE_INVALID_COMPARSION_BOOLEAN, ImmutableMap.of("comparison", comparison.name()));
        }
        // Numeric value now can be only EAV
        isAttributeNumeric = formAttributePersistenType == PersistentType.INT || formAttributePersistenType == PersistentType.DOUBLE || formAttributePersistenType == PersistentType.LONG;
    }
    if ((comparison == AutomaticRoleAttributeRuleComparison.GREATER_THAN_OR_EQUAL || comparison == AutomaticRoleAttributeRuleComparison.LESS_THAN_OR_EQUAL) && !isAttributeNumeric) {
        throw new ResultCodeException(CoreResultCode.AUTOMATIC_ROLE_RULE_COMPARSION_IS_ONLY_FOR_NUMERIC_ATTRIBUTE, ImmutableMap.of("comparison", comparison.name()));
    }
    // 
    String attributeName = dto.getAttributeName();
    // check if is filled all necessary attribute
    if ((type == AutomaticRoleAttributeRuleType.CONTRACT || type == AutomaticRoleAttributeRuleType.IDENTITY) && StringUtils.isEmpty(attributeName)) {
        throw new ResultCodeException(CoreResultCode.AUTOMATIC_ROLE_RULE_ATTRIBUTE_EMPTY, ImmutableMap.of("automaticRoleId", dto.getId(), "attribute", IdmAutomaticRoleAttributeRule_.attributeName.getName()));
    }
    // 
    if (!isEqualsOrNotEquals) {
        if (type == AutomaticRoleAttributeRuleType.CONTRACT) {
            if (attributeName.equals(IdmIdentityContract_.main.getName())) {
                throw new ResultCodeException(CoreResultCode.AUTOMATIC_ROLE_RULE_INVALID_COMPARSION_BOOLEAN, ImmutableMap.of("comparison", comparison.name()));
            }
            if (attributeName.equals(IdmIdentityContract_.externe.getName())) {
                throw new ResultCodeException(CoreResultCode.AUTOMATIC_ROLE_RULE_INVALID_COMPARSION_BOOLEAN, ImmutableMap.of("comparison", comparison.name()));
            }
        }
        if (type == AutomaticRoleAttributeRuleType.IDENTITY && attributeName.equals(IdmIdentity_.disabled.getName())) {
            if (attributeName.equals(IdmIdentity_.disabled.getName())) {
                throw new ResultCodeException(CoreResultCode.AUTOMATIC_ROLE_RULE_INVALID_COMPARSION_BOOLEAN, ImmutableMap.of("comparison", comparison.name()));
            }
        }
    }
    // 
    if (comparison == AutomaticRoleAttributeRuleComparison.EQUALS && dto.getValue() == null) {
        throw new ResultCodeException(CoreResultCode.AUTOMATIC_ROLE_RULE_ATTRIBUTE_EMPTY, ImmutableMap.of("attribute", IdmAutomaticRoleAttributeRule_.value.getName()));
    }
    return super.saveInternal(dto);
}
Also used : AutomaticRoleAttributeRuleComparison(eu.bcvsolutions.idm.core.api.domain.AutomaticRoleAttributeRuleComparison) PersistentType(eu.bcvsolutions.idm.core.eav.api.domain.PersistentType) IdmFormAttributeDto(eu.bcvsolutions.idm.core.eav.api.dto.IdmFormAttributeDto) ResultCodeException(eu.bcvsolutions.idm.core.api.exception.ResultCodeException) AutomaticRoleAttributeRuleType(eu.bcvsolutions.idm.core.api.domain.AutomaticRoleAttributeRuleType) Transactional(org.springframework.transaction.annotation.Transactional)

Example 42 with PersistentType

use of eu.bcvsolutions.idm.core.eav.api.domain.PersistentType in project CzechIdMng by bcvsolutions.

the class DefaultIdmAutomaticRoleAttributeServiceIntegrationTest method testIsEmptyContractEav.

@Test
public void testIsEmptyContractEav() {
    PersistentType persistentType = PersistentType.SHORTTEXT;
    IdmFormAttributeDto attribute = createFormAttribute(AutomaticRoleAttributeRuleType.CONTRACT_EAV, persistentType, false);
    IdmAutomaticRoleAttributeDto automaticRole = createAutomaticRuleForEav(AutomaticRoleAttributeRuleComparison.IS_EMPTY, AutomaticRoleAttributeRuleType.CONTRACT_EAV, attribute, null);
    IdmIdentityDto identity = getHelper().createIdentity((GuardedString) null);
    IdmIdentityContractDto contract = getHelper().getPrimeContract(identity);
    recalculateSync(automaticRole.getId());
    checkIdentityRoles(identity, 1);
    recalculateSync(automaticRole.getId());
    checkIdentityRoles(identity, 1);
    saveEavValue(contract, attribute, persistentType, Lists.newArrayList(getHelper().createName()));
    recalculateSync(automaticRole.getId());
    checkIdentityRoles(identity, 0);
    recalculateSync(automaticRole.getId());
    checkIdentityRoles(identity, 0);
    saveEavValue(contract, attribute, persistentType, Lists.newArrayList());
    recalculateSync(automaticRole.getId());
    checkIdentityRoles(identity, 1);
    recalculateSync(automaticRole.getId());
    checkIdentityRoles(identity, 1);
    saveEavValue(contract, attribute, persistentType, Lists.newArrayList("00000"));
    recalculateSync(automaticRole.getId());
    checkIdentityRoles(identity, 0);
    recalculateSync(automaticRole.getId());
    checkIdentityRoles(identity, 0);
    saveEavValue(contract, attribute, persistentType, Lists.newArrayList("     "));
    recalculateSync(automaticRole.getId());
    checkIdentityRoles(identity, 0);
    recalculateSync(automaticRole.getId());
    checkIdentityRoles(identity, 0);
}
Also used : PersistentType(eu.bcvsolutions.idm.core.eav.api.domain.PersistentType) IdmFormAttributeDto(eu.bcvsolutions.idm.core.eav.api.dto.IdmFormAttributeDto) IdmIdentityDto(eu.bcvsolutions.idm.core.api.dto.IdmIdentityDto) IdmIdentityContractDto(eu.bcvsolutions.idm.core.api.dto.IdmIdentityContractDto) IdmAutomaticRoleAttributeDto(eu.bcvsolutions.idm.core.api.dto.IdmAutomaticRoleAttributeDto) AbstractIntegrationTest(eu.bcvsolutions.idm.test.api.AbstractIntegrationTest) Test(org.junit.Test)

Example 43 with PersistentType

use of eu.bcvsolutions.idm.core.eav.api.domain.PersistentType in project CzechIdMng by bcvsolutions.

the class DefaultIdmAutomaticRoleAttributeServiceIntegrationTest method testEqualsIdentityMultivaluedEav.

@Test
public void testEqualsIdentityMultivaluedEav() {
    String value = "10";
    PersistentType persistentType = PersistentType.LONG;
    IdmFormAttributeDto attribute = createFormAttribute(AutomaticRoleAttributeRuleType.IDENTITY_EAV, persistentType, true);
    IdmAutomaticRoleAttributeDto automaticRole = createAutomaticRuleForEav(AutomaticRoleAttributeRuleComparison.EQUALS, AutomaticRoleAttributeRuleType.IDENTITY_EAV, attribute, value);
    IdmIdentityDto identity = getHelper().createIdentity((GuardedString) null);
    checkIdentityRoles(identity, 0);
    recalculateSync(automaticRole.getId());
    checkIdentityRoles(identity, 0);
    saveEavValue(identity, attribute, persistentType, Lists.newArrayList(10, 20, 30));
    recalculateSync(automaticRole.getId());
    checkIdentityRoles(identity, 1);
    recalculateSync(automaticRole.getId());
    checkIdentityRoles(identity, 1);
    saveEavValue(identity, attribute, persistentType, Lists.newArrayList(9, 2, 3));
    recalculateSync(automaticRole.getId());
    checkIdentityRoles(identity, 0);
    recalculateSync(automaticRole.getId());
    checkIdentityRoles(identity, 0);
    saveEavValue(identity, attribute, persistentType, Lists.newArrayList(11, 10, 12));
    recalculateSync(automaticRole.getId());
    checkIdentityRoles(identity, 1);
    recalculateSync(automaticRole.getId());
    checkIdentityRoles(identity, 1);
}
Also used : PersistentType(eu.bcvsolutions.idm.core.eav.api.domain.PersistentType) IdmFormAttributeDto(eu.bcvsolutions.idm.core.eav.api.dto.IdmFormAttributeDto) GuardedString(eu.bcvsolutions.idm.core.security.api.domain.GuardedString) IdmIdentityDto(eu.bcvsolutions.idm.core.api.dto.IdmIdentityDto) IdmAutomaticRoleAttributeDto(eu.bcvsolutions.idm.core.api.dto.IdmAutomaticRoleAttributeDto) AbstractIntegrationTest(eu.bcvsolutions.idm.test.api.AbstractIntegrationTest) Test(org.junit.Test)

Example 44 with PersistentType

use of eu.bcvsolutions.idm.core.eav.api.domain.PersistentType in project CzechIdMng by bcvsolutions.

the class DefaultIdmAutomaticRoleAttributeServiceIntegrationTest method testIncompatibleNotContainsMultivaluedContractEav.

@Test(expected = ResultCodeException.class)
public void testIncompatibleNotContainsMultivaluedContractEav() {
    String value = getHelper().createName();
    PersistentType persistentType = PersistentType.SHORTTEXT;
    IdmFormAttributeDto attribute = createFormAttribute(AutomaticRoleAttributeRuleType.CONTRACT_EAV, persistentType, true);
    createAutomaticRuleForEav(AutomaticRoleAttributeRuleComparison.NOT_CONTAINS, AutomaticRoleAttributeRuleType.CONTRACT_EAV, attribute, value);
}
Also used : PersistentType(eu.bcvsolutions.idm.core.eav.api.domain.PersistentType) IdmFormAttributeDto(eu.bcvsolutions.idm.core.eav.api.dto.IdmFormAttributeDto) GuardedString(eu.bcvsolutions.idm.core.security.api.domain.GuardedString) AbstractIntegrationTest(eu.bcvsolutions.idm.test.api.AbstractIntegrationTest) Test(org.junit.Test)

Example 45 with PersistentType

use of eu.bcvsolutions.idm.core.eav.api.domain.PersistentType in project CzechIdMng by bcvsolutions.

the class DefaultIdmAutomaticRoleAttributeServiceIntegrationTest method testIsNotEmptyIdentityEav.

@Test
public void testIsNotEmptyIdentityEav() {
    PersistentType persistentType = PersistentType.SHORTTEXT;
    IdmFormAttributeDto attribute = createFormAttribute(AutomaticRoleAttributeRuleType.IDENTITY_EAV, persistentType, false);
    IdmAutomaticRoleAttributeDto automaticRole = createAutomaticRuleForEav(AutomaticRoleAttributeRuleComparison.IS_NOT_EMPTY, AutomaticRoleAttributeRuleType.IDENTITY_EAV, attribute, null);
    IdmIdentityDto identity = getHelper().createIdentity((GuardedString) null);
    checkIdentityRoles(identity, 0);
    recalculateSync(automaticRole.getId());
    checkIdentityRoles(identity, 0);
    saveEavValue(identity, attribute, persistentType, Lists.newArrayList(getHelper().createName()));
    recalculateSync(automaticRole.getId());
    checkIdentityRoles(identity, 1);
    recalculateSync(automaticRole.getId());
    checkIdentityRoles(identity, 1);
    saveEavValue(identity, attribute, persistentType, Lists.newArrayList(""));
    recalculateSync(automaticRole.getId());
    checkIdentityRoles(identity, 0);
    recalculateSync(automaticRole.getId());
    checkIdentityRoles(identity, 0);
    saveEavValue(identity, attribute, persistentType, Lists.newArrayList());
    recalculateSync(automaticRole.getId());
    checkIdentityRoles(identity, 0);
    recalculateSync(automaticRole.getId());
    checkIdentityRoles(identity, 0);
}
Also used : PersistentType(eu.bcvsolutions.idm.core.eav.api.domain.PersistentType) IdmFormAttributeDto(eu.bcvsolutions.idm.core.eav.api.dto.IdmFormAttributeDto) IdmIdentityDto(eu.bcvsolutions.idm.core.api.dto.IdmIdentityDto) IdmAutomaticRoleAttributeDto(eu.bcvsolutions.idm.core.api.dto.IdmAutomaticRoleAttributeDto) AbstractIntegrationTest(eu.bcvsolutions.idm.test.api.AbstractIntegrationTest) Test(org.junit.Test)

Aggregations

PersistentType (eu.bcvsolutions.idm.core.eav.api.domain.PersistentType)47 IdmFormAttributeDto (eu.bcvsolutions.idm.core.eav.api.dto.IdmFormAttributeDto)45 Test (org.junit.Test)44 AbstractIntegrationTest (eu.bcvsolutions.idm.test.api.AbstractIntegrationTest)43 GuardedString (eu.bcvsolutions.idm.core.security.api.domain.GuardedString)38 IdmAutomaticRoleAttributeDto (eu.bcvsolutions.idm.core.api.dto.IdmAutomaticRoleAttributeDto)32 IdmIdentityDto (eu.bcvsolutions.idm.core.api.dto.IdmIdentityDto)32 IdmIdentityContractDto (eu.bcvsolutions.idm.core.api.dto.IdmIdentityContractDto)17 AutomaticRoleAttributeRuleComparison (eu.bcvsolutions.idm.core.api.domain.AutomaticRoleAttributeRuleComparison)2 AutomaticRoleAttributeRuleType (eu.bcvsolutions.idm.core.api.domain.AutomaticRoleAttributeRuleType)2 ResultCodeException (eu.bcvsolutions.idm.core.api.exception.ResultCodeException)2 Transactional (org.springframework.transaction.annotation.Transactional)2 AutomaticRoleAttributeRuleEvent (eu.bcvsolutions.idm.core.model.event.AutomaticRoleAttributeRuleEvent)1 AbstractUnitTest (eu.bcvsolutions.idm.test.api.AbstractUnitTest)1 Serializable (java.io.Serializable)1 BigDecimal (java.math.BigDecimal)1 ZonedDateTime (java.time.ZonedDateTime)1 UUID (java.util.UUID)1 Predicate (javax.persistence.criteria.Predicate)1