You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2015/02/13 16:23:42 UTC

[6/6] syncope git commit: [SYNCOPE-639] #resolve

[SYNCOPE-639] #resolve


Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/21ada502
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/21ada502
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/21ada502

Branch: refs/heads/2_0_X
Commit: 21ada50208145c4561978dfdaf82158a6ad2b793
Parents: 8671ee5 63f4580
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Fri Feb 13 16:23:31 2015 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Fri Feb 13 16:23:31 2015 +0100

----------------------------------------------------------------------
 .../syncope/client/console/pages/NotificationModalPage.java      | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/21ada502/client/console/src/main/java/org/apache/syncope/client/console/pages/NotificationModalPage.java
----------------------------------------------------------------------
diff --cc client/console/src/main/java/org/apache/syncope/client/console/pages/NotificationModalPage.java
index 782c907,0000000..d4917f3
mode 100644,000000..100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/NotificationModalPage.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/NotificationModalPage.java
@@@ -1,441 -1,0 +1,441 @@@
 +/*
 + * Licensed to the Apache Software Foundation (ASF) under one
 + * or more contributor license agreements.  See the NOTICE file
 + * distributed with this work for additional information
 + * regarding copyright ownership.  The ASF licenses this file
 + * to you under the Apache License, Version 2.0 (the
 + * "License"); you may not use this file except in compliance
 + * with the License.  You may obtain a copy of the License at
 + *
 + *   http://www.apache.org/licenses/LICENSE-2.0
 + *
 + * Unless required by applicable law or agreed to in writing,
 + * software distributed under the License is distributed on an
 + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 + * KIND, either express or implied.  See the License for the
 + * specific language governing permissions and limitations
 + * under the License.
 + */
 +package org.apache.syncope.client.console.pages;
 +
 +import java.util.ArrayList;
 +import java.util.Arrays;
 +import java.util.Collections;
 +import java.util.EnumSet;
 +import java.util.List;
 +import org.apache.syncope.client.console.commons.Constants;
 +import org.apache.syncope.client.console.panels.LoggerCategoryPanel;
 +import org.apache.syncope.client.console.panels.RoleSearchPanel;
 +import org.apache.syncope.client.console.panels.UserSearchPanel;
 +import org.apache.syncope.client.console.rest.LoggerRestClient;
 +import org.apache.syncope.client.console.rest.NotificationRestClient;
 +import org.apache.syncope.client.console.wicket.markup.html.form.AjaxCheckBoxPanel;
 +import org.apache.syncope.client.console.wicket.markup.html.form.AjaxDropDownChoicePanel;
 +import org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPanel;
 +import org.apache.syncope.client.console.wicket.markup.html.form.MultiFieldPanel;
 +import org.apache.syncope.common.lib.SyncopeClientException;
 +import org.apache.syncope.common.lib.to.NotificationTO;
 +import org.apache.syncope.common.lib.types.AttributableType;
 +import org.apache.syncope.common.lib.types.IntMappingType;
 +import org.apache.syncope.common.lib.types.TraceLevel;
 +import org.apache.wicket.PageReference;
 +import org.apache.wicket.ajax.AjaxRequestTarget;
 +import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
 +import org.apache.wicket.ajax.markup.html.form.AjaxButton;
 +import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
 +import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxButton;
 +import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
 +import org.apache.wicket.markup.html.WebMarkupContainer;
 +import org.apache.wicket.markup.html.form.Form;
 +import org.apache.wicket.model.CompoundPropertyModel;
 +import org.apache.wicket.model.Model;
 +import org.apache.wicket.model.PropertyModel;
 +import org.apache.wicket.model.ResourceModel;
 +import org.apache.wicket.spring.injection.annot.SpringBean;
 +import org.apache.wicket.validation.validator.EmailAddressValidator;
 +
 +class NotificationModalPage extends BaseModalPage {
 +
 +    private static final long serialVersionUID = -1975312550059578553L;
 +
 +    @SpringBean
 +    private NotificationRestClient restClient;
 +
 +    @SpringBean
 +    private LoggerRestClient loggerRestClient;
 +
 +    public NotificationModalPage(final PageReference pageRef, final ModalWindow window,
 +            final NotificationTO notificationTO, final boolean createFlag) {
 +
 +        final Form<NotificationTO> form =
 +                new Form<NotificationTO>(FORM, new CompoundPropertyModel<NotificationTO>(notificationTO));
 +
 +        final AjaxTextFieldPanel sender = new AjaxTextFieldPanel("sender", getString("sender"),
 +                new PropertyModel<String>(notificationTO, "sender"));
 +        sender.addRequiredLabel();
 +        sender.addValidator(EmailAddressValidator.getInstance());
 +        form.add(sender);
 +
 +        final AjaxTextFieldPanel subject = new AjaxTextFieldPanel("subject", getString("subject"),
 +                new PropertyModel<String>(notificationTO, "subject"));
 +        subject.addRequiredLabel();
 +        form.add(subject);
 +
 +        final AjaxDropDownChoicePanel<String> template = new AjaxDropDownChoicePanel<String>(
 +                "template", getString("template"),
 +                new PropertyModel<String>(notificationTO, "template"));
 +        template.setChoices(confRestClient.getMailTemplates());
 +        template.addRequiredLabel();
 +        form.add(template);
 +
 +        final AjaxDropDownChoicePanel<TraceLevel> traceLevel = new AjaxDropDownChoicePanel<TraceLevel>(
 +                "traceLevel", getString("traceLevel"),
 +                new PropertyModel<TraceLevel>(notificationTO, "traceLevel"));
 +        traceLevel.setChoices(Arrays.asList(TraceLevel.values()));
 +        traceLevel.addRequiredLabel();
 +        form.add(traceLevel);
 +
 +        final AjaxCheckBoxPanel isActive = new AjaxCheckBoxPanel("isActive",
 +                getString("isActive"), new PropertyModel<Boolean>(notificationTO, "active"));
 +        if (createFlag) {
 +            isActive.getField().setDefaultModelObject(Boolean.TRUE);
 +        }
 +        form.add(isActive);
 +
 +        final WebMarkupContainer aboutContainer = new WebMarkupContainer("aboutContainer");
 +        aboutContainer.setOutputMarkupId(true);
 +
 +        form.add(aboutContainer);
 +
 +        final AjaxCheckBoxPanel checkAbout = new AjaxCheckBoxPanel("checkAbout", "checkAbout", new Model<Boolean>(
 +                notificationTO.getUserAbout() == null && notificationTO.getRoleAbout() == null));
 +        aboutContainer.add(checkAbout);
 +
 +        final AjaxCheckBoxPanel checkUserAbout = new AjaxCheckBoxPanel("checkUserAbout", "checkUserAbout",
 +                new Model<Boolean>(notificationTO.getUserAbout() != null));
 +        aboutContainer.add(checkUserAbout);
 +
 +        final AjaxCheckBoxPanel checkRoleAbout = new AjaxCheckBoxPanel("checkRoleAbout", "checkRoleAbout",
 +                new Model<Boolean>(notificationTO.getRoleAbout() != null));
 +        aboutContainer.add(checkRoleAbout);
 +
 +        final UserSearchPanel userAbout =
 +                new UserSearchPanel.Builder("userAbout").fiql(notificationTO.getUserAbout()).build();
 +        aboutContainer.add(userAbout);
 +        userAbout.setEnabled(checkUserAbout.getModelObject());
 +
 +        final RoleSearchPanel roleAbout =
 +                new RoleSearchPanel.Builder("roleAbout").fiql(notificationTO.getRoleAbout()).build();
 +        aboutContainer.add(roleAbout);
 +        roleAbout.setEnabled(checkRoleAbout.getModelObject());
 +
 +        checkAbout.getField().add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
 +
 +            private static final long serialVersionUID = -1107858522700306810L;
 +
 +            @Override
 +            protected void onUpdate(final AjaxRequestTarget target) {
 +                if (checkAbout.getModelObject()) {
 +                    checkUserAbout.setModelObject(Boolean.FALSE);
 +                    checkRoleAbout.setModelObject(Boolean.FALSE);
 +                    userAbout.setEnabled(Boolean.FALSE);
 +                    roleAbout.setEnabled(Boolean.FALSE);
 +                } else {
 +                    checkAbout.setModelObject(Boolean.TRUE);
 +                }
 +                target.add(aboutContainer);
 +            }
 +        });
 +
 +        checkUserAbout.getField().add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
 +
 +            private static final long serialVersionUID = -1107858522700306810L;
 +
 +            @Override
 +            protected void onUpdate(final AjaxRequestTarget target) {
 +                if (checkUserAbout.getModelObject()) {
 +                    checkAbout.setModelObject(!checkUserAbout.getModelObject());
 +                    checkRoleAbout.setModelObject(!checkUserAbout.getModelObject());
 +                    roleAbout.setEnabled(Boolean.FALSE);
 +                } else {
 +                    checkUserAbout.setModelObject(Boolean.TRUE);
 +                }
 +                userAbout.setEnabled(Boolean.TRUE);
 +                target.add(aboutContainer);
 +            }
 +        });
 +
 +        checkRoleAbout.getField().add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
 +
 +            private static final long serialVersionUID = -1107858522700306810L;
 +
 +            @Override
 +            protected void onUpdate(final AjaxRequestTarget target) {
 +                if (checkRoleAbout.getModelObject()) {
 +                    checkAbout.setModelObject(Boolean.FALSE);
 +                    checkUserAbout.setModelObject(Boolean.FALSE);
 +                    userAbout.setEnabled(Boolean.FALSE);
 +                } else {
 +                    checkRoleAbout.setModelObject(Boolean.TRUE);
 +                }
 +                roleAbout.setEnabled(Boolean.TRUE);
 +                target.add(aboutContainer);
 +            }
 +        });
 +
 +        final AjaxDropDownChoicePanel<IntMappingType> recipientAttrType = new AjaxDropDownChoicePanel<IntMappingType>(
 +                "recipientAttrType", new ResourceModel("recipientAttrType", "recipientAttrType").getObject(),
 +                new PropertyModel<IntMappingType>(notificationTO, "recipientAttrType"));
 +        recipientAttrType.setChoices(new ArrayList<IntMappingType>(
 +                IntMappingType.getAttributeTypes(AttributableType.USER,
 +                        EnumSet.of(IntMappingType.UserId, IntMappingType.Password))));
