Search in sources :

Example 11 with StringLimitationResult

use of com.evolveum.midpoint.model.api.validator.StringLimitationResult in project midpoint by Evolveum.

the class ValuePolicyProcessor method testMinimalUniqueCharacters.

private StringLimitationResult testMinimalUniqueCharacters(String password, LimitationsType limitations, OperationResult result, List<LocalizableMessage> message) {
    if (limitations.getMinUniqueChars() == null) {
        return null;
    }
    HashSet<String> distinctCharacters = new HashSet<>(StringPolicyUtils.stringTokenizer(password));
    StringLimitationResult limitation = new StringLimitationResult();
    limitation.setMinOccurs(limitations.getMinUniqueChars());
    PolyStringType name = new PolyStringType("unique characters");
    PolyStringTranslationType translation = new PolyStringTranslationType();
    translation.setKey("ValuePolicy.uniqueCharacters");
    name.setTranslation(translation);
    limitation.setName(name);
    limitation.setSuccess(true);
    if (limitations.getMinUniqueChars() > distinctCharacters.size()) {
        LocalizableMessage msg = new LocalizableMessageBuilder().key("ValuePolicy.minimalUniqueCharactersNotMet").arg(limitations.getMinUniqueChars()).arg(distinctCharacters.size()).build();
        result.addSubresult(new OperationResult("Check minimal count of unique chars", OperationResultStatus.FATAL_ERROR, msg));
        message.add(msg);
        limitation.setSuccess(false);
    }
    return limitation;
}
Also used : PolyStringType(com.evolveum.prism.xml.ns._public.types_3.PolyStringType) StringLimitationResult(com.evolveum.midpoint.model.api.validator.StringLimitationResult) LocalizableMessage(com.evolveum.midpoint.util.LocalizableMessage) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) LocalizableMessageBuilder(com.evolveum.midpoint.util.LocalizableMessageBuilder) PolyStringTranslationType(com.evolveum.prism.xml.ns._public.types_3.PolyStringTranslationType)

Example 12 with StringLimitationResult

use of com.evolveum.midpoint.model.api.validator.StringLimitationResult in project midpoint by Evolveum.

the class ValuePolicyProcessor method testMinimalOccurrence.

private StringLimitationResult testMinimalOccurrence(StringLimitType stringLimitation, int count, OperationResult result, List<LocalizableMessage> messages, StringLimitationResult limitation) {
    if (stringLimitation.getMinOccurs() == null) {
        return limitation;
    }
    if (limitation == null) {
        limitation = new StringLimitationResult();
        limitation.setMinOccurs(stringLimitation.getMinOccurs());
        limitation.setSuccess(true);
    } else {
        limitation.setMinOccurs(stringLimitation.getMinOccurs());
    }
    if (count < stringLimitation.getMinOccurs()) {
        LocalizableMessage msg = new LocalizableMessageBuilder().key("ValuePolicy.minimalOccurrenceNotMet").arg(stringLimitation.getMinOccurs()).arg(stringLimitation.getDescription()).arg(count).build();
        result.addSubresult(new OperationResult("Check minimal occurrence of characters", OperationResultStatus.FATAL_ERROR, msg));
        messages.add(msg);
        limitation.setSuccess(false);
    }
    return limitation;
}
Also used : StringLimitationResult(com.evolveum.midpoint.model.api.validator.StringLimitationResult) LocalizableMessage(com.evolveum.midpoint.util.LocalizableMessage) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) LocalizableMessageBuilder(com.evolveum.midpoint.util.LocalizableMessageBuilder)

Example 13 with StringLimitationResult

use of com.evolveum.midpoint.model.api.validator.StringLimitationResult in project midpoint by Evolveum.

the class ValuePolicyProcessor method testCheckExpression.

private List<StringLimitationResult> testCheckExpression(String newPassword, LimitationsType lims, ExpressionProfile expressionProfile, ObjectBasedValuePolicyOriginResolver<?> originResolver, String shortDesc, Task task, OperationResult result, List<LocalizableMessage> messages) throws SchemaException, ObjectNotFoundException, ExpressionEvaluationException, CommunicationException, ConfigurationException, SecurityViolationException {
    List<StringLimitationResult> limitations = new ArrayList<>();
    for (CheckExpressionType checkExpression : lims.getCheckExpression()) {
        ExpressionType expressionType = checkExpression.getExpression();
        if (expressionType == null) {
            continue;
        }
        StringLimitationResult limitation = new StringLimitationResult();
        PolyStringType name = null;
        if (checkExpression.getDisplay() != null) {
            name = checkExpression.getDisplay().getLabel();
            limitation.setHelp(checkExpression.getDisplay().getHelp());
        }
        if (name == null) {
            name = new PolyStringType("Check expression");
            PolyStringTranslationType translation = new PolyStringTranslationType();
            translation.setKey("ValuePolicy.checkExpression");
            name.setTranslation(translation);
        }
        limitation.setName(name);
        limitation.setSuccess(true);
        if (!checkExpression(newPassword, expressionType, expressionProfile, originResolver, shortDesc, task, result)) {
            LocalizableMessage msg;
            if (checkExpression.getLocalizableFailureMessage() != null) {
                msg = LocalizationUtil.toLocalizableMessage(checkExpression.getLocalizableFailureMessage());
            } else if (checkExpression.getFailureMessage() != null) {
                msg = LocalizableMessageBuilder.buildFallbackMessage(checkExpression.getFailureMessage());
            } else {
                msg = LocalizableMessageBuilder.buildKey("ValuePolicy.checkExpressionFailed");
            }
            result.addSubresult(new OperationResult("Check expression", OperationResultStatus.FATAL_ERROR, msg));
            messages.add(msg);
            limitation.setSuccess(false);
        }
        limitations.add(limitation);
    }
    return limitations;
}
Also used : PolyStringType(com.evolveum.prism.xml.ns._public.types_3.PolyStringType) CheckExpressionType(com.evolveum.midpoint.xml.ns._public.common.common_3.CheckExpressionType) StringLimitationResult(com.evolveum.midpoint.model.api.validator.StringLimitationResult) LocalizableMessage(com.evolveum.midpoint.util.LocalizableMessage) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) CheckExpressionType(com.evolveum.midpoint.xml.ns._public.common.common_3.CheckExpressionType) ExpressionType(com.evolveum.midpoint.xml.ns._public.common.common_3.ExpressionType) PolyStringTranslationType(com.evolveum.prism.xml.ns._public.types_3.PolyStringTranslationType)

Aggregations

StringLimitationResult (com.evolveum.midpoint.model.api.validator.StringLimitationResult)13 OperationResult (com.evolveum.midpoint.schema.result.OperationResult)10 LocalizableMessage (com.evolveum.midpoint.util.LocalizableMessage)8 LocalizableMessageBuilder (com.evolveum.midpoint.util.LocalizableMessageBuilder)7 PolyStringTranslationType (com.evolveum.prism.xml.ns._public.types_3.PolyStringTranslationType)6 PolyStringType (com.evolveum.prism.xml.ns._public.types_3.PolyStringType)6 IModel (org.apache.wicket.model.IModel)4 WebMarkupContainer (org.apache.wicket.markup.html.WebMarkupContainer)3 LoadableModel (com.evolveum.midpoint.gui.api.model.LoadableModel)2 PrismObject (com.evolveum.midpoint.prism.PrismObject)2 ItemPath (com.evolveum.midpoint.prism.path.ItemPath)2 ExpressionProfile (com.evolveum.midpoint.schema.expression.ExpressionProfile)2 Task (com.evolveum.midpoint.task.api.Task)2 LocalizableMessageListBuilder (com.evolveum.midpoint.util.LocalizableMessageListBuilder)2 Trace (com.evolveum.midpoint.util.logging.Trace)2 TraceManager (com.evolveum.midpoint.util.logging.TraceManager)2 LimitationsType (com.evolveum.midpoint.xml.ns._public.common.common_3.LimitationsType)2 StringLimitType (com.evolveum.midpoint.xml.ns._public.common.common_3.StringLimitType)2 java.util (java.util)2 CollectionUtils (org.apache.commons.collections4.CollectionUtils)2