Search in sources :

Example 1 with StringLimitationResult

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

the class ChangePasswordPanel method initColumns.

private List<IColumn<PasswordAccountDto, String>> initColumns() {
    List<IColumn<PasswordAccountDto, String>> columns = new ArrayList<>();
    columns.add(new CheckBoxColumn<>(Model.of(""), Selectable.F_SELECTED) {

        @Override
        protected IModel<Boolean> getEnabled(IModel<PasswordAccountDto> rowModel) {
            return () -> {
                PasswordAccountDto passwordAccountDto = rowModel.getObject();
                if (!passwordAccountDto.isMidpoint() && !passwordAccountDto.isPasswordCapabilityEnabled()) {
                    passwordAccountDto.setSelected(false);
                    return false;
                }
                if (CredentialsPropagationUserControlType.ONLY_MAPPING.equals(getModelObject().getPropagation())) {
                    if (!passwordAccountDto.isMidpoint() && !passwordAccountDto.isPasswordOutbound()) {
                        passwordAccountDto.setSelected(false);
                    }
                    return false;
                }
                if (passwordAccountDto.isMidpoint() && CredentialsPropagationUserControlType.IDENTITY_MANAGER_MANDATORY.equals(getModelObject().getPropagation())) {
                    return false;
                }
                if (!passwordAccountDto.isMidpoint() && midpointAccountSelected.getObject() && passwordAccountDto.isPasswordOutbound()) {
                    passwordAccountDto.setSelected(true);
                    return false;
                }
                return true;
            };
        }

        @Override
        protected void processBehaviourOfCheckBox(IsolatedCheckBoxPanel check, IModel<PasswordAccountDto> rowModel) {
            super.processBehaviourOfCheckBox(check, rowModel);
            IModel<String> titleModel = () -> {
                PasswordAccountDto passwordAccountDto = rowModel.getObject();
                if (!getEnabled(rowModel).getObject()) {
                    String key;
                    if (!passwordAccountDto.isMidpoint() && !passwordAccountDto.isPasswordCapabilityEnabled()) {
                        key = "ChangePasswordPanel.legendMessage.no.password.capability";
                    } else {
                        key = "ChangePasswordPanel.legendMessage.policy";
                    }
                    return createStringResource(key).getString();
                }
                return "";
            };
            check.add(AttributeAppender.append("title", titleModel));
        }

        @Override
        protected void onUpdateRow(AjaxRequestTarget target, DataTable table, IModel<PasswordAccountDto> rowModel, IModel<Boolean> selected) {
            super.onUpdateRow(target, table, rowModel, selected);
            if (rowModel.getObject().isMidpoint()) {
                table.visitChildren(IsolatedCheckBoxPanel.class, (IVisitor<IsolatedCheckBoxPanel, IsolatedCheckBoxPanel>) (panel, iVisit) -> {
                    target.add(panel);
                });
            }
        }
    });
    columns.add(new AbstractColumn<PasswordAccountDto, String>(createStringResource("ChangePasswordPanel.name")) {

        private static final long serialVersionUID = 1L;

        @Override
        public void populateItem(Item<ICellPopulator<PasswordAccountDto>> item, String componentId, final IModel<PasswordAccountDto> rowModel) {
            item.add(new Label(componentId, new IModel<>() {

                private static final long serialVersionUID = 1L;

                @Override
                public String getObject() {
                    PasswordAccountDto dto = rowModel.getObject();
                    return dto.getDisplayName();
                }
            }));
        }
    });
    columns.add(new AbstractColumn<PasswordAccountDto, String>(createStringResource("ChangePasswordPanel.resourceName")) {

        private static final long serialVersionUID = 1L;

        @Override
        public void populateItem(Item<ICellPopulator<PasswordAccountDto>> item, String componentId, final IModel<PasswordAccountDto> rowModel) {
            IModel<String> helpModel = () -> {
                String title = "";
                if (!rowModel.getObject().isMidpoint() && !rowModel.getObject().isPasswordCapabilityEnabled()) {
                    title = createStringResource("ChangePasswordPanel.legendMessage.no.password.capability").getString();
                }
                if (rowModel.getObject().isMaintenanceState()) {
                    title = title + (StringUtils.isEmpty(title) ? "" : " ") + createStringResource("ChangePasswordPanel.legendMessage.maintenance").getString();
                }
                return title;
            };
            item.add(new LabelWithHelpPanel(componentId, new IModel<>() {

                private static final long serialVersionUID = 1L;

                @Override
                public String getObject() {
                    PasswordAccountDto dto = rowModel.getObject();
                    return dto.getResourceName();
                }
            }) {

                @Override
                protected IModel<String> getHelpModel() {
                    return helpModel;
                }
            });
        }
    });
    IconColumn enabled = new IconColumn<PasswordAccountDto>(createStringResource("ChangePasswordPanel.enabled")) {

        @Override
        protected DisplayType getIconDisplayType(IModel<PasswordAccountDto> rowModel) {
            String cssClass = "fa fa-question text-info";
            String tooltip = "ActivationStatusType.null";
            if (rowModel != null && rowModel.getObject() != null && rowModel.getObject().isEnabled() != null) {
                if (rowModel.getObject().isEnabled()) {
                    cssClass = GuiStyleConstants.CLASS_APPROVAL_OUTCOME_ICON_APPROVED_COLORED;
                    tooltip = "ActivationStatusType.ENABLED";
                } else {
                    cssClass = GuiStyleConstants.CLASS_APPROVAL_OUTCOME_ICON_REJECTED_COLORED;
                    tooltip = "ActivationStatusType.DISABLED";
                }
            }
            return GuiDisplayTypeUtil.createDisplayType(cssClass + " fa-fw fa-lg", "", createStringResource(tooltip).getString());
        }

        @Override
        public String getCssClass() {
            return "col-lg-1";
        }
    };
    columns.add(enabled);
    columns.add(new AbstractColumn<PasswordAccountDto, String>(createStringResource("ChangePasswordPanel.passwordValidation")) {

        private static final long serialVersionUID = 1L;

        @Override
        public void populateItem(Item<ICellPopulator<PasswordAccountDto>> cellItem, String componentId, IModel<PasswordAccountDto> rowModel) {
            IModel<List<StringLimitationResult>> limitationsModel = () -> {
                String policyOid = rowModel.getObject().getPasswordValuePolicyOid();
                if (StringUtils.isEmpty(policyOid) || !getModelObject().getPasswordPolicies().containsKey(policyOid)) {
                    return new ArrayList<>();
                }
                if (limitationsByPolicyOid.containsKey(policyOid)) {
                    return limitationsByPolicyOid.get(policyOid);
                }
                ValuePolicyType policyType = getModelObject().getPasswordPolicies().get(policyOid);
                PrismObject<? extends ObjectType> object = rowModel.getObject().getObject();
                List<StringLimitationResult> limitations = getPasswordPanel().getLimitationsForActualPassword(policyType, object);
                limitationsByPolicyOid.put(policyOid, limitations);
                return limitations;
            };
            PasswordPolicyValidationPanel validationPanel = new PasswordPolicyValidationPanel(componentId, limitationsModel);
            validationPanel.add(new VisibleEnableBehaviour() {

                @Override
                public boolean isVisible() {
                    return !limitationsModel.getObject().isEmpty();
                }
            });
            cellItem.add(validationPanel);
        }

        @Override
        public String getCssClass() {
            return "col-lg-2";
        }
    });
    columns.add(new AbstractColumn<PasswordAccountDto, String>(createStringResource("ChangePasswordPanel.propagationResult")) {

        private static final long serialVersionUID = 1L;

        @Override
        public void populateItem(Item<ICellPopulator<PasswordAccountDto>> cellItem, String componentId, IModel<PasswordAccountDto> rowModel) {
            LoadableModel<OperationResult> resultStatusModel = new LoadableModel<OperationResult>() {

                @Override
                protected OperationResult load() {
                    if (getModelObject().getProgress() == null || getModelObject().getProgress().getProgressReportActivities().isEmpty()) {
                        return null;
                    }
                    for (ProgressReportActivityDto progressActivity : getModelObject().getProgress().getProgressReportActivities()) {
                        if (rowModel.getObject().isSelected() && progressActivity.getStatus() != null && rowModel.getObject().isMidpoint() && (ProgressInformation.ActivityType.FOCUS_OPERATION.equals(progressActivity.getActivityType()) || (ProgressInformation.ActivityType.PROJECTOR.equals(progressActivity.getActivityType()) && !OperationResultStatusType.SUCCESS.equals(progressActivity.getStatus())))) {
                            return progressActivity.getOperationResult();
                        } else if (progressActivity.getStatus() != null && !rowModel.getObject().isMidpoint() && ProgressInformation.ActivityType.RESOURCE_OBJECT_OPERATION.equals(progressActivity.getActivityType()) && progressActivity.getResourceOperationResultList() != null && !progressActivity.getResourceOperationResultList().isEmpty()) {
                            String resourceOid = rowModel.getObject().getResourceOid();
                            if (StringUtils.isNotEmpty(resourceOid) && progressActivity.getResourceShadowDiscriminator() != null && resourceOid.equals(progressActivity.getResourceShadowDiscriminator().getResourceOid())) {
                                return progressActivity.getOperationResult();
                            }
                        }
                    }
                    return new OperationResult("Empty result");
                }
            };
            ColumnResultPanel resultPanel = new ColumnResultPanel(componentId, resultStatusModel) {

                @Override
                protected boolean isProjectionResult() {
                    return !rowModel.getObject().isMidpoint();
                }

                @Override
                protected DisplayType getDisplayForEmptyResult() {
                    String policyOid = rowModel.getObject().getPasswordValuePolicyOid();
                    if (StringUtils.isNotEmpty(policyOid) && ChangePasswordPanel.this.getModelObject().getPasswordPolicies().containsKey(policyOid)) {
                        if (limitationsByPolicyOid.get(policyOid) != null) {
                            var ref = new Object() {

                                boolean result = true;
                            };
                            limitationsByPolicyOid.get(policyOid).forEach((limit) -> {
                                if (ref.result && !limit.isSuccess()) {
                                    ref.result = false;
                                }
                            });
                            if (!ref.result && rowModel.getObject().isSelected()) {
                                return GuiDisplayTypeUtil.createDisplayType("fa-fw fa fa-times-circle text-muted fa-lg", "", createStringResource("ChangePasswordPanel.result.validationError").getString());
                            }
                        }
                    }
                    return null;
                }
            };
            resultPanel.setOutputMarkupId(true);
            cellItem.add(resultPanel);
        }

        @Override
        public String getCssClass() {
            return "col-lg-2";
        }
    });
    return columns;
}
Also used : PageSelfCredentials(com.evolveum.midpoint.web.page.self.PageSelfCredentials) IColumn(org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn) StringUtils(org.apache.commons.lang3.StringUtils) AuthUtil(com.evolveum.midpoint.authentication.api.util.AuthUtil) WebModelServiceUtils(com.evolveum.midpoint.gui.api.util.WebModelServiceUtils) AbstractColumn(org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn) TablePanel(com.evolveum.midpoint.web.component.data.TablePanel) AjaxRequestTarget(org.apache.wicket.ajax.AjaxRequestTarget) IModel(org.apache.wicket.model.IModel) SelectorOptions(com.evolveum.midpoint.schema.SelectorOptions) Label(org.apache.wicket.markup.html.basic.Label) ProgressReportActivityDto(com.evolveum.midpoint.web.component.progress.ProgressReportActivityDto) Model(org.apache.wicket.model.Model) LabelWithHelpPanel(com.evolveum.midpoint.gui.api.component.LabelWithHelpPanel) WebComponentUtil(com.evolveum.midpoint.gui.api.util.WebComponentUtil) ResourceTypeUtil(com.evolveum.midpoint.schema.util.ResourceTypeUtil) Task(com.evolveum.midpoint.task.api.Task) AttributeModifier(org.apache.wicket.AttributeModifier) AttributeAppender(org.apache.wicket.behavior.AttributeAppender) PropertyModel(org.apache.wicket.model.PropertyModel) Item(org.apache.wicket.markup.repeater.Item) PasswordAccountDto(com.evolveum.midpoint.web.page.admin.home.dto.PasswordAccountDto) MyPasswordsDto(com.evolveum.midpoint.web.page.admin.home.dto.MyPasswordsDto) PrismReferenceValue(com.evolveum.midpoint.prism.PrismReferenceValue) LoadableModel(com.evolveum.midpoint.gui.api.model.LoadableModel) ResourceObjectDefinition(com.evolveum.midpoint.schema.processor.ResourceObjectDefinition) java.util(java.util) GuiDisplayTypeUtil(com.evolveum.midpoint.gui.api.util.GuiDisplayTypeUtil) com.evolveum.midpoint.web.component.data.column(com.evolveum.midpoint.web.component.data.column) com.evolveum.midpoint.xml.ns._public.common.common_3(com.evolveum.midpoint.xml.ns._public.common.common_3) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) Trace(com.evolveum.midpoint.util.logging.Trace) ICellPopulator(org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator) CollectionUtils(org.apache.commons.collections4.CollectionUtils) GuiStyleConstants(com.evolveum.midpoint.gui.api.GuiStyleConstants) CredentialsCapabilityType(com.evolveum.midpoint.xml.ns._public.resource.capabilities_3.CredentialsCapabilityType) StringLimitationResult(com.evolveum.midpoint.model.api.validator.StringLimitationResult) CapabilityUtil(com.evolveum.midpoint.schema.CapabilityUtil) IVisitor(org.apache.wicket.util.visit.IVisitor) Selectable(com.evolveum.midpoint.web.component.util.Selectable) DataTable(org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable) PasswordTextField(org.apache.wicket.markup.html.form.PasswordTextField) PrismObject(com.evolveum.midpoint.prism.PrismObject) PasswordPanel(com.evolveum.midpoint.gui.api.component.password.PasswordPanel) ItemPath(com.evolveum.midpoint.prism.path.ItemPath) LoggingUtils(com.evolveum.midpoint.util.logging.LoggingUtils) BasePanel(com.evolveum.midpoint.gui.api.component.BasePanel) WebMarkupContainer(org.apache.wicket.markup.html.WebMarkupContainer) GetOperationOptions(com.evolveum.midpoint.schema.GetOperationOptions) PrismReference(com.evolveum.midpoint.prism.PrismReference) ProgressInformation(com.evolveum.midpoint.model.api.ProgressInformation) ListDataProvider(com.evolveum.midpoint.web.component.util.ListDataProvider) VisibleEnableBehaviour(com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour) TraceManager(com.evolveum.midpoint.util.logging.TraceManager) DataTable(org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable) LabelWithHelpPanel(com.evolveum.midpoint.gui.api.component.LabelWithHelpPanel) Label(org.apache.wicket.markup.html.basic.Label) StringLimitationResult(com.evolveum.midpoint.model.api.validator.StringLimitationResult) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) PasswordAccountDto(com.evolveum.midpoint.web.page.admin.home.dto.PasswordAccountDto) VisibleEnableBehaviour(com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour) IModel(org.apache.wicket.model.IModel) IVisitor(org.apache.wicket.util.visit.IVisitor) ICellPopulator(org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator) AjaxRequestTarget(org.apache.wicket.ajax.AjaxRequestTarget) IColumn(org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn) LoadableModel(com.evolveum.midpoint.gui.api.model.LoadableModel) ProgressReportActivityDto(com.evolveum.midpoint.web.component.progress.ProgressReportActivityDto) PrismObject(com.evolveum.midpoint.prism.PrismObject)