-         recipientAttrType.setRequired(true);
++        recipientAttrType.addRequiredLabel();
 +        form.add(recipientAttrType);
 +
 +        final AjaxDropDownChoicePanel<String> recipientAttrName = new AjaxDropDownChoicePanel<String>(
 +                "recipientAttrName", new ResourceModel("recipientAttrName", "recipientAttrName").getObject(),
 +                new PropertyModel<String>(notificationTO, "recipientAttrName"));
 +        recipientAttrName.setChoices(getSchemaNames(recipientAttrType.getModelObject()));
-         recipientAttrName.setRequired(true);
++        recipientAttrName.addRequiredLabel();
 +        form.add(recipientAttrName);
 +
 +        recipientAttrType.getField().add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
 +
 +            private static final long serialVersionUID = -1107858522700306810L;
 +
 +            @Override
 +            protected void onUpdate(final AjaxRequestTarget target) {
 +                recipientAttrName.setChoices(getSchemaNames(recipientAttrType.getModelObject()));
 +                target.add(recipientAttrName);
 +            }
 +        });
 +
 +        form.add(new LoggerCategoryPanel(
 +                "eventSelection",
 +                loggerRestClient.listEvents(),
 +                new PropertyModel<List<String>>(notificationTO, "events"),
 +                getPageReference(),
 +                "Notification") {
 +
 +                    private static final long serialVersionUID = 6429053774964787735L;
 +
 +                    @Override
 +                    protected String[] getListRoles() {
 +                        return new String[] {};
 +                    }
 +
 +                    @Override
 +                    protected String[] getChangeRoles() {
 +                        return new String[] {};
 +                    }
 +                });
 +
 +        final WebMarkupContainer recipientsContainer = new WebMarkupContainer("recipientsContainer");
 +        recipientsContainer.setOutputMarkupId(true);
 +
 +        form.add(recipientsContainer);
 +
 +        final AjaxCheckBoxPanel checkStaticRecipients = new AjaxCheckBoxPanel("checkStaticRecipients",
 +                "recipients", new Model<Boolean>(!notificationTO.getStaticRecipients().isEmpty()));
 +        form.add(checkStaticRecipients);
 +
 +        if (createFlag) {
 +            checkStaticRecipients.getField().setDefaultModelObject(Boolean.FALSE);
 +        }
 +
 +        final AjaxTextFieldPanel staticRecipientsFieldPanel =
 +                new AjaxTextFieldPanel("panel", "staticRecipients", new Model<String>(null));
 +        staticRecipientsFieldPanel.addValidator(EmailAddressValidator.getInstance());
 +        staticRecipientsFieldPanel.setRequired(checkStaticRecipients.getModelObject());
 +
 +        if (notificationTO.getStaticRecipients().isEmpty()) {
 +            notificationTO.getStaticRecipients().add(null);
 +        }
 +
 +        final MultiFieldPanel<String> staticRecipients = new MultiFieldPanel<String>("staticRecipients",
 +                new PropertyModel<List<String>>(notificationTO, "staticRecipients"), staticRecipientsFieldPanel);
 +        staticRecipients.setEnabled(checkStaticRecipients.getModelObject());
 +        form.add(staticRecipients);
 +
 +        final AjaxCheckBoxPanel checkRecipients =
 +                new AjaxCheckBoxPanel("checkRecipients", "checkRecipients",
 +                        new Model<Boolean>(notificationTO.getRecipients() == null ? false : true));
 +        recipientsContainer.add(checkRecipients);
 +
 +        if (createFlag) {
 +            checkRecipients.getField().setDefaultModelObject(Boolean.TRUE);
 +        }
 +
 +        final UserSearchPanel recipients =
 +                new UserSearchPanel.Builder("recipients").fiql(notificationTO.getRecipients()).build();
 +
 +        recipients.setEnabled(checkRecipients.getModelObject());
 +        recipientsContainer.add(recipients);
 +
 +        final AjaxCheckBoxPanel selfAsRecipient = new AjaxCheckBoxPanel("selfAsRecipient",
 +                getString("selfAsRecipient"), new PropertyModel<Boolean>(notificationTO, "selfAsRecipient"));
 +        form.add(selfAsRecipient);
 +
 +        if (createFlag) {
 +            selfAsRecipient.getField().setDefaultModelObject(Boolean.FALSE);
 +        }
 +
 +        selfAsRecipient.getField().add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
 +
 +            private static final long serialVersionUID = -1107858522700306810L;
 +
 +            @Override
 +            protected void onUpdate(final AjaxRequestTarget target) {
 +                if (!selfAsRecipient.getModelObject()
 +                        && !checkRecipients.getModelObject()
 +                        && !checkStaticRecipients.getModelObject()) {
 +
 +                    checkRecipients.getField().setDefaultModelObject(Boolean.TRUE);
 +                    target.add(checkRecipients);
 +                    recipients.setEnabled(checkRecipients.getModelObject());
 +                    target.add(recipients);
 +                    target.add(recipientsContainer);
 +                }
 +            }
 +        });
 +
 +        checkRecipients.getField().add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
 +
 +            private static final long serialVersionUID = -1107858522700306810L;
 +
 +            @Override
 +            protected void onUpdate(final AjaxRequestTarget target) {
 +                if (!checkRecipients.getModelObject()
 +                        && !selfAsRecipient.getModelObject()
 +                        && !checkStaticRecipients.getModelObject()) {
 +
 +                    checkStaticRecipients.getField().setDefaultModelObject(Boolean.TRUE);
 +                    target.add(checkStaticRecipients);
 +                    staticRecipients.setEnabled(Boolean.TRUE);
 +                    target.add(staticRecipients);
 +                    staticRecipientsFieldPanel.setRequired(Boolean.TRUE);
 +                    target.add(staticRecipientsFieldPanel);
 +                }
 +                recipients.setEnabled(checkRecipients.getModelObject());
 +                target.add(recipients);
 +                target.add(recipientsContainer);
 +            }
 +        });
 +
 +        checkStaticRecipients.getField().add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
 +
 +            private static final long serialVersionUID = -1107858522700306810L;
 +
 +            @Override
 +            protected void onUpdate(final AjaxRequestTarget target) {
 +                if (!checkStaticRecipients.getModelObject()
 +                        && !selfAsRecipient.getModelObject()
 +                        && !checkRecipients.getModelObject()) {
 +                    checkRecipients.getField().setDefaultModelObject(Boolean.TRUE);
 +                    checkRecipients.setEnabled(Boolean.TRUE);
 +                    target.add(checkRecipients);
 +                }
 +                staticRecipients.setEnabled(checkStaticRecipients.getModelObject());
 +                staticRecipientsFieldPanel.setRequired(checkStaticRecipients.getModelObject());
 +                recipients.setEnabled(checkRecipients.getModelObject());
 +                target.add(staticRecipientsFieldPanel);
 +                target.add(staticRecipients);
 +                target.add(recipients);
 +                target.add(recipientsContainer);
 +            }
 +        });
 +
 +        AjaxButton submit = new IndicatingAjaxButton(APPLY, new Model<String>(getString(SUBMIT))) {
 +
 +            private static final long serialVersionUID = -958724007591692537L;
 +
 +            @Override
 +            protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
 +                notificationTO.setUserAbout(
 +                        !checkAbout.getModelObject() && checkUserAbout.getModelObject() ? userAbout.buildFIQL() : null);
 +                notificationTO.setRoleAbout(
 +                        !checkAbout.getModelObject()
 +                        && checkRoleAbout.getModelObject() ? roleAbout.buildFIQL() : null);
 +                notificationTO.setRecipients(checkRecipients.getModelObject() ? recipients.buildFIQL() : null);
 +                notificationTO.getStaticRecipients().removeAll(Collections.singleton(null));
 +
 +                try {
 +                    if (createFlag) {
 +                        restClient.create(notificationTO);
 +                    } else {
 +                        restClient.update(notificationTO);
 +                    }
 +                    info(getString(Constants.OPERATION_SUCCEEDED));
 +
 +                    Configuration callerPage = (Configuration) pageRef.getPage();
 +                    callerPage.setModalResult(true);
 +
 +                    window.close(target);
 +                } catch (SyncopeClientException scee) {
 +                    error(getString(Constants.ERROR) + ": " + scee.getMessage());
 +                    feedbackPanel.refresh(target);
 +                }
 +            }
 +
 +            @Override
 +            protected void onError(final AjaxRequestTarget target, final Form<?> form) {
 +                feedbackPanel.refresh(target);
 +            }
 +        };
 +
 +        final AjaxButton cancel = new IndicatingAjaxButton(CANCEL, new ResourceModel(CANCEL)) {
 +
 +            private static final long serialVersionUID = -958724007591692537L;
 +
 +            @Override
 +            protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
 +                window.close(target);
 +            }
 +        };
 +
 +        cancel.setDefaultFormProcessing(false);
 +
 +        String allowedRoles = createFlag
 +                ? xmlRolesReader.getEntitlement("Notification", "create")
 +                : xmlRolesReader.getEntitlement("Notification", "update");
 +        MetaDataRoleAuthorizationStrategy.authorize(submit, ENABLE, allowedRoles);
 +
 +        form.add(submit);
 +        form.setDefaultButton(submit);
 +
 +        form.add(cancel);
 +
 +        add(form);
 +    }
 +
 +    private List<String> getSchemaNames(final IntMappingType type) {
 +        final List<String> result;
 +
 +        if (type == null) {
 +            result = Collections.<String>emptyList();
 +        } else {
 +            switch (type) {
 +                case UserPlainSchema:
 +                    result = schemaRestClient.getPlainSchemaNames(AttributableType.USER);
 +                    break;
 +
 +                case UserDerivedSchema:
 +                    result = schemaRestClient.getDerSchemaNames(AttributableType.USER);
 +                    break;
 +
 +                case UserVirtualSchema:
 +                    result = schemaRestClient.getVirSchemaNames(AttributableType.USER);
 +                    break;
 +
 +                case Username:
 +                    result = Collections.singletonList("Username");
 +                    break;
 +
 +                default:
 +                    result = Collections.<String>emptyList();
 +            }
 +        }
 +
 +        return result;
 +    }
 +}