Example 2 with StringLimitationResult

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

the class PasswordLimitationsPanel method initLayout.

private void initLayout() {
    final WebMarkupContainer validationContainer = new WebMarkupContainer(ID_VALIDATION_CONTAINER) {

        private static final long serialVersionUID = 1L;

        @Override
        public boolean isVisible() {
            return !getModelObject().isEmpty();
        }
    };
    validationContainer.setOutputMarkupId(true);
    add(validationContainer);
    final WebMarkupContainer validationParentContainer = new WebMarkupContainer(ID_VALIDATION_PARENT_ITEMS) {

        private static final long serialVersionUID = 1L;

        @Override
        public boolean isVisible() {
            return !getModelObject().isEmpty();
        }
    };
    validationParentContainer.setOutputMarkupId(true);
    validationContainer.add(validationParentContainer);
    ListView<StringLimitationResult> validationItems = new ListView<>(ID_VALIDATION_ITEMS, getModel()) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(ListItem<StringLimitationResult> item) {
            StringLimitationPanel limitationPanel = new StringLimitationPanel(ID_VALIDATION_ITEM, item.getModel());
            limitationPanel.setOutputMarkupId(true);
            item.add(limitationPanel);
            item.add(AttributeModifier.append("class", new IModel<String>() {

                @Override
                public String getObject() {
                    return Boolean.TRUE.equals(item.getModelObject().isSuccess()) ? " text-success" : " text-danger";
                }
            }));
        }
    };
    validationItems.setOutputMarkupId(true);
    validationParentContainer.add(validationItems);
}
Also used : IModel(org.apache.wicket.model.IModel) ListView(org.apache.wicket.markup.html.list.ListView) StringLimitationResult(com.evolveum.midpoint.model.api.validator.StringLimitationResult) ListItem(org.apache.wicket.markup.html.list.ListItem) WebMarkupContainer(org.apache.wicket.markup.html.WebMarkupContainer)

Example 3 with StringLimitationResult

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

the class ValuePolicyProcessor method testProhibitedValues.

private StringLimitationResult testProhibitedValues(String newPassword, ProhibitedValuesType prohibitedValuesType, ObjectBasedValuePolicyOriginResolver<?> originResolver, String shortDesc, Task task, OperationResult result, List<LocalizableMessage> messages) throws SchemaException, ObjectNotFoundException, ExpressionEvaluationException, CommunicationException, ConfigurationException, SecurityViolationException {
    if (prohibitedValuesType == null || originResolver == null) {
        return null;
    }
    StringLimitationResult limitation = new StringLimitationResult();
    PolyStringType name = new PolyStringType("prohibited value");
    PolyStringTranslationType translation = new PolyStringTranslationType();
    translation.setKey("ValuePolicy.prohibitedValueName");
    name.setTranslation(translation);
    limitation.setName(name);
    PolyStringType help = new PolyStringType("");
    PolyStringTranslationType helpTranslation = new PolyStringTranslationType();
    helpTranslation.setKey("ValuePolicy.prohibitedValue");
    help.setTranslation(helpTranslation);
    limitation.setHelp(help);
    limitation.setSuccess(true);
    Consumer<ProhibitedValueItemType> failAction = (prohibitedItemType) -> {
        LocalizableMessage msg = new LocalizableMessageBuilder().key("ValuePolicy.prohibitedValue").build();
        result.addSubresult(new OperationResult("Prohibited value", OperationResultStatus.FATAL_ERROR, msg));
        messages.add(msg);
        limitation.setSuccess(false);
    };
    checkProhibitedValues(newPassword, prohibitedValuesType, originResolver, failAction, shortDesc, task, result);
    return limitation;
}
Also used : PolyStringType(com.evolveum.prism.xml.ns._public.types_3.PolyStringType) StringUtils(org.apache.commons.lang.StringUtils) ObjectType(com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType) Autowired(org.springframework.beans.factory.annotation.Autowired) ConfigurationException(com.evolveum.midpoint.util.exception.ConfigurationException) SchemaException(com.evolveum.midpoint.util.exception.SchemaException) ExpressionConstants(com.evolveum.midpoint.schema.constants.ExpressionConstants) StringLimitType(com.evolveum.midpoint.xml.ns._public.common.common_3.StringLimitType) OperationResultStatus(com.evolveum.midpoint.schema.result.OperationResultStatus) LimitationsType(com.evolveum.midpoint.xml.ns._public.common.common_3.LimitationsType) MiscSchemaUtil(com.evolveum.midpoint.schema.util.MiscSchemaUtil) LocalizableMessageList(com.evolveum.midpoint.util.LocalizableMessageList) ResultHandler(com.evolveum.midpoint.schema.ResultHandler) PrismProperty(com.evolveum.midpoint.prism.PrismProperty) ObjectNotFoundException(com.evolveum.midpoint.util.exception.ObjectNotFoundException) LocalizationUtil(com.evolveum.midpoint.schema.util.LocalizationUtil) StringPolicyType(com.evolveum.midpoint.xml.ns._public.common.common_3.StringPolicyType) Task(com.evolveum.midpoint.task.api.Task) MutablePrismPropertyDefinition(com.evolveum.midpoint.prism.MutablePrismPropertyDefinition) CheckExpressionType(com.evolveum.midpoint.xml.ns._public.common.common_3.CheckExpressionType) ExpressionFactory(com.evolveum.midpoint.repo.common.expression.ExpressionFactory) PolyStringTranslationType(com.evolveum.prism.xml.ns._public.types_3.PolyStringTranslationType) PolyStringType(com.evolveum.prism.xml.ns._public.types_3.PolyStringType) SystemException(com.evolveum.midpoint.util.exception.SystemException) ExpressionUtil(com.evolveum.midpoint.repo.common.expression.ExpressionUtil) ExpressionProfile(com.evolveum.midpoint.schema.expression.ExpressionProfile) CommunicationException(com.evolveum.midpoint.util.exception.CommunicationException) BooleanUtils.isTrue(org.apache.commons.lang3.BooleanUtils.isTrue) NotNull(org.jetbrains.annotations.NotNull) Validate(org.apache.commons.lang.Validate) ProtectedStringType(com.evolveum.prism.xml.ns._public.types_3.ProtectedStringType) StrBuilder(org.apache.commons.lang.text.StrBuilder) java.util(java.util) CharacterClassType(com.evolveum.midpoint.xml.ns._public.common.common_3.CharacterClassType) SchemaConstants(com.evolveum.midpoint.schema.constants.SchemaConstants) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) Trace(com.evolveum.midpoint.util.logging.Trace) ObjectUtils.defaultIfNull(org.apache.commons.lang3.ObjectUtils.defaultIfNull) ExpressionEvaluationException(com.evolveum.midpoint.util.exception.ExpressionEvaluationException) ValuePolicyType(com.evolveum.midpoint.xml.ns._public.common.common_3.ValuePolicyType) CollectionUtils(org.apache.commons.collections4.CollectionUtils) EncryptionException(com.evolveum.midpoint.prism.crypto.EncryptionException) PrismObjectDefinition(com.evolveum.midpoint.prism.PrismObjectDefinition) ProhibitedValueItemType(com.evolveum.midpoint.xml.ns._public.common.common_3.ProhibitedValueItemType) SecurityViolationException(com.evolveum.midpoint.util.exception.SecurityViolationException) StringLimitationResult(com.evolveum.midpoint.model.api.validator.StringLimitationResult) PrismContext(com.evolveum.midpoint.prism.PrismContext) PrimitiveType(com.evolveum.midpoint.prism.PrimitiveType) VariablesMap(com.evolveum.midpoint.schema.expression.VariablesMap) LocalizableMessage(com.evolveum.midpoint.util.LocalizableMessage) RandomStringUtils(org.apache.commons.lang.RandomStringUtils) PrismObject(com.evolveum.midpoint.prism.PrismObject) LocalizableMessageBuilder(com.evolveum.midpoint.util.LocalizableMessageBuilder) ItemPath(com.evolveum.midpoint.prism.path.ItemPath) Consumer(java.util.function.Consumer) LocalizableMessageListBuilder(com.evolveum.midpoint.util.LocalizableMessageListBuilder) Component(org.springframework.stereotype.Component) ItemName(com.evolveum.midpoint.prism.path.ItemName) ExpressionType(com.evolveum.midpoint.xml.ns._public.common.common_3.ExpressionType) Protector(com.evolveum.midpoint.prism.crypto.Protector) MutableBoolean(org.apache.commons.lang.mutable.MutableBoolean) ProhibitedValuesType(com.evolveum.midpoint.xml.ns._public.common.common_3.ProhibitedValuesType) TraceManager(com.evolveum.midpoint.util.logging.TraceManager) ItemPathType(com.evolveum.prism.xml.ns._public.types_3.ItemPathType) StringLimitationResult(com.evolveum.midpoint.model.api.validator.StringLimitationResult) LocalizableMessage(com.evolveum.midpoint.util.LocalizableMessage) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) ProhibitedValueItemType(com.evolveum.midpoint.xml.ns._public.common.common_3.ProhibitedValueItemType) LocalizableMessageBuilder(com.evolveum.midpoint.util.LocalizableMessageBuilder) PolyStringTranslationType(com.evolveum.prism.xml.ns._public.types_3.PolyStringTranslationType)

Example 4 with StringLimitationResult

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

the class ValuePolicyProcessor method testMustBeFirst.

private StringLimitationResult testMustBeFirst(StringLimitType stringLimitation, OperationResult result, List<LocalizableMessage> messages, String value, Set<String> validFirstChars, StringLimitationResult limitation) {
    if (stringLimitation.isMustBeFirst() == null) {
        return limitation;
    }
    if (limitation == null) {
        limitation = new StringLimitationResult();
        limitation.setMustBeFirst(stringLimitation.isMustBeFirst());
        limitation.setSuccess(StringUtils.isNotEmpty(value));
    } else {
        limitation.setMustBeFirst(stringLimitation.isMustBeFirst());
    }
    if (StringUtils.isNotEmpty(value) && isTrue(stringLimitation.isMustBeFirst()) && !validFirstChars.contains(value.substring(0, 1))) {
        LocalizableMessage msg = new LocalizableMessageBuilder().key("ValuePolicy.firstCharacterNotAllowed").arg(validFirstChars.toString()).build();
        result.addSubresult(new OperationResult("Check valid first char", 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 5 with StringLimitationResult

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

the class ValuePolicyProcessor method testInvalidCharacters.

private StringLimitationResult testInvalidCharacters(List<String> valueCharacters, HashSet<String> validChars, OperationResult result, List<LocalizableMessage> message) {
    StringBuilder invalidCharacters = new StringBuilder();
    for (String character : valueCharacters) {
        if (!validChars.contains(character)) {
            invalidCharacters.append(character);
        }
    }
    StringLimitationResult limitation = new StringLimitationResult();
    PolyStringType name = new PolyStringType("invalid characters");
    PolyStringTranslationType translation = new PolyStringTranslationType();
    translation.setKey("ValuePolicy.invalidCharacters");
    name.setTranslation(translation);
    limitation.setName(name);
    PolyStringType help = new PolyStringType(getCharsetAsString(validChars));
    limitation.setHelp(help);
    limitation.setSuccess(true);
    if (invalidCharacters.length() > 0) {
        LocalizableMessage msg = new LocalizableMessageBuilder().key("ValuePolicy.charactersNotAllowed").arg(invalidCharacters).build();
        result.addSubresult(new OperationResult("Check if value does not contain invalid characters", 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)

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