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 2016/04/29 16:24:32 UTC
[1/5] syncope git commit: Useless import static
Repository: syncope
Updated Branches:
refs/heads/master ae52b12e1 -> 052cf6b16
Useless import static
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/7c591aa4
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/7c591aa4
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/7c591aa4
Branch: refs/heads/master
Commit: 7c591aa4df0078d4d6e6381b3c031e9d58140f53
Parents: ae52b12
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Fri Apr 29 08:47:37 2016 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Fri Apr 29 08:47:37 2016 +0200
----------------------------------------------------------------------
.../syncope/client/console/reports/ReportDirectoryPanel.java | 2 --
.../org/apache/syncope/client/console/rest/ReportRestClient.java | 2 --
2 files changed, 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/7c591aa4/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportDirectoryPanel.java
index f2055b9..062c6eb 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportDirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportDirectoryPanel.java
@@ -18,8 +18,6 @@
*/
package org.apache.syncope.client.console.reports;
-import static org.apache.wicket.Component.ENABLE;
-
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
http://git-wip-us.apache.org/repos/asf/syncope/blob/7c591aa4/client/console/src/main/java/org/apache/syncope/client/console/rest/ReportRestClient.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/ReportRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/ReportRestClient.java
index 1c59d09..dc72f04 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/rest/ReportRestClient.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/ReportRestClient.java
@@ -18,8 +18,6 @@
*/
package org.apache.syncope.client.console.rest;
-import static org.apache.syncope.client.console.rest.BaseRestClient.getService;
-
import java.io.InputStream;
import java.util.Date;
import java.util.List;
[4/5] syncope git commit: [SYNCOPE-745] Audit
Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/java/org/apache/syncope/client/console/notifications/NotificationHandler.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/notifications/NotificationHandler.java b/client/console/src/main/java/org/apache/syncope/client/console/notifications/NotificationHandler.java
deleted file mode 100644
index b089631..0000000
--- a/client/console/src/main/java/org/apache/syncope/client/console/notifications/NotificationHandler.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * 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.notifications;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.lang3.tuple.Pair;
-import org.apache.syncope.client.console.panels.search.SearchClause;
-import org.apache.syncope.client.console.panels.search.SearchUtils;
-import org.apache.syncope.client.lib.SyncopeClient;
-import org.apache.syncope.common.lib.search.AbstractFiqlSearchConditionBuilder;
-import org.apache.syncope.common.lib.to.NotificationTO;
-
-public class NotificationHandler implements Serializable {
-
- private static final long serialVersionUID = 8058288034211558376L;
-
- private final NotificationTO notificationTO;
-
- private List<Pair<String, List<SearchClause>>> aboutClauses;
-
- private List<SearchClause> recipientClauses;
-
- public NotificationHandler(final NotificationTO notificationTO) {
- this.notificationTO = notificationTO;
- }
-
- public final String getKey() {
- return this.notificationTO.getKey();
- }
-
- public List<Pair<String, List<SearchClause>>> getAboutClauses() {
- if (this.aboutClauses == null) {
- this.aboutClauses = new ArrayList<>();
- for (Map.Entry<String, List<SearchClause>> entry
- : SearchUtils.getSearchClauses(this.notificationTO.getAbouts()).entrySet()) {
- this.aboutClauses.add(Pair.of(entry.getKey(), (entry.getValue())));
- }
- }
-
- return this.aboutClauses;
- }
-
- public void setAboutClauses(final List<Pair<String, List<SearchClause>>> dynClauses) {
- this.aboutClauses = dynClauses;
- }
-
- public List<SearchClause> getRecipientClauses() {
- if (this.recipientClauses == null) {
- this.recipientClauses = SearchUtils.getSearchClauses(this.notificationTO.getRecipientsFIQL());
- }
- return this.recipientClauses;
- }
-
- public void setRecipientClauses(final List<SearchClause> dynClauses) {
- this.recipientClauses = dynClauses;
- }
-
- public Map<String, String> getAboutFIQLs() {
- if (CollectionUtils.isEmpty(this.aboutClauses)) {
- return this.notificationTO.getAbouts();
- } else {
-
- final Map<String, String> res = new HashMap<>();
- for (Pair<String, List<SearchClause>> pair : this.aboutClauses) {
- AbstractFiqlSearchConditionBuilder builder;
- switch (pair.getLeft()) {
- case "USER":
- builder = SyncopeClient.getUserSearchConditionBuilder();
- break;
- case "GROUP":
- builder = SyncopeClient.getGroupSearchConditionBuilder();
- break;
- default:
- builder = SyncopeClient.getAnyObjectSearchConditionBuilder(pair.getLeft());
- break;
-
- }
- res.put(pair.getLeft(), getFIQLString(pair.getRight(), builder));
- }
- return res;
- }
- }
-
- private String getRecipientsFIQL() {
- if (CollectionUtils.isEmpty(this.recipientClauses)) {
- return null;
- } else {
- return getFIQLString(this.recipientClauses, SyncopeClient.getUserSearchConditionBuilder());
- }
- }
-
- private String getFIQLString(final List<SearchClause> clauses, final AbstractFiqlSearchConditionBuilder bld) {
- return SearchUtils.buildFIQL(clauses, bld);
- }
-
- public NotificationTO fillAboutConditions() {
- this.notificationTO.getAbouts().clear();
- this.notificationTO.getAbouts().putAll(this.getAboutFIQLs());
- return this.notificationTO;
- }
-
- public NotificationTO fillRecipientConditions() {
- this.notificationTO.setRecipientsFIQL(this.getRecipientsFIQL());
- return this.notificationTO;
- }
-
- public NotificationTO getInnerObject() {
- return this.notificationTO;
- }
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/java/org/apache/syncope/client/console/notifications/NotificationWizardBuilder.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/notifications/NotificationWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/notifications/NotificationWizardBuilder.java
index fba971e..4bc8478 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/notifications/NotificationWizardBuilder.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/notifications/NotificationWizardBuilder.java
@@ -18,6 +18,7 @@
*/
package org.apache.syncope.client.console.notifications;
+import org.apache.syncope.client.console.events.EventCategoryPanel;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
@@ -69,7 +70,7 @@ import org.apache.wicket.model.ResourceModel;
import org.apache.wicket.model.util.ListModel;
import org.apache.wicket.validation.validator.EmailAddressValidator;
-public class NotificationWizardBuilder extends AjaxWizardBuilder<NotificationHandler> {
+public class NotificationWizardBuilder extends AjaxWizardBuilder<NotificationWrapper> {
private static final long serialVersionUID = -1975312550059578553L;
@@ -86,11 +87,11 @@ public class NotificationWizardBuilder extends AjaxWizardBuilder<NotificationHan
* @param pageRef Caller page reference.
*/
public NotificationWizardBuilder(final NotificationTO notificationTO, final PageReference pageRef) {
- super(new NotificationHandler(notificationTO), pageRef);
+ super(new NotificationWrapper(notificationTO), pageRef);
}
@Override
- protected Serializable onApplyInternal(final NotificationHandler modelObject) {
+ protected Serializable onApplyInternal(final NotificationWrapper modelObject) {
modelObject.fillRecipientConditions();
modelObject.fillAboutConditions();
@@ -105,7 +106,7 @@ public class NotificationWizardBuilder extends AjaxWizardBuilder<NotificationHan
}
@Override
- protected WizardModel buildModelSteps(final NotificationHandler modelObject, final WizardModel wizardModel) {
+ protected WizardModel buildModelSteps(final NotificationWrapper modelObject, final WizardModel wizardModel) {
wizardModel.add(new NotificationWizardBuilder.Details(modelObject));
wizardModel.add(new NotificationWizardBuilder.Events(modelObject));
wizardModel.add(new NotificationWizardBuilder.Abouts(modelObject));
@@ -117,7 +118,7 @@ public class NotificationWizardBuilder extends AjaxWizardBuilder<NotificationHan
private static final long serialVersionUID = -7709805590497687958L;
- public Details(final NotificationHandler modelObject) {
+ public Details(final NotificationWrapper modelObject) {
final NotificationTO notificationTO = modelObject.getInnerObject();
final boolean createFlag = notificationTO.getKey() == null;
@@ -165,7 +166,7 @@ public class NotificationWizardBuilder extends AjaxWizardBuilder<NotificationHan
"template", getString("template"),
new PropertyModel<String>(notificationTO, "template"));
template.setChoices(CollectionUtils.collect(
- restClient.getAllAvailableTemplates(), new Transformer<MailTemplateTO, String>() {
+ restClient.listTemplates(), new Transformer<MailTemplateTO, String>() {
@Override
public String transform(final MailTemplateTO input) {
@@ -197,25 +198,22 @@ public class NotificationWizardBuilder extends AjaxWizardBuilder<NotificationHan
private static final long serialVersionUID = -7709805590497687958L;
- public Events(final NotificationHandler modelObject) {
- final NotificationTO notificationTO = modelObject.getInnerObject();
- add(new LoggerCategoryPanel(
+ public Events(final NotificationWrapper modelObject) {
+ add(new EventCategoryPanel(
"eventSelection",
loggerRestClient.listEvents(),
- new PropertyModel<List<String>>(notificationTO, "events"),
- pageRef,
- "Notification") {
+ new PropertyModel<List<String>>(modelObject.getInnerObject(), "events")) {
private static final long serialVersionUID = 6429053774964787735L;
@Override
- protected String[] getListRoles() {
- return new String[] {};
+ protected List<String> getListAuthRoles() {
+ return Collections.emptyList();
}
@Override
- protected String[] getChangeRoles() {
- return new String[] {};
+ protected List<String> getChangeAuthRoles() {
+ return Collections.emptyList();
}
});
}
@@ -313,7 +311,7 @@ public class NotificationWizardBuilder extends AjaxWizardBuilder<NotificationHan
private static final long serialVersionUID = -7709805590497687958L;
- public Abouts(final NotificationHandler modelObject) {
+ public Abouts(final NotificationWrapper modelObject) {
final WebMarkupContainer aboutContainer = new WebMarkupContainer("about");
aboutContainer.setOutputMarkupId(true);
add(aboutContainer);
@@ -361,7 +359,7 @@ public class NotificationWizardBuilder extends AjaxWizardBuilder<NotificationHan
private static final long serialVersionUID = -7709805590497687958L;
- public Recipients(final NotificationHandler modelObject) {
+ public Recipients(final NotificationWrapper modelObject) {
final NotificationTO notificationTO = modelObject.getInnerObject();
final boolean createFlag = notificationTO.getKey() == null;
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/java/org/apache/syncope/client/console/notifications/NotificationWrapper.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/notifications/NotificationWrapper.java b/client/console/src/main/java/org/apache/syncope/client/console/notifications/NotificationWrapper.java
new file mode 100644
index 0000000..031ebb8
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/notifications/NotificationWrapper.java
@@ -0,0 +1,131 @@
+/*
+ * 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.notifications;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.tuple.Pair;
+import org.apache.syncope.client.console.panels.search.SearchClause;
+import org.apache.syncope.client.console.panels.search.SearchUtils;
+import org.apache.syncope.client.lib.SyncopeClient;
+import org.apache.syncope.common.lib.search.AbstractFiqlSearchConditionBuilder;
+import org.apache.syncope.common.lib.to.NotificationTO;
+
+public class NotificationWrapper implements Serializable {
+
+ private static final long serialVersionUID = 8058288034211558376L;
+
+ private final NotificationTO notificationTO;
+
+ private List<Pair<String, List<SearchClause>>> aboutClauses;
+
+ private List<SearchClause> recipientClauses;
+
+ public NotificationWrapper(final NotificationTO notificationTO) {
+ this.notificationTO = notificationTO;
+ }
+
+ public final String getKey() {
+ return this.notificationTO.getKey();
+ }
+
+ public List<Pair<String, List<SearchClause>>> getAboutClauses() {
+ if (this.aboutClauses == null) {
+ this.aboutClauses = new ArrayList<>();
+ for (Map.Entry<String, List<SearchClause>> entry
+ : SearchUtils.getSearchClauses(this.notificationTO.getAbouts()).entrySet()) {
+ this.aboutClauses.add(Pair.of(entry.getKey(), (entry.getValue())));
+ }
+ }
+
+ return this.aboutClauses;
+ }
+
+ public void setAboutClauses(final List<Pair<String, List<SearchClause>>> dynClauses) {
+ this.aboutClauses = dynClauses;
+ }
+
+ public List<SearchClause> getRecipientClauses() {
+ if (this.recipientClauses == null) {
+ this.recipientClauses = SearchUtils.getSearchClauses(this.notificationTO.getRecipientsFIQL());
+ }
+ return this.recipientClauses;
+ }
+
+ public void setRecipientClauses(final List<SearchClause> dynClauses) {
+ this.recipientClauses = dynClauses;
+ }
+
+ public Map<String, String> getAboutFIQLs() {
+ if (CollectionUtils.isEmpty(this.aboutClauses)) {
+ return this.notificationTO.getAbouts();
+ } else {
+
+ final Map<String, String> res = new HashMap<>();
+ for (Pair<String, List<SearchClause>> pair : this.aboutClauses) {
+ AbstractFiqlSearchConditionBuilder builder;
+ switch (pair.getLeft()) {
+ case "USER":
+ builder = SyncopeClient.getUserSearchConditionBuilder();
+ break;
+ case "GROUP":
+ builder = SyncopeClient.getGroupSearchConditionBuilder();
+ break;
+ default:
+ builder = SyncopeClient.getAnyObjectSearchConditionBuilder(pair.getLeft());
+ break;
+
+ }
+ res.put(pair.getLeft(), getFIQLString(pair.getRight(), builder));
+ }
+ return res;
+ }
+ }
+
+ private String getRecipientsFIQL() {
+ if (CollectionUtils.isEmpty(this.recipientClauses)) {
+ return null;
+ } else {
+ return getFIQLString(this.recipientClauses, SyncopeClient.getUserSearchConditionBuilder());
+ }
+ }
+
+ private String getFIQLString(final List<SearchClause> clauses, final AbstractFiqlSearchConditionBuilder bld) {
+ return SearchUtils.buildFIQL(clauses, bld);
+ }
+
+ public NotificationTO fillAboutConditions() {
+ this.notificationTO.getAbouts().clear();
+ this.notificationTO.getAbouts().putAll(this.getAboutFIQLs());
+ return this.notificationTO;
+ }
+
+ public NotificationTO fillRecipientConditions() {
+ this.notificationTO.setRecipientsFIQL(this.getRecipientsFIQL());
+ return this.notificationTO;
+ }
+
+ public NotificationTO getInnerObject() {
+ return this.notificationTO;
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/java/org/apache/syncope/client/console/notifications/SelectedEventsPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/notifications/SelectedEventsPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/notifications/SelectedEventsPanel.java
deleted file mode 100644
index cf396f6..0000000
--- a/client/console/src/main/java/org/apache/syncope/client/console/notifications/SelectedEventsPanel.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * 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.notifications;
-
-import java.util.List;
-import java.util.Set;
-import org.apache.syncope.client.console.commons.Constants;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
-import org.apache.wicket.event.Broadcast;
-import org.apache.wicket.event.IEvent;
-import org.apache.wicket.markup.ComponentTag;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.form.IChoiceRenderer;
-import org.apache.wicket.markup.html.form.ListMultipleChoice;
-import org.apache.wicket.markup.html.panel.Panel;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.util.ListModel;
-
-public class SelectedEventsPanel extends Panel {
-
- private static final long serialVersionUID = -4832450230348213500L;
-
- private final WebMarkupContainer selectionContainer;
-
- private ListMultipleChoice<String> selectedEvents;
-
- private final IModel<List<String>> model;
-
- public SelectedEventsPanel(final String id, final IModel<List<String>> model) {
- super(id);
-
- this.model = model;
-
- selectionContainer = new WebMarkupContainer("selectionContainer");
- selectionContainer.setOutputMarkupId(true);
- add(selectionContainer);
-
- selectedEvents = new ListMultipleChoice<String>("selectedEvents", new ListModel<String>(), model) {
-
- private static final long serialVersionUID = 1226677544225737338L;
-
- @Override
- protected void onComponentTag(final ComponentTag tag) {
- super.onComponentTag(tag);
- tag.remove("size");
- tag.remove("multiple");
- tag.put("size", 5);
- }
- };
-
- selectedEvents.setMaxRows(5);
- selectedEvents.setChoiceRenderer(new IChoiceRenderer<String>() {
-
- private static final long serialVersionUID = -4288397951948436434L;
-
- @Override
- public Object getDisplayValue(final String object) {
- return object;
- }
-
- @Override
- public String getIdValue(final String object, final int index) {
- return object;
- }
-
- @Override
- public String getObject(final String id, final IModel<? extends List<? extends String>> choices) {
- return id;
- }
- });
-
- selectedEvents.add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
-
- private static final long serialVersionUID = -151291731388673682L;
-
- @Override
- protected void onUpdate(final AjaxRequestTarget target) {
- send(SelectedEventsPanel.this.getPage(),
- Broadcast.BREADTH,
- new InspectSelectedEvent(target, selectedEvents.getModelValue()));
- }
- });
-
- selectionContainer.add(selectedEvents);
- }
-
- @Override
- public void onEvent(final IEvent<?> event) {
- if (event.getPayload() instanceof EventSelectionChanged) {
- final EventSelectionChanged eventSelectionChanged = (EventSelectionChanged) event.getPayload();
-
- for (String toBeRemoved : eventSelectionChanged.getToBeRemoved()) {
- model.getObject().remove(toBeRemoved);
- }
-
- for (String toBeAdded : eventSelectionChanged.getToBeAdded()) {
- if (!model.getObject().contains(toBeAdded)) {
- model.getObject().add(toBeAdded);
- }
- }
-
- eventSelectionChanged.getTarget().add(selectionContainer);
- }
- }
-
- public static class InspectSelectedEvent {
-
- private final AjaxRequestTarget target;
-
- private final String event;
-
- public InspectSelectedEvent(final AjaxRequestTarget target, final String event) {
- this.target = target;
- this.event = event;
- }
-
- public AjaxRequestTarget getTarget() {
- return target;
- }
-
- public String getEvent() {
- return event;
- }
- }
-
- public static class EventSelectionChanged {
-
- private final AjaxRequestTarget target;
-
- private final Set<String> toBeRemoved;
-
- private final Set<String> toBeAdded;
-
- public EventSelectionChanged(
- final AjaxRequestTarget target,
- final Set<String> toBeAdded,
- final Set<String> toBeRemoved) {
- this.target = target;
- this.toBeAdded = toBeAdded;
- this.toBeRemoved = toBeRemoved;
- }
-
- public AjaxRequestTarget getTarget() {
- return target;
- }
-
- public Set<String> getToBeRemoved() {
- return toBeRemoved;
- }
-
- public Set<String> getToBeAdded() {
- return toBeAdded;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/java/org/apache/syncope/client/console/pages/Audit.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/Audit.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/Audit.java
new file mode 100644
index 0000000..9a5fc4a
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/Audit.java
@@ -0,0 +1,127 @@
+/*
+ * 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.List;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.tuple.Pair;
+import org.apache.syncope.client.console.BookmarkablePageLinkBuilder;
+import org.apache.syncope.client.console.events.EventCategoryPanel;
+import org.apache.syncope.client.console.events.SelectedEventsPanel;
+import org.apache.syncope.client.console.rest.LoggerRestClient;
+import org.apache.syncope.common.lib.to.EventCategoryTO;
+import org.apache.syncope.common.lib.types.AuditElements;
+import org.apache.syncope.common.lib.types.AuditLoggerName;
+import org.apache.syncope.common.lib.types.StandardEntitlement;
+import org.apache.wicket.event.IEvent;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.model.util.ListModel;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+
+public class Audit extends BasePage {
+
+ private static final long serialVersionUID = -1100228004207271271L;
+
+ public Audit(final PageParameters parameters) {
+ super(parameters);
+
+ body.add(BookmarkablePageLinkBuilder.build("dashboard", "dashboardBr", Dashboard.class));
+
+ final LoggerRestClient loggerRestClient = new LoggerRestClient();
+
+ List<String> events = new ArrayList<>();
+ for (AuditLoggerName audit : loggerRestClient.listAudits()) {
+ events.add(AuditLoggerName.buildEvent(
+ audit.getType(),
+ audit.getCategory(),
+ audit.getSubcategory(),
+ audit.getEvent(),
+ audit.getResult()));
+ }
+
+ WebMarkupContainer content = new WebMarkupContainer("content");
+ content.setOutputMarkupId(true);
+
+ Form<?> form = new Form<>("auditForm");
+ content.add(form);
+
+ form.add(new EventCategoryPanel(
+ "auditPanel",
+ loggerRestClient.listEvents(),
+ new ListModel<>(events)) {
+
+ private static final long serialVersionUID = 6113164334533550277L;
+
+ @Override
+ protected List<String> getListAuthRoles() {
+ return Collections.singletonList(StandardEntitlement.AUDIT_LIST);
+ }
+
+ @Override
+ protected List<String> getChangeAuthRoles() {
+ return Arrays.asList(
+ new String[] { StandardEntitlement.AUDIT_ENABLE, StandardEntitlement.AUDIT_DISABLE });
+ }
+
+ @Override
+ public void onEventAction(final IEvent<?> event) {
+ if (event.getPayload() instanceof SelectedEventsPanel.EventSelectionChanged) {
+ final SelectedEventsPanel.EventSelectionChanged eventSelectionChanged =
+ (SelectedEventsPanel.EventSelectionChanged) event.getPayload();
+
+ for (String toBeRemoved : eventSelectionChanged.getToBeRemoved()) {
+ Pair<EventCategoryTO, AuditElements.Result> eventCategory =
+ AuditLoggerName.parseEventCategory(toBeRemoved);
+
+ AuditLoggerName auditLoggerName = new AuditLoggerName(
+ eventCategory.getKey().getType(),
+ eventCategory.getKey().getCategory(),
+ eventCategory.getKey().getSubcategory(),
+ CollectionUtils.isEmpty(eventCategory.getKey().getEvents())
+ ? null : eventCategory.getKey().getEvents().iterator().next(),
+ eventCategory.getValue());
+
+ loggerRestClient.disableAudit(auditLoggerName);
+ }
+
+ for (String toBeAdded : eventSelectionChanged.getToBeAdded()) {
+ Pair<EventCategoryTO, AuditElements.Result> eventCategory =
+ AuditLoggerName.parseEventCategory(toBeAdded);
+
+ AuditLoggerName auditLoggerName = new AuditLoggerName(
+ eventCategory.getKey().getType(),
+ eventCategory.getKey().getCategory(),
+ eventCategory.getKey().getSubcategory(),
+ CollectionUtils.isEmpty(eventCategory.getKey().getEvents())
+ ? null : eventCategory.getKey().getEvents().iterator().next(),
+ eventCategory.getValue());
+
+ loggerRestClient.enableAudit(auditLoggerName);
+ }
+ }
+ }
+ });
+
+ body.add(content);
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
index b0425a9..c5797db 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
@@ -160,6 +160,12 @@ public class BasePage extends WebPage implements IAjaxIndicatorAware {
MetaDataRoleAuthorizationStrategy.authorize(link, WebPage.ENABLE, StandardEntitlement.WORKFLOW_DEF_READ);
liContainer.add(link);
+ liContainer = new WebMarkupContainer(getLIContainerId("audit"));
+ confULContainer.add(liContainer);
+ link = BookmarkablePageLinkBuilder.build("audit", Audit.class);
+ MetaDataRoleAuthorizationStrategy.authorize(link, WebPage.ENABLE, StandardEntitlement.AUDIT_LIST);
+ liContainer.add(link);
+
liContainer = new WebMarkupContainer(getLIContainerId("logs"));
confULContainer.add(liContainer);
link = BookmarkablePageLinkBuilder.build("logs", Logs.class);
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/java/org/apache/syncope/client/console/pages/Roles.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/Roles.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/Roles.java
index 3758258..0f4295c 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/Roles.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/Roles.java
@@ -21,7 +21,7 @@ package org.apache.syncope.client.console.pages;
import org.apache.syncope.client.console.BookmarkablePageLinkBuilder;
import org.apache.syncope.client.console.panels.RoleDirectoryPanel;
import org.apache.syncope.client.console.wizards.WizardMgtPanel;
-import org.apache.syncope.client.console.wizards.role.RoleHandler;
+import org.apache.syncope.client.console.wizards.role.RoleWrapper;
import org.apache.syncope.client.console.wizards.role.RoleWizardBuilder;
import org.apache.syncope.common.lib.to.RoleTO;
import org.apache.wicket.markup.html.WebMarkupContainer;
@@ -40,7 +40,7 @@ public class Roles extends BasePage {
content.setOutputMarkupId(true);
body.add(content);
- WizardMgtPanel<RoleHandler> rolesPanel = new RoleDirectoryPanel.Builder(getPageReference()) {
+ WizardMgtPanel<RoleWrapper> rolesPanel = new RoleDirectoryPanel.Builder(getPageReference()) {
private static final long serialVersionUID = -5960765294082359003L;
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyObjectDisplayAttributesModalPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyObjectDisplayAttributesModalPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyObjectDisplayAttributesModalPanel.java
index 9b02666..b99a323 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyObjectDisplayAttributesModalPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyObjectDisplayAttributesModalPanel.java
@@ -29,7 +29,7 @@ import org.apache.wicket.PageReference;
* Modal window with Display any attributes form.
*
* @param <T> can be {@link org.apache.syncope.common.lib.to.AnyTO} or
- * {@link org.apache.syncope.client.console.wizards.any.AnyHandler}
+ * {@link org.apache.syncope.client.console.wizards.any.AnyWrapper}
*/
public class AnyObjectDisplayAttributesModalPanel<T extends Serializable> extends DisplayAttributesModalPanel<T> {
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/java/org/apache/syncope/client/console/panels/DisplayAttributesModalPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/DisplayAttributesModalPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/DisplayAttributesModalPanel.java
index f09b59a..764a5e3 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/DisplayAttributesModalPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/DisplayAttributesModalPanel.java
@@ -41,7 +41,7 @@ import org.apache.wicket.model.util.ListModel;
/**
* Modal window with Display attributes form.
*
- * @param <T> can be {@link AnyTO} or {@link org.apache.syncope.client.console.wizards.any.AnyHandler}
+ * @param <T> can be {@link AnyTO} or {@link org.apache.syncope.client.console.wizards.any.AnyWrapper}
*/
public abstract class DisplayAttributesModalPanel<T extends Serializable> extends AbstractModalPanel<T> {
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupDisplayAttributesModalPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupDisplayAttributesModalPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupDisplayAttributesModalPanel.java
index 30aeb96..43b8b93 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupDisplayAttributesModalPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupDisplayAttributesModalPanel.java
@@ -29,7 +29,7 @@ import org.apache.wicket.PageReference;
* Modal window with Display group attributes form.
*
* @param <T> can be {@link org.apache.syncope.common.lib.to.AnyTO} or
- * {@link org.apache.syncope.client.console.wizards.any.AnyHandler}
+ * {@link org.apache.syncope.client.console.wizards.any.AnyWrapper}
*/
public class GroupDisplayAttributesModalPanel<T extends Serializable> extends DisplayAttributesModalPanel<T> {
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/java/org/apache/syncope/client/console/panels/RoleDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/RoleDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/RoleDirectoryPanel.java
index ffccc48..9997e02 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/RoleDirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/RoleDirectoryPanel.java
@@ -37,7 +37,7 @@ import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink.Acti
import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksPanel;
import org.apache.syncope.client.console.wizards.AjaxWizard;
import org.apache.syncope.client.console.wizards.WizardMgtPanel;
-import org.apache.syncope.client.console.wizards.role.RoleHandler;
+import org.apache.syncope.client.console.wizards.role.RoleWrapper;
import org.apache.syncope.common.lib.SyncopeClientException;
import org.apache.syncope.common.lib.to.RoleTO;
import org.apache.syncope.common.lib.types.StandardEntitlement;
@@ -50,7 +50,7 @@ import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColu
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.ResourceModel;
-public class RoleDirectoryPanel extends DirectoryPanel<RoleTO, RoleHandler, RoleDataProvider, RoleRestClient> {
+public class RoleDirectoryPanel extends DirectoryPanel<RoleTO, RoleWrapper, RoleDataProvider, RoleRestClient> {
private static final long serialVersionUID = -1100228004207271270L;
@@ -108,7 +108,7 @@ public class RoleDirectoryPanel extends DirectoryPanel<RoleTO, RoleHandler, Role
public void onClick(final AjaxRequestTarget target, final RoleTO ignore) {
send(RoleDirectoryPanel.this, Broadcast.EXACT,
new AjaxWizard.EditItemActionEvent<>(
- new RoleHandler(new RoleRestClient().read(model.getObject().getKey())),
+ new RoleWrapper(new RoleRestClient().read(model.getObject().getKey())),
target));
}
}, ActionLink.ActionType.EDIT, StandardEntitlement.ROLE_READ).add(new ActionLink<RoleTO>() {
@@ -120,7 +120,7 @@ public class RoleDirectoryPanel extends DirectoryPanel<RoleTO, RoleHandler, Role
final RoleTO clone = SerializationUtils.clone(model.getObject());
clone.setKey(null);
send(RoleDirectoryPanel.this, Broadcast.EXACT,
- new AjaxWizard.NewItemActionEvent<>(new RoleHandler(clone), target));
+ new AjaxWizard.NewItemActionEvent<>(new RoleWrapper(clone), target));
}
}, ActionLink.ActionType.CLONE, StandardEntitlement.ROLE_CREATE).add(new ActionLink<RoleTO>() {
@@ -187,7 +187,7 @@ public class RoleDirectoryPanel extends DirectoryPanel<RoleTO, RoleHandler, Role
}
public abstract static class Builder
- extends DirectoryPanel.Builder<RoleTO, RoleHandler, RoleRestClient> {
+ extends DirectoryPanel.Builder<RoleTO, RoleWrapper, RoleRestClient> {
private static final long serialVersionUID = 5088962796986706805L;
@@ -196,7 +196,7 @@ public class RoleDirectoryPanel extends DirectoryPanel<RoleTO, RoleHandler, Role
}
@Override
- protected WizardMgtPanel<RoleHandler> newInstance(final String id) {
+ protected WizardMgtPanel<RoleWrapper> newInstance(final String id) {
return new RoleDirectoryPanel(id, this);
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java
index 9c2094f..21a85b6 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java
@@ -264,9 +264,8 @@ public class SchemaTypePanel extends TypesDirectoryPanel<AbstractSchemaTO, Schem
private SchemaProvider(final int paginatorRows, final SchemaType schemaType) {
super(paginatorRows);
- this.schemaType = schemaType;
- // Default sorting
+ this.schemaType = schemaType;
setSort("key", SortOrder.ASCENDING);
comparator = new SortableDataProviderComparator<>(this);
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/java/org/apache/syncope/client/console/panels/TypeExtensionDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/TypeExtensionDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/TypeExtensionDirectoryPanel.java
index 17a8535..a010569 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/TypeExtensionDirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/TypeExtensionDirectoryPanel.java
@@ -179,7 +179,6 @@ public class TypeExtensionDirectoryPanel
public TypeExtensionDataProvider(final int paginatorRows) {
super(paginatorRows);
- //Default sorting
setSort("anyKey", SortOrder.DESCENDING);
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/java/org/apache/syncope/client/console/panels/UserDisplayAttributesModalPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/UserDisplayAttributesModalPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/UserDisplayAttributesModalPanel.java
index ff833a8..1ef96ca 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/UserDisplayAttributesModalPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/UserDisplayAttributesModalPanel.java
@@ -29,7 +29,7 @@ import org.apache.wicket.PageReference;
* Modal window with Display user attributes form.
*
* @param <T> can be {@link org.apache.syncope.common.lib.to.AnyTO} or
- * {@link org.apache.syncope.client.console.wizards.any.AnyHandler}
+ * {@link org.apache.syncope.client.console.wizards.any.AnyWrapper}
*/
public class UserDisplayAttributesModalPanel<T extends Serializable> extends DisplayAttributesModalPanel<T> {
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportDirectoryPanel.java
index 062c6eb..1f56083 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportDirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportDirectoryPanel.java
@@ -228,27 +228,23 @@ public abstract class ReportDirectoryPanel
private final SortableDataProviderComparator<ReportTO> comparator;
- private final List<ReportTO> reports;
-
public ReportDataProvider(final int paginatorRows) {
super(paginatorRows);
- this.reports = restClient.list();
- //Default sorting
setSort("key", SortOrder.DESCENDING);
comparator = new SortableDataProviderComparator<>(this);
-
- Collections.sort(this.reports, comparator);
}
@Override
public Iterator<ReportTO> iterator(final long first, final long count) {
- return this.reports.subList((int) first, (int) (first + count)).iterator();
+ List<ReportTO> list = restClient.list();
+ Collections.sort(list, comparator);
+ return list.subList((int) first, (int) first + (int) count).iterator();
}
@Override
public long size() {
- return reports.size();
+ return restClient.list().size();
}
@Override
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportTemplateDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportTemplateDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportTemplateDirectoryPanel.java
index 497a4bd..31e84f1 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportTemplateDirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportTemplateDirectoryPanel.java
@@ -225,14 +225,14 @@ public class ReportTemplateDirectoryPanel
@Override
public Iterator<ReportTemplateTO> iterator(final long first, final long count) {
- final List<ReportTemplateTO> list = restClient.getAllAvailableTemplates();
+ final List<ReportTemplateTO> list = restClient.listTemplates();
Collections.sort(list, comparator);
return list.subList((int) first, (int) first + (int) count).iterator();
}
@Override
public long size() {
- return restClient.getAllAvailableTemplates().size();
+ return restClient.listTemplates().size();
}
@Override
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportWizardBuilder.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportWizardBuilder.java
index 6a12244..6d4922c 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportWizardBuilder.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportWizardBuilder.java
@@ -78,7 +78,7 @@ public class ReportWizardBuilder extends AjaxWizardBuilder<ReportTO> {
"template", getString("template"),
new PropertyModel<String>(reportTO, "template"));
template.setChoices(CollectionUtils.collect(
- restClient.getAllAvailableTemplates(), new Transformer<ReportTemplateTO, String>() {
+ restClient.listTemplates(), new Transformer<ReportTemplateTO, String>() {
@Override
public String transform(final ReportTemplateTO input) {
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/java/org/apache/syncope/client/console/rest/NotificationRestClient.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/NotificationRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/NotificationRestClient.java
index eab0a17..1509217 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/rest/NotificationRestClient.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/NotificationRestClient.java
@@ -34,7 +34,7 @@ public class NotificationRestClient extends BaseRestClient
private static final long serialVersionUID = 6328933265096511690L;
- public List<NotificationTO> getAllNotifications() {
+ public List<NotificationTO> list() {
return getService(NotificationService.class).list();
}
@@ -55,7 +55,7 @@ public class NotificationRestClient extends BaseRestClient
}
@Override
- public List<MailTemplateTO> getAllAvailableTemplates() {
+ public List<MailTemplateTO> listTemplates() {
return getService(MailTemplateService.class).list();
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/java/org/apache/syncope/client/console/rest/ReportRestClient.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/ReportRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/ReportRestClient.java
index dc72f04..30e2037 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/rest/ReportRestClient.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/ReportRestClient.java
@@ -97,7 +97,7 @@ public class ReportRestClient extends BaseRestClient
}
@Override
- public List<ReportTemplateTO> getAllAvailableTemplates() {
+ public List<ReportTemplateTO> listTemplates() {
return getService(ReportTemplateService.class).list();
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/java/org/apache/syncope/client/console/rest/TemplateRestClient.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/TemplateRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/TemplateRestClient.java
index 9bb62b6..d3d5c35 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/rest/TemplateRestClient.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/TemplateRestClient.java
@@ -22,7 +22,7 @@ import java.util.List;
public interface TemplateRestClient<T, F> extends RestClient {
- List<T> getAllAvailableTemplates();
+ List<T> listTemplates();
void createTemplate(final T templateTO);
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java
index 14fc503..3dd4955 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java
@@ -31,6 +31,7 @@ import org.apache.syncope.client.console.commons.TaskDataProvider;
import org.apache.syncope.client.console.panels.ModalPanel;
import org.apache.syncope.client.console.panels.MultilevelPanel;
import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.ActionColumn;
+import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.BooleanPropertyColumn;
import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.DatePropertyColumn;
import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.KeyPropertyColumn;
import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
@@ -140,7 +141,7 @@ public abstract class SchedTaskDirectoryPanel<T extends SchedTaskTO>
columns.add(new PropertyColumn<T, String>(
new StringResourceModel("latestExecStatus", this, null), "latestExecStatus", "latestExecStatus"));
- columns.add(new PropertyColumn<T, String>(
+ columns.add(new BooleanPropertyColumn<T>(
new StringResourceModel("active", this, null), "active", "active"));
return columns;
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/java/org/apache/syncope/client/console/tasks/TaskDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/tasks/TaskDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/tasks/TaskDirectoryPanel.java
index 081d2dd..db58085 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/tasks/TaskDirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/tasks/TaskDirectoryPanel.java
@@ -76,7 +76,6 @@ public abstract class TaskDirectoryPanel<T extends AbstractTaskTO>
public TasksProvider(final int paginatorRows, final TaskType id) {
super(paginatorRows);
- //Default sorting
setSort("key", SortOrder.DESCENDING);
comparator = new SortableDataProviderComparator<>(this);
this.id = id;
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/DynamicMemberships.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/DynamicMemberships.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/DynamicMemberships.java
index edf9b80..5a6abe9 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/DynamicMemberships.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/DynamicMemberships.java
@@ -50,7 +50,7 @@ public class DynamicMemberships extends WizardStep {
private final AnyTypeRestClient anyTypeRestClient = new AnyTypeRestClient();
- public DynamicMemberships(final GroupWrapper groupHandler) {
+ public DynamicMemberships(final GroupWrapper groupWrapper) {
super();
final LoadableDetachableModel<List<AnyTypeTO>> types = new LoadableDetachableModel<List<AnyTypeTO>>() {
@@ -79,10 +79,10 @@ public class DynamicMemberships extends WizardStep {
@Override
public Panel getPanel(final String panelId) {
- return new UserSearchPanel.Builder(new PropertyModel<List<SearchClause>>(groupHandler, "uDynClauses")).
+ return new UserSearchPanel.Builder(new PropertyModel<List<SearchClause>>(groupWrapper, "uDynClauses")).
required(false).build(panelId);
}
- }), Model.of(StringUtils.isBlank(groupHandler.getUDynMembershipCond()) ? -1 : 0)).setOutputMarkupId(true));
+ }), Model.of(StringUtils.isBlank(groupWrapper.getUDynMembershipCond()) ? -1 : 0)).setOutputMarkupId(true));
// ------------------------
// ------------------------
@@ -104,10 +104,10 @@ public class DynamicMemberships extends WizardStep {
@Override
public Panel getPanel(final String panelId) {
return new AnyObjectSearchPanel.Builder(
- key, new MapOfListModel<SearchClause>(groupHandler, "aDynClauses", key)).
+ key, new MapOfListModel<SearchClause>(groupWrapper, "aDynClauses", key)).
required(false).build(panelId);
}
- }), Model.of(StringUtils.isBlank(groupHandler.getADynMembershipConds().get(key)) ? -1 : 0))
+ }), Model.of(StringUtils.isBlank(groupWrapper.getADynMembershipConds().get(key)) ? -1 : 0))
.setOutputMarkupId(true));
}
});
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Ownership.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Ownership.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Ownership.java
index f60f3c4..aac95f8 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Ownership.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Ownership.java
@@ -91,11 +91,11 @@ public class Ownership extends WizardStep {
private final Model<Boolean> isGroupOwnership;
- public Ownership(final GroupWrapper groupHandler, final PageReference pageRef) {
+ public Ownership(final GroupWrapper groupWrapper, final PageReference pageRef) {
super();
- this.wrapper = groupHandler;
+ this.wrapper = groupWrapper;
- isGroupOwnership = Model.of(groupHandler.getInnerObject().getGroupOwner() != null);
+ isGroupOwnership = Model.of(groupWrapper.getInnerObject().getGroupOwner() != null);
final BootstrapToggleConfig config = new BootstrapToggleConfig().
withOnStyle(BootstrapToggleConfig.Style.info).
@@ -187,16 +187,16 @@ public class Ownership extends WizardStep {
}
final AjaxTextFieldPanel userOwner = new AjaxTextFieldPanel(
- "userOwner", "userOwner", new PropertyModel<String>(groupHandler.getInnerObject(), "userOwner") {
+ "userOwner", "userOwner", new PropertyModel<String>(groupWrapper.getInnerObject(), "userOwner") {
private static final long serialVersionUID = -3743432456095828573L;
@Override
public String getObject() {
- if (groupHandler.getInnerObject().getUserOwner() == null) {
+ if (groupWrapper.getInnerObject().getUserOwner() == null) {
return StringUtils.EMPTY;
} else {
- UserTO userTO = userRestClient.read(groupHandler.getInnerObject().getUserOwner());
+ UserTO userTO = userRestClient.read(groupWrapper.getInnerObject().getUserOwner());
if (userTO == null) {
return StringUtils.EMPTY;
} else {
@@ -208,11 +208,11 @@ public class Ownership extends WizardStep {
@Override
public void setObject(final String object) {
if (StringUtils.isBlank(object)) {
- groupHandler.getInnerObject().setUserOwner(null);
+ groupWrapper.getInnerObject().setUserOwner(null);
} else {
final Matcher matcher = owner.matcher(object);
if (matcher.matches()) {
- groupHandler.getInnerObject().setUserOwner(matcher.group(1));
+ groupWrapper.getInnerObject().setUserOwner(matcher.group(1));
}
}
}
@@ -235,16 +235,16 @@ public class Ownership extends WizardStep {
userSearchFragment.add(userOwnerReset);
final AjaxTextFieldPanel groupOwner = new AjaxTextFieldPanel(
- "groupOwner", "groupOwner", new PropertyModel<String>(groupHandler.getInnerObject(), "groupOwner") {
+ "groupOwner", "groupOwner", new PropertyModel<String>(groupWrapper.getInnerObject(), "groupOwner") {
private static final long serialVersionUID = -3743432456095828573L;
@Override
public String getObject() {
- if (groupHandler.getInnerObject().getGroupOwner() == null) {
+ if (groupWrapper.getInnerObject().getGroupOwner() == null) {
return StringUtils.EMPTY;
} else {
- GroupTO groupTO = groupRestClient.read(groupHandler.getInnerObject().getGroupOwner());
+ GroupTO groupTO = groupRestClient.read(groupWrapper.getInnerObject().getGroupOwner());
if (groupTO == null) {
return StringUtils.EMPTY;
} else {
@@ -256,11 +256,11 @@ public class Ownership extends WizardStep {
@Override
public void setObject(final String object) {
if (StringUtils.isBlank(object)) {
- groupHandler.getInnerObject().setGroupOwner(null);
+ groupWrapper.getInnerObject().setGroupOwner(null);
} else {
final Matcher matcher = owner.matcher(object);
if (matcher.matches()) {
- groupHandler.getInnerObject().setGroupOwner(matcher.group(1));
+ groupWrapper.getInnerObject().setGroupOwner(matcher.group(1));
}
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/java/org/apache/syncope/client/console/wizards/role/RoleHandler.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/role/RoleHandler.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/role/RoleHandler.java
deleted file mode 100644
index f7034b6..0000000
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/role/RoleHandler.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * 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.wizards.role;
-
-import java.io.Serializable;
-import java.util.List;
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.syncope.client.console.panels.search.SearchClause;
-import org.apache.syncope.client.console.panels.search.SearchUtils;
-import org.apache.syncope.client.lib.SyncopeClient;
-import org.apache.syncope.common.lib.search.AbstractFiqlSearchConditionBuilder;
-import org.apache.syncope.common.lib.to.RoleTO;
-
-public class RoleHandler implements Serializable {
-
- private static final long serialVersionUID = 8058288034211558376L;
-
- private final RoleTO roleTO;
-
- private List<SearchClause> dynClauses;
-
- public RoleHandler(final RoleTO roleTO) {
- this.roleTO = roleTO;
- getDynClauses();
- }
-
- public final List<SearchClause> getDynClauses() {
- if (this.dynClauses == null) {
- this.dynClauses = SearchUtils.getSearchClauses(this.roleTO.getDynMembershipCond());
- }
- return this.dynClauses;
- }
-
- public void setDynClauses(final List<SearchClause> dynClauses) {
- this.dynClauses = dynClauses;
- }
-
- public String getDynMembershipCond() {
- if (CollectionUtils.isEmpty(this.dynClauses)) {
- return null;
- } else {
- return getFIQLString(this.dynClauses, SyncopeClient.getUserSearchConditionBuilder());
- }
- }
-
- private String getFIQLString(final List<SearchClause> clauses, final AbstractFiqlSearchConditionBuilder bld) {
- return SearchUtils.buildFIQL(clauses, bld);
- }
-
- public RoleTO fillDynamicConditions() {
- this.roleTO.setDynMembershipCond(this.getDynMembershipCond());
- return this.roleTO;
- }
-
- public RoleTO getInnerObject() {
- return this.roleTO;
- }
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/java/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder.java
index 9c2bea1..c71d1ca 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder.java
@@ -46,7 +46,7 @@ import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.model.ResourceModel;
import org.apache.wicket.model.util.ListModel;
-public class RoleWizardBuilder extends AjaxWizardBuilder<RoleHandler> {
+public class RoleWizardBuilder extends AjaxWizardBuilder<RoleWrapper> {
private static final long serialVersionUID = 5945391813567245081L;
@@ -59,7 +59,7 @@ public class RoleWizardBuilder extends AjaxWizardBuilder<RoleHandler> {
* @param pageRef Caller page reference.
*/
public RoleWizardBuilder(final RoleTO roleTO, final PageReference pageRef) {
- super(new RoleHandler(roleTO), pageRef);
+ super(new RoleWrapper(roleTO), pageRef);
}
/**
@@ -70,14 +70,14 @@ public class RoleWizardBuilder extends AjaxWizardBuilder<RoleHandler> {
* @return the current builder.
*/
@Override
- public AjaxWizardBuilder<RoleHandler> setItem(final RoleHandler item) {
- return (AjaxWizardBuilder<RoleHandler>) (item == null
+ public AjaxWizardBuilder<RoleWrapper> setItem(final RoleWrapper item) {
+ return (AjaxWizardBuilder<RoleWrapper>) (item == null
? super.setItem(item)
- : super.setItem(new RoleHandler(item.getInnerObject())));
+ : super.setItem(new RoleWrapper(item.getInnerObject())));
}
@Override
- protected Serializable onApplyInternal(final RoleHandler modelObject) {
+ protected Serializable onApplyInternal(final RoleWrapper modelObject) {
modelObject.fillDynamicConditions();
if (getOriginalItem() == null || getOriginalItem().getInnerObject() == null
|| StringUtils.isBlank(getOriginalItem().getInnerObject().getKey())) {
@@ -89,7 +89,7 @@ public class RoleWizardBuilder extends AjaxWizardBuilder<RoleHandler> {
}
@Override
- protected WizardModel buildModelSteps(final RoleHandler modelObject, final WizardModel wizardModel) {
+ protected WizardModel buildModelSteps(final RoleWrapper modelObject, final WizardModel wizardModel) {
wizardModel.add(new Details(modelObject));
wizardModel.add(new Entitlements(modelObject.getInnerObject()));
wizardModel.add(new Realms(modelObject.getInnerObject()));
@@ -100,7 +100,7 @@ public class RoleWizardBuilder extends AjaxWizardBuilder<RoleHandler> {
private static final long serialVersionUID = 5514523040031722255L;
- public Details(final RoleHandler modelObject) {
+ public Details(final RoleWrapper modelObject) {
add(new AjaxTextFieldPanel(
"key", "key", new PropertyModel<String>(modelObject.getInnerObject(), "key"), false));
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/java/org/apache/syncope/client/console/wizards/role/RoleWrapper.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/role/RoleWrapper.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/role/RoleWrapper.java
new file mode 100644
index 0000000..462ffed
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/role/RoleWrapper.java
@@ -0,0 +1,74 @@
+/*
+ * 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.wizards.role;
+
+import java.io.Serializable;
+import java.util.List;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.syncope.client.console.panels.search.SearchClause;
+import org.apache.syncope.client.console.panels.search.SearchUtils;
+import org.apache.syncope.client.lib.SyncopeClient;
+import org.apache.syncope.common.lib.search.AbstractFiqlSearchConditionBuilder;
+import org.apache.syncope.common.lib.to.RoleTO;
+
+public class RoleWrapper implements Serializable {
+
+ private static final long serialVersionUID = 8058288034211558376L;
+
+ private final RoleTO roleTO;
+
+ private List<SearchClause> dynClauses;
+
+ public RoleWrapper(final RoleTO roleTO) {
+ this.roleTO = roleTO;
+ getDynClauses();
+ }
+
+ public final List<SearchClause> getDynClauses() {
+ if (this.dynClauses == null) {
+ this.dynClauses = SearchUtils.getSearchClauses(this.roleTO.getDynMembershipCond());
+ }
+ return this.dynClauses;
+ }
+
+ public void setDynClauses(final List<SearchClause> dynClauses) {
+ this.dynClauses = dynClauses;
+ }
+
+ public String getDynMembershipCond() {
+ if (CollectionUtils.isEmpty(this.dynClauses)) {
+ return null;
+ } else {
+ return getFIQLString(this.dynClauses, SyncopeClient.getUserSearchConditionBuilder());
+ }
+ }
+
+ private String getFIQLString(final List<SearchClause> clauses, final AbstractFiqlSearchConditionBuilder bld) {
+ return SearchUtils.buildFIQL(clauses, bld);
+ }
+
+ public RoleTO fillDynamicConditions() {
+ this.roleTO.setDynMembershipCond(this.getDynMembershipCond());
+ return this.roleTO;
+ }
+
+ public RoleTO getInnerObject() {
+ return this.roleTO;
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css b/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css
index 12ed32e..c854b05 100644
--- a/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css
+++ b/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css
@@ -839,5 +839,50 @@ div#templates {
clear: both;
}
/**
-END -CRONTAB
+END - CRONTAB
+*/
+
+/**
+START - EVENTS
+*/
+.events {
+ display: table-row;
+ width: 990px;
+}
+
+.selectedEvents {
+ display: inline-block;
+ height: 100px;
+ margin: 10px 10px 0 10px;
+ overflow-y: auto;
+}
+
+.eventSelection {
+ display: inline-table;
+ float: right;
+ width: 380px;
+ min-width: 530px;
+}
+
+.eventSelection div#value {
+ height: auto;
+ overflow: hidden;
+}
+
+.eventSelection div#value div#custom {
+ width: auto;
+ overflow: hidden;
+}
+
+.eventSelection div#value div#customActions {
+ width: 85px;
+ float: right;
+}
+
+div#selectionContainer select {
+ width: 585px;
+ min-width: 585px;
+}
+/**
+END - EVENTS
*/
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/resources/console.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/console.properties b/client/console/src/main/resources/console.properties
index b4a0b7c..c7733fd 100644
--- a/client/console/src/main/resources/console.properties
+++ b/client/console/src/main/resources/console.properties
@@ -37,6 +37,7 @@ page.realms=org.apache.syncope.client.console.pages.Realms
page.topology=org.apache.syncope.client.console.topology.Topology
page.reports=org.apache.syncope.client.console.pages.Reports
page.workflow=org.apache.syncope.client.console.pages.Workflow
+page.audit=org.apache.syncope.client.console.pages.Audit
page.logs=org.apache.syncope.client.console.pages.Logs
page.securityquestions=org.apache.syncope.client.console.pages.SecurityQuestions
page.types=org.apache.syncope.client.console.pages.Types
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication.properties b/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication.properties
index 6b583cc..dba9d59 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication.properties
@@ -71,3 +71,4 @@ OrderByLink.CSS.ascending=sorting_asc
OrderByLink.CSS.descending=sorting_desc
OrderByLink.CSS.none=sorting
entitlements=Entitlements
+audit=Audit
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_it.properties
index 0858a0d..597b625 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_it.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_it.properties
@@ -70,3 +70,4 @@ OrderByLink.CSS.ascending=sorting_asc
OrderByLink.CSS.descending=sorting_desc
OrderByLink.CSS.none=sorting
entitlements=Entitlement
+audit=Audit
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_pt_BR.properties
index 8dd50da..a43dfb6 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_pt_BR.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_pt_BR.properties
@@ -70,3 +70,4 @@ OrderByLink.CSS.ascending=sorting_asc
OrderByLink.CSS.descending=sorting_desc
OrderByLink.CSS.none=sorting
entitlements=Entitlement
+audit=Audit
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_ru.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_ru.properties
index 1bb9e32..799a716 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_ru.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/SyncopeConsoleApplication_ru.properties
@@ -121,3 +121,4 @@ OrderByLink.CSS.descending=\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043
OrderByLink.CSS.none=\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430
# entitlements=\u00d0\u009f\u00d0\u00be\u00d0\u00bb\u00d0\u00bd\u00d0\u00be\u00d0\u00bc\u00d0\u00be\u00d1\u0087\u00d0\u00b8\u00d1\u008f
entitlements=\u041f\u043e\u043b\u043d\u043e\u043c\u043e\u0447\u0438\u044f
+audit=Audit
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/resources/org/apache/syncope/client/console/events/EventCategoryPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/events/EventCategoryPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/events/EventCategoryPanel.html
new file mode 100644
index 0000000..2e3915f
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/events/EventCategoryPanel.html
@@ -0,0 +1,53 @@
+<!--
+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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+ <wicket:panel>
+ <div class="events">
+ <div class="selectedEvents">
+ <span wicket:id="selectedEventsPanel">[selected events panel]</span>
+ </div>
+
+ <div class="eventSelection">
+ <div wicket:id="categoryContainer">
+ <div>
+ <span wicket:id="type">[type]</span>
+ </div>
+ <div>
+ <span wicket:id="category">[category]</span>
+ </div>
+ <div>
+ <span wicket:id="subcategory">[sub-category]</span>
+ </div>
+ <div>
+ <div id="eventLabel">
+ <eventLabel wicket:id="customLabel"/>
+ </div>
+ <div id="value">
+ <div id="customActions" wicket:id="customActions">[actions]</div>
+ <div id="custom" wicket:id="custom">[custom]</div>
+ </div>
+ </div>
+ </div>
+ <div wicket:id="eventsContainer">
+ <span wicket:id="eventsPanel">[events panel]</span>
+ </div>
+ </div>
+ </div>
+ </wicket:panel>
+</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/resources/org/apache/syncope/client/console/events/EventSelectionPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/events/EventSelectionPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/events/EventSelectionPanel.html
new file mode 100644
index 0000000..8baffa9
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/events/EventSelectionPanel.html
@@ -0,0 +1,125 @@
+<!--
+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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+ <wicket:head>
+ <style>
+ .container {
+ display: block;
+ width: 100%;
+ }
+
+ .eventLabel {
+ font-size: 12px;
+ vertical-align: middle;
+ font-family: Verdana,Tahoma,sans-serif;
+ display: table-cell;
+ width: 300px;
+ height: 20px;
+ }
+
+ .divtableheadereventLabel {
+ font-weight: bold;
+ float: left;
+ margin-left: 5px;
+ display: table-cell;
+ width: 70px;
+ }
+
+ .divtableheadercell {
+ display: inline-table;
+ vertical-align: top;
+ text-align: right;
+ width: 105px;
+ height: 20px;
+ }
+
+ .divtablecheckcolumn {
+ display: table-cell;
+ vertical-align: top;
+ text-align: right;
+ width: 105px;
+ }
+
+ .divtablecheck {
+ width: 105px;
+ height: 20px;
+ }
+
+ </style>
+ </wicket:head>
+ <wicket:panel>
+ <div class="eventSelectionWidzard">
+ <div class="container">
+ <div style="display:inline-table;">
+ <div class="eventLabel">
+
+ </div>
+ <div style="display: table-cell">
+ <div class="divtableheadercell">
+ <div class="divtableheadereventLabel">
+ <eventLabel wicket:id="successLabel"/>
+ </div>
+ <div style="display: table-cell">
+ <input type="checkbox" wicket:id="successSelector" style="margin-top: 0px;margin-bottom: 0px;"/>
+ </div>
+ </div>
+ </div>
+ <div style="display: table-cell">
+ <div class="divtableheadercell">
+ <div class="divtableheadereventLabel">
+ <eventLabel wicket:id="failureLabel"/>
+ </div>
+ <div style="display: table-cell">
+ <input type="checkbox" wicket:id="failureSelector" style="margin-top: 0px;margin-bottom: 0px;"/>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="container">
+ <div class="eventLabel">
+ <div id="divtablerow-eventLabel" wicket:id="categoryView">
+ <div class="eventLabel">
+ <span wicket:id="subcategory">[subcategory]</span>
+ </div>
+ </div>
+ </div>
+
+ <div id="divtablerow-success" class="divtablecheckcolumn">
+ <span wicket:id="successGroup">
+ <div wicket:id="successView" class="divtablecheck">
+ <div class="divtableheadereventLabel"> </div>
+ <input type="checkbox" wicket:id="successCheck"/>
+ </div>
+ </span>
+ </div>
+
+ <div id="divtablerow-failure" class="divtablecheckcolumn">
+ <span wicket:id="failureGroup">
+ <div wicket:id="failureView" class="divtablecheck">
+ <div class="divtableheadereventLabel"> </div>
+ <input type="checkbox" wicket:id="failureCheck"/>
+ </div>
+ </span>
+ </div>
+ </div>
+ </div>
+ </wicket:panel>
+</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/resources/org/apache/syncope/client/console/events/SelectedEventsPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/events/SelectedEventsPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/events/SelectedEventsPanel.html
new file mode 100644
index 0000000..3a9ff63
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/events/SelectedEventsPanel.html
@@ -0,0 +1,25 @@
+<!--
+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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+ <wicket:panel>
+ <div id="selectionContainer" wicket:id="selectionContainer">
+ <select wicket:id="selectedEvents"></select>
+ </div>
+ </wicket:panel>
+</html>
[2/5] syncope git commit: [SYNCOPE-156] Minor cleanup
Posted by il...@apache.org.
[SYNCOPE-156] Minor cleanup
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/3b16483c
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/3b16483c
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/3b16483c
Branch: refs/heads/master
Commit: 3b16483cfeacbf0aebffc0560fba50918d0af737
Parents: 7c591aa
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Fri Apr 29 11:37:28 2016 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Fri Apr 29 11:37:28 2016 +0200
----------------------------------------------------------------------
.../apache/syncope/client/console/commons/PropertyList.java | 6 ------
.../console/panels/ParametersCreateWizardSchemaStep.java | 2 +-
.../syncope/client/console/panels/PlainSchemaDetails.java | 4 ++--
3 files changed, 3 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/3b16483c/client/console/src/main/java/org/apache/syncope/client/console/commons/PropertyList.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/commons/PropertyList.java b/client/console/src/main/java/org/apache/syncope/client/console/commons/PropertyList.java
index 46a61d7..a7a0933 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/commons/PropertyList.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/commons/PropertyList.java
@@ -28,12 +28,6 @@ import org.apache.syncope.common.lib.SyncopeConstants;
public abstract class PropertyList<T> implements List<String> {
- private final T objectTO;
-
- public PropertyList(final T objectTO) {
- this.objectTO = objectTO;
- }
-
@Override
public boolean add(final String item) {
final List<String> list = getEnumValuesAsList(getValues());
http://git-wip-us.apache.org/repos/asf/syncope/blob/3b16483c/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersCreateWizardSchemaStep.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersCreateWizardSchemaStep.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersCreateWizardSchemaStep.java
index fd8544f..70ff104 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersCreateWizardSchemaStep.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersCreateWizardSchemaStep.java
@@ -58,7 +58,7 @@ public class ParametersCreateWizardSchemaStep extends WizardStep {
@Override
public PropertyList<PlainSchemaTO> getObject() {
- return new PropertyList<PlainSchemaTO>(modelObject.getPlainSchemaTO()) {
+ return new PropertyList<PlainSchemaTO>() {
@Override
public String getValues() {
http://git-wip-us.apache.org/repos/asf/syncope/blob/3b16483c/client/console/src/main/java/org/apache/syncope/client/console/panels/PlainSchemaDetails.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/PlainSchemaDetails.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/PlainSchemaDetails.java
index 0b15cfe..d67ae8f 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/PlainSchemaDetails.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/PlainSchemaDetails.java
@@ -101,7 +101,7 @@ public class PlainSchemaDetails extends AbstractSchemaDetailsPanel {
@Override
public PropertyList<PlainSchemaTO> getObject() {
- return new PropertyList<PlainSchemaTO>(PlainSchemaTO.class.cast(schemaTO)) {
+ return new PropertyList<PlainSchemaTO>() {
@Override
public String getValues() {
@@ -140,7 +140,7 @@ public class PlainSchemaDetails extends AbstractSchemaDetailsPanel {
@Override
public PropertyList<PlainSchemaTO> getObject() {
- return new PropertyList<PlainSchemaTO>(PlainSchemaTO.class.cast(schemaTO)) {
+ return new PropertyList<PlainSchemaTO>() {
@Override
public String getValues() {
[3/5] syncope git commit: [SYNCOPE-745] Audit
Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/resources/org/apache/syncope/client/console/notifications/EventSelectionPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/notifications/EventSelectionPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/notifications/EventSelectionPanel.html
deleted file mode 100644
index 8baffa9..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/notifications/EventSelectionPanel.html
+++ /dev/null
@@ -1,125 +0,0 @@
-<!--
-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.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
- <wicket:head>
- <style>
- .container {
- display: block;
- width: 100%;
- }
-
- .eventLabel {
- font-size: 12px;
- vertical-align: middle;
- font-family: Verdana,Tahoma,sans-serif;
- display: table-cell;
- width: 300px;
- height: 20px;
- }
-
- .divtableheadereventLabel {
- font-weight: bold;
- float: left;
- margin-left: 5px;
- display: table-cell;
- width: 70px;
- }
-
- .divtableheadercell {
- display: inline-table;
- vertical-align: top;
- text-align: right;
- width: 105px;
- height: 20px;
- }
-
- .divtablecheckcolumn {
- display: table-cell;
- vertical-align: top;
- text-align: right;
- width: 105px;
- }
-
- .divtablecheck {
- width: 105px;
- height: 20px;
- }
-
- </style>
- </wicket:head>
- <wicket:panel>
- <div class="eventSelectionWidzard">
- <div class="container">
- <div style="display:inline-table;">
- <div class="eventLabel">
-
- </div>
- <div style="display: table-cell">
- <div class="divtableheadercell">
- <div class="divtableheadereventLabel">
- <eventLabel wicket:id="successLabel"/>
- </div>
- <div style="display: table-cell">
- <input type="checkbox" wicket:id="successSelector" style="margin-top: 0px;margin-bottom: 0px;"/>
- </div>
- </div>
- </div>
- <div style="display: table-cell">
- <div class="divtableheadercell">
- <div class="divtableheadereventLabel">
- <eventLabel wicket:id="failureLabel"/>
- </div>
- <div style="display: table-cell">
- <input type="checkbox" wicket:id="failureSelector" style="margin-top: 0px;margin-bottom: 0px;"/>
- </div>
- </div>
- </div>
- </div>
- </div>
-
- <div class="container">
- <div class="eventLabel">
- <div id="divtablerow-eventLabel" wicket:id="categoryView">
- <div class="eventLabel">
- <span wicket:id="subcategory">[subcategory]</span>
- </div>
- </div>
- </div>
-
- <div id="divtablerow-success" class="divtablecheckcolumn">
- <span wicket:id="successGroup">
- <div wicket:id="successView" class="divtablecheck">
- <div class="divtableheadereventLabel"> </div>
- <input type="checkbox" wicket:id="successCheck"/>
- </div>
- </span>
- </div>
-
- <div id="divtablerow-failure" class="divtablecheckcolumn">
- <span wicket:id="failureGroup">
- <div wicket:id="failureView" class="divtablecheck">
- <div class="divtableheadereventLabel"> </div>
- <input type="checkbox" wicket:id="failureCheck"/>
- </div>
- </span>
- </div>
- </div>
- </div>
- </wicket:panel>
-</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/resources/org/apache/syncope/client/console/notifications/LoggerCategoryPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/notifications/LoggerCategoryPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/notifications/LoggerCategoryPanel.html
deleted file mode 100644
index 03213b7..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/notifications/LoggerCategoryPanel.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!--
-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.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
- <wicket:head>
- <style>
-
- .events{
- display: table-row;
- width: 990px;
- }
-
- .selectedEvents{
- display: inline-block;
- height: 100px;
- margin: 10px 10px 0 10px;
- overflow-y: auto;
- }
-
- .eventSelection{
- display: inline-table;
- float: right;
- width: 380px;
- min-width: 380px;
- }
-
- .eventSelection div#eventElement{
- display: table-row;
- width:100%;
- }
- .eventSelection div#eventElement div#eventLabel{
- display: table-cell;
- }
-
- .eventSelection div#eventElement div#value{
- display: table-cell;
- padding: 0 0 0 10px;
- }
- </style>
- </wicket:head>
- <wicket:panel>
-
- <div class="events">
- <div class="selectedEvents">
- <span wicket:id="selectedEventsPanel">[selected events panel]</span>
- </div>
-
- <div class="eventSelection">
- <div wicket:id="categoryContainer">
- <div>
- <span wicket:id="type">[type]</span>
- </div>
- <div>
- <span wicket:id="category">[category]</span>
- </div>
- <div>
- <span wicket:id="subcategory">[sub-category]</span>
- </div>
- <div>
- <div id="eventLabel">
- <eventLabel wicket:id="customLabel"/>
- </div>
- <div id="value">
- <span wicket:id="custom">[custom]</span>
- <span wicket:id="customActions">[actions]</span>
- </div>
- </div>
- </div>
- <div wicket:id="eventsContainer">
- <span wicket:id="eventsPanel">[events panel]</span>
- </div>
- </div>
- </div>
-
- </wicket:panel>
-</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/resources/org/apache/syncope/client/console/notifications/SelectedEventsPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/notifications/SelectedEventsPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/notifications/SelectedEventsPanel.html
deleted file mode 100644
index 3ef0354..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/notifications/SelectedEventsPanel.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!--
-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.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
- <wicket:head>
- <style>
- div#selectionContainer select{
- width: 585px;
- min-width: 585px;
- }
- </style>
- </wicket:head>
- <wicket:panel>
- <div id="selectionContainer" wicket:id="selectionContainer">
- <select wicket:id="selectedEvents" ></select>
- </div>
- </wicket:panel>
-</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/resources/org/apache/syncope/client/console/pages/Audit.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Audit.html b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Audit.html
new file mode 100644
index 0000000..b4d51d6
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Audit.html
@@ -0,0 +1,38 @@
+<!--
+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.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+ <wicket:extend>
+ <section class="content-header">
+ <h1> </h1>
+ <ol class="breadcrumb">
+ <li><a wicket:id="dashboardBr"><i class="fa fa-dashboard"></i> <wicket:message key="dashboard"/></a></li>
+ <li class="active"><wicket:message key="configuration"/></li>
+ <li class="active"><wicket:message key="audit"/></li>
+ </ol>
+ </section>
+
+ <section class="content" wicket:id="content">
+ <div class="box">
+ <form wicket:id="auditForm">
+ <div class="box-body" wicket:id="auditPanel"/>
+ </form>
+ </div>
+ </section>
+ </wicket:extend>
+</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.html b/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.html
index 5fee51a..d2eb696 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.html
@@ -104,14 +104,15 @@ under the License.
<li wicket:id="configurationLI" class="treeview">
<a href="#"><i class="fa fa-edit"></i><span><wicket:message key="configuration"/></span> <i class="fa fa-angle-left pull-right"></i></a>
<ul wicket:id="configurationUL" class="treeview-menu">
- <li wicket:id="rolesLI"><a href="#" wicket:id="roles"><i class="fa fa-users"></i><wicket:message key="roles"/></a></li>
- <li wicket:id="policiesLI"><a href="#" wicket:id="policies"><i class="fa fa-list"></i><wicket:message key="policies"/></a></li>
- <li wicket:id="securityquestionsLI"><a href="#" wicket:id="securityquestions"><i class="fa fa-question"></i><wicket:message key="securityQuestions"/></a></li>
- <li wicket:id="workflowLI"><a href="#" wicket:id="workflow"><i class="fa fa-share-alt"></i><wicket:message key="workflow"/></a></li>
+ <li wicket:id="auditLI"><a href="#" wicket:id="audit"><i class="fa fa-check-square-o"></i><wicket:message key="audit"/></a></li>
<li wicket:id="logsLI"><a href="#" wicket:id="logs"><i class="fa fa-file-text-o"></i><wicket:message key="logs"/></a></li>
- <li wicket:id="typesLI"><a href="#" wicket:id="types"><i class="fa fa-wrench"></i><wicket:message key="types"/></a></li>
<li wicket:id="notificationsLI"><a href="#" wicket:id="notifications"><i class="fa fa-envelope-o"></i><wicket:message key="notifications"/></a></li>
<li wicket:id="parametersLI"><a href="#" wicket:id="parameters"><i class="fa fa-cog"></i><wicket:message key="parameters"/></a></li>
+ <li wicket:id="policiesLI"><a href="#" wicket:id="policies"><i class="fa fa-list"></i><wicket:message key="policies"/></a></li>
+ <li wicket:id="rolesLI"><a href="#" wicket:id="roles"><i class="fa fa-users"></i><wicket:message key="roles"/></a></li>
+ <li wicket:id="securityquestionsLI"><a href="#" wicket:id="securityquestions"><i class="fa fa-question"></i><wicket:message key="securityQuestions"/></a></li>
+ <li wicket:id="typesLI"><a href="#" wicket:id="types"><i class="fa fa-wrench"></i><wicket:message key="types"/></a></li>
+ <li wicket:id="workflowLI"><a href="#" wicket:id="workflow"><i class="fa fa-share-alt"></i><wicket:message key="workflow"/></a></li>
</ul>
</li>
<li wicket:id="extensionsLI" class="treeview">
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/resources/org/apache/syncope/client/console/topology/TopologyTogglePanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/topology/TopologyTogglePanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/topology/TopologyTogglePanel.html
index f2b070e..d1be46a 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/topology/TopologyTogglePanel.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/topology/TopologyTogglePanel.html
@@ -37,7 +37,7 @@ under the License.
<li><i class="fa fa-minus"></i><a href="#" wicket:id="delete"><wicket:message key="resource.menu.remove"/></a></li>
<li><i class="fa fa-pencil"></i><a href="#" wicket:id="edit"><wicket:message key="resource.menu.edit"/></a></li>
<li><i class="fa fa-exchange"></i><a href="#" wicket:id="provision"><wicket:message key="resource.menu.provision"/></a></li>
- <li><i class="fa fa-search"></i><a href="#" wicket:id="explore"><wicket:message key="resource.menu.explore"/></a></li>
+ <li><i class="fa fa-eye"></i><a href="#" wicket:id="explore"><wicket:message key="resource.menu.explore"/></a></li>
<li><i class="fa fa-arrow-right"></i><a href="#" wicket:id="propagation"><wicket:message key="task.propagation.list"/></a></li>
<li><i class="fa fa-chevron-circle-left"></i><a href="#" wicket:id="pull"><wicket:message key="task.pull.list"/></a></li>
<li><i class="fa fa-chevron-circle-right"></i><a href="#" wicket:id="push"><wicket:message key="task.push.list"/></a></li>
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/common/lib/src/main/java/org/apache/syncope/common/lib/types/AuditLoggerName.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/types/AuditLoggerName.java b/common/lib/src/main/java/org/apache/syncope/common/lib/types/AuditLoggerName.java
index 5e89dcf..25eaf9e 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/types/AuditLoggerName.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/types/AuditLoggerName.java
@@ -86,7 +86,6 @@ public class AuditLoggerName extends AbstractBaseBean {
append(buildEvent(type, category, subcategory, event, result)).toString();
}
- @SuppressWarnings("unchecked")
public static AuditLoggerName fromLoggerName(final String loggerName)
throws ParseException {
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/LoggerWrapper.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/LoggerWrapper.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/LoggerWrapper.java
index 9f9dfde..a8c6f04 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/LoggerWrapper.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/LoggerWrapper.java
@@ -32,25 +32,25 @@ public final class LoggerWrapper {
}
public static List<AuditLoggerName> wrap(final Collection<LoggerTO> logger) {
- List<AuditLoggerName> respons = new ArrayList<>();
+ List<AuditLoggerName> result = new ArrayList<>();
for (LoggerTO loggerTO : logger) {
try {
- respons.add(AuditLoggerName.fromLoggerName(loggerTO.getKey()));
+ result.add(AuditLoggerName.fromLoggerName(loggerTO.getKey()));
} catch (Exception ignore) {
// ignore
}
}
- return respons;
+ return result;
}
public static List<LoggerTO> unwrap(final Collection<AuditLoggerName> auditNames) {
- List<LoggerTO> respons = new ArrayList<>();
+ List<LoggerTO> result = new ArrayList<>();
for (AuditLoggerName name : auditNames) {
LoggerTO loggerTO = new LoggerTO();
loggerTO.setKey(name.toLoggerName());
loggerTO.setLevel(LoggerLevel.DEBUG);
- respons.add(loggerTO);
+ result.add(loggerTO);
}
- return respons;
+ return result;
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/LoggerService.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/LoggerService.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/LoggerService.java
index 0879b60..fcdab01 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/LoggerService.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/LoggerService.java
@@ -20,7 +20,6 @@ package org.apache.syncope.common.rest.api.service;
import java.util.List;
import javax.validation.constraints.NotNull;
-
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/fit/console-reference/src/main/resources/console.properties
----------------------------------------------------------------------
diff --git a/fit/console-reference/src/main/resources/console.properties b/fit/console-reference/src/main/resources/console.properties
index a4e833c..73acb0a 100644
--- a/fit/console-reference/src/main/resources/console.properties
+++ b/fit/console-reference/src/main/resources/console.properties
@@ -37,6 +37,7 @@ page.realms=org.apache.syncope.client.console.pages.Realms
page.topology=org.apache.syncope.client.console.topology.Topology
page.reports=org.apache.syncope.client.console.pages.Reports
page.workflow=org.apache.syncope.client.console.pages.Workflow
+page.audit=org.apache.syncope.client.console.pages.Audit
page.logs=org.apache.syncope.client.console.pages.Logs
page.securityquestions=org.apache.syncope.client.console.pages.SecurityQuestions
page.types=org.apache.syncope.client.console.pages.Types
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/fit/core-reference/src/test/resources/console.properties
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/resources/console.properties b/fit/core-reference/src/test/resources/console.properties
index a4e833c..73acb0a 100644
--- a/fit/core-reference/src/test/resources/console.properties
+++ b/fit/core-reference/src/test/resources/console.properties
@@ -37,6 +37,7 @@ page.realms=org.apache.syncope.client.console.pages.Realms
page.topology=org.apache.syncope.client.console.topology.Topology
page.reports=org.apache.syncope.client.console.pages.Reports
page.workflow=org.apache.syncope.client.console.pages.Workflow
+page.audit=org.apache.syncope.client.console.pages.Audit
page.logs=org.apache.syncope.client.console.pages.Logs
page.securityquestions=org.apache.syncope.client.console.pages.SecurityQuestions
page.types=org.apache.syncope.client.console.pages.Types
[5/5] syncope git commit: [SYNCOPE-745] Audit
Posted by il...@apache.org.
[SYNCOPE-745] Audit
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/052cf6b1
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/052cf6b1
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/052cf6b1
Branch: refs/heads/master
Commit: 052cf6b16459b5f60838e35d4968d27c535bc3f1
Parents: 3b16483
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Fri Apr 29 16:24:09 2016 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Fri Apr 29 16:24:09 2016 +0200
----------------------------------------------------------------------
.../console/commons/TaskDataProvider.java | 3 +-
.../status/AbstractStatusBeanProvider.java | 2 +-
.../console/events/EventCategoryPanel.java | 498 ++++++++++++++++++
.../console/events/EventSelectionPanel.java | 220 ++++++++
.../console/events/SelectedEventsPanel.java | 172 +++++++
.../notifications/EventSelectionPanel.java | 240 ---------
.../notifications/LoggerCategoryPanel.java | 509 -------------------
.../MailTemplateDirectoryPanel.java | 4 +-
.../NotificationDirectoryPanel.java | 22 +-
.../notifications/NotificationHandler.java | 131 -----
.../NotificationWizardBuilder.java | 34 +-
.../notifications/NotificationWrapper.java | 131 +++++
.../notifications/SelectedEventsPanel.java | 172 -------
.../syncope/client/console/pages/Audit.java | 127 +++++
.../syncope/client/console/pages/BasePage.java | 6 +
.../syncope/client/console/pages/Roles.java | 4 +-
.../AnyObjectDisplayAttributesModalPanel.java | 2 +-
.../panels/DisplayAttributesModalPanel.java | 2 +-
.../GroupDisplayAttributesModalPanel.java | 2 +-
.../console/panels/RoleDirectoryPanel.java | 12 +-
.../client/console/panels/SchemaTypePanel.java | 3 +-
.../panels/TypeExtensionDirectoryPanel.java | 1 -
.../panels/UserDisplayAttributesModalPanel.java | 2 +-
.../console/reports/ReportDirectoryPanel.java | 12 +-
.../reports/ReportTemplateDirectoryPanel.java | 4 +-
.../console/reports/ReportWizardBuilder.java | 2 +-
.../console/rest/NotificationRestClient.java | 4 +-
.../client/console/rest/ReportRestClient.java | 2 +-
.../client/console/rest/TemplateRestClient.java | 2 +-
.../console/tasks/SchedTaskDirectoryPanel.java | 3 +-
.../console/tasks/TaskDirectoryPanel.java | 1 -
.../console/wizards/any/DynamicMemberships.java | 10 +-
.../client/console/wizards/any/Ownership.java | 26 +-
.../console/wizards/role/RoleHandler.java | 74 ---
.../console/wizards/role/RoleWizardBuilder.java | 16 +-
.../console/wizards/role/RoleWrapper.java | 74 +++
.../META-INF/resources/css/syncopeConsole.css | 47 +-
.../src/main/resources/console.properties | 1 +
.../SyncopeConsoleApplication.properties | 1 +
.../SyncopeConsoleApplication_it.properties | 1 +
.../SyncopeConsoleApplication_pt_BR.properties | 1 +
.../SyncopeConsoleApplication_ru.properties | 1 +
.../console/events/EventCategoryPanel.html | 53 ++
.../console/events/EventSelectionPanel.html | 125 +++++
.../console/events/SelectedEventsPanel.html | 25 +
.../notifications/EventSelectionPanel.html | 125 -----
.../notifications/LoggerCategoryPanel.html | 91 ----
.../notifications/SelectedEventsPanel.html | 33 --
.../syncope/client/console/pages/Audit.html | 38 ++
.../syncope/client/console/pages/BasePage.html | 11 +-
.../console/topology/TopologyTogglePanel.html | 2 +-
.../common/lib/types/AuditLoggerName.java | 1 -
.../syncope/common/rest/api/LoggerWrapper.java | 12 +-
.../common/rest/api/service/LoggerService.java | 1 -
.../src/main/resources/console.properties | 1 +
.../src/test/resources/console.properties | 1 +
56 files changed, 1619 insertions(+), 1481 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/java/org/apache/syncope/client/console/commons/TaskDataProvider.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/commons/TaskDataProvider.java b/client/console/src/main/java/org/apache/syncope/client/console/commons/TaskDataProvider.java
index 9f6db89..6a57c2e 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/commons/TaskDataProvider.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/commons/TaskDataProvider.java
@@ -37,9 +37,8 @@ public abstract class TaskDataProvider<T extends AbstractTaskTO> extends Directo
public TaskDataProvider(final int paginatorRows, final TaskType taskType, final TaskRestClient taskRestClient) {
super(paginatorRows);
- this.taskRestClient = taskRestClient;
- //Default sorting
+ this.taskRestClient = taskRestClient;
setSort("key", SortOrder.DESCENDING);
comparator = new SortableDataProviderComparator<>(this);
this.taskType = taskType;
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/java/org/apache/syncope/client/console/commons/status/AbstractStatusBeanProvider.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/commons/status/AbstractStatusBeanProvider.java b/client/console/src/main/java/org/apache/syncope/client/console/commons/status/AbstractStatusBeanProvider.java
index 48227e0..7d9a688 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/commons/status/AbstractStatusBeanProvider.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/commons/status/AbstractStatusBeanProvider.java
@@ -35,7 +35,7 @@ public abstract class AbstractStatusBeanProvider extends DirectoryDataProvider<S
public AbstractStatusBeanProvider(final String sort) {
super(10);
- //Default sorting
+
setSort(sort, SortOrder.ASCENDING);
comparator = new SortableDataProviderComparator<>(this);
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/java/org/apache/syncope/client/console/events/EventCategoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/events/EventCategoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/events/EventCategoryPanel.java
new file mode 100644
index 0000000..9277212
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/events/EventCategoryPanel.java
@@ -0,0 +1,498 @@
+/*
+ * 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.events;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import org.apache.commons.collections4.IterableUtils;
+import org.apache.commons.collections4.Predicate;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.tuple.Pair;
+import org.apache.syncope.client.console.commons.Constants;
+import org.apache.syncope.client.console.events.SelectedEventsPanel.EventSelectionChanged;
+import org.apache.syncope.client.console.events.SelectedEventsPanel.InspectSelectedEvent;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksPanel;
+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.common.lib.to.EventCategoryTO;
+import org.apache.syncope.common.lib.types.AuditElements;
+import org.apache.syncope.common.lib.types.AuditElements.EventCategoryType;
+import org.apache.syncope.common.lib.types.AuditLoggerName;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
+import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
+import org.apache.wicket.event.Broadcast;
+import org.apache.wicket.event.IEvent;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.IChoiceRenderer;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.PropertyModel;
+import org.apache.wicket.model.ResourceModel;
+
+public abstract class EventCategoryPanel extends Panel {
+
+ private static final long serialVersionUID = 6429053774964787734L;
+
+ private final List<EventCategoryTO> eventCategoryTOs;
+
+ private final EventCategoryTO eventCategoryTO = new EventCategoryTO();
+
+ private final WebMarkupContainer categoryContainer;
+
+ private final WebMarkupContainer eventsContainer;
+
+ private final SelectedEventsPanel selectedEventsPanel;
+
+ private final AjaxDropDownChoicePanel<EventCategoryType> type;
+
+ private final AjaxDropDownChoicePanel<String> category;
+
+ private final AjaxDropDownChoicePanel<String> subcategory;
+
+ private final AjaxTextFieldPanel custom;
+
+ private final ActionLinksPanel<EventCategoryTO> actionLinksPanel;
+
+ private final IModel<List<String>> model;
+
+ public EventCategoryPanel(
+ final String id,
+ final List<EventCategoryTO> eventCategoryTOs,
+ final IModel<List<String>> model) {
+
+ super(id);
+
+ this.model = model;
+ selectedEventsPanel = new SelectedEventsPanel("selectedEventsPanel", model);
+ add(selectedEventsPanel);
+
+ this.eventCategoryTOs = eventCategoryTOs;
+
+ categoryContainer = new WebMarkupContainer("categoryContainer");
+ categoryContainer.setOutputMarkupId(true);
+ add(categoryContainer);
+
+ eventsContainer = new WebMarkupContainer("eventsContainer");
+ eventsContainer.setOutputMarkupId(true);
+ add(eventsContainer);
+
+ authorizeList();
+ authorizeChanges();
+
+ type = new AjaxDropDownChoicePanel<>(
+ "type",
+ "type",
+ new PropertyModel<EventCategoryType>(eventCategoryTO, "type"),
+ false);
+ type.setChoices(Arrays.asList(EventCategoryType.values()));
+ type.setStyleSheet("ui-widget-content ui-corner-all");
+ type.setChoiceRenderer(new IChoiceRenderer<EventCategoryType>() {
+
+ private static final long serialVersionUID = 2317134950949778735L;
+
+ @Override
+ public String getDisplayValue(final EventCategoryType eventCategoryType) {
+ return eventCategoryType.name();
+ }
+
+ @Override
+ public String getIdValue(final EventCategoryType eventCategoryType, final int i) {
+ return eventCategoryType.name();
+ }
+
+ @Override
+ public EventCategoryType getObject(
+ final String id, final IModel<? extends List<? extends EventCategoryType>> choices) {
+ return IterableUtils.find(choices.getObject(), new Predicate<EventCategoryType>() {
+
+ @Override
+ public boolean evaluate(final EventCategoryType object) {
+ return object.name().equals(id);
+ }
+ });
+ }
+ });
+ categoryContainer.add(type);
+
+ type.getField().add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
+
+ private static final long serialVersionUID = -1107858522700306810L;
+
+ @Override
+ protected void onUpdate(final AjaxRequestTarget target) {
+ send(EventCategoryPanel.this, Broadcast.EXACT, new ChangeCategoryEvent(target, type));
+ }
+ });
+
+ category = new AjaxDropDownChoicePanel<>(
+ "category",
+ "category",
+ new PropertyModel<String>(eventCategoryTO, "category"),
+ false);
+ category.setChoices(filter(eventCategoryTOs, type.getModelObject()));
+ categoryContainer.add(category);
+
+ category.getField().add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
+
+ private static final long serialVersionUID = -1107858522700306811L;
+
+ @Override
+ protected void onUpdate(final AjaxRequestTarget target) {
+ send(EventCategoryPanel.this, Broadcast.EXACT, new ChangeCategoryEvent(target, category));
+ }
+ });
+
+ subcategory = new AjaxDropDownChoicePanel<>(
+ "subcategory",
+ "subcategory",
+ new PropertyModel<String>(eventCategoryTO, "subcategory"),
+ false);
+ subcategory.setChoices(filter(eventCategoryTOs, type.getModelObject(), category.getModelObject()));
+ categoryContainer.add(subcategory);
+
+ subcategory.getField().add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
+
+ private static final long serialVersionUID = -1107858522700306812L;
+
+ @Override
+ protected void onUpdate(final AjaxRequestTarget target) {
+ send(EventCategoryPanel.this, Broadcast.EXACT, new ChangeCategoryEvent(target, subcategory));
+ }
+ });
+
+ categoryContainer.add(new Label("customLabel", new ResourceModel("custom", "custom")).setVisible(false));
+
+ custom = new AjaxTextFieldPanel("custom", "custom", new Model<String>(null));
+ custom.setVisible(false);
+ custom.setEnabled(false);
+
+ categoryContainer.add(custom.hideLabel());
+
+ actionLinksPanel = ActionLinksPanel.<EventCategoryTO>builder().
+ add(new ActionLink<EventCategoryTO>() {
+
+ private static final long serialVersionUID = -3722207913631435501L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final EventCategoryTO modelObject) {
+ if (StringUtils.isNotBlank(custom.getModelObject())) {
+ Map.Entry<EventCategoryTO, AuditElements.Result> parsed =
+ AuditLoggerName.parseEventCategory(custom.getModelObject());
+
+ String eventString = AuditLoggerName.buildEvent(
+ parsed.getKey().getType(),
+ null,
+ null,
+ parsed.getKey().getEvents().isEmpty()
+ ? StringUtils.EMPTY : parsed.getKey().getEvents().iterator().next(),
+ parsed.getValue());
+
+ custom.setModelObject(StringUtils.EMPTY);
+ send(EventCategoryPanel.this.getPage(), Broadcast.BREADTH, new EventSelectionChanged(
+ target,
+ Collections.<String>singleton(eventString),
+ Collections.<String>emptySet()));
+ target.add(categoryContainer);
+ }
+ }
+ }, ActionLink.ActionType.CREATE).
+ add(new ActionLink<EventCategoryTO>() {
+
+ private static final long serialVersionUID = -3722207913631435501L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final EventCategoryTO modelObject) {
+ if (StringUtils.isNotBlank(custom.getModelObject())) {
+ Pair<EventCategoryTO, AuditElements.Result> parsed =
+ AuditLoggerName.parseEventCategory(custom.getModelObject());
+
+ String eventString = AuditLoggerName.buildEvent(
+ parsed.getKey().getType(),
+ null,
+ null,
+ parsed.getKey().getEvents().isEmpty()
+ ? StringUtils.EMPTY : parsed.getKey().getEvents().iterator().next(),
+ parsed.getValue());
+
+ custom.setModelObject(StringUtils.EMPTY);
+ send(EventCategoryPanel.this.getPage(), Broadcast.BREADTH, new EventSelectionChanged(
+ target,
+ Collections.<String>singleton(eventString),
+ Collections.<String>emptySet()));
+ target.add(categoryContainer);
+ }
+ }
+ }, ActionLink.ActionType.CREATE).
+ add(new ActionLink<EventCategoryTO>() {
+
+ private static final long serialVersionUID = -3722207913631435521L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final EventCategoryTO modelObject) {
+ if (StringUtils.isNotBlank(custom.getModelObject())) {
+ Pair<EventCategoryTO, AuditElements.Result> parsed =
+ AuditLoggerName.parseEventCategory(custom.getModelObject());
+
+ String eventString = AuditLoggerName.buildEvent(
+ parsed.getKey().getType(),
+ null,
+ null,
+ parsed.getKey().getEvents().isEmpty()
+ ? StringUtils.EMPTY : parsed.getKey().getEvents().iterator().next(),
+ parsed.getValue());
+
+ custom.setModelObject(StringUtils.EMPTY);
+ send(EventCategoryPanel.this.getPage(), Broadcast.BREADTH, new EventSelectionChanged(
+ target,
+ Collections.<String>emptySet(),
+ Collections.<String>singleton(eventString)));
+ target.add(categoryContainer);
+ }
+ }
+ }, ActionLink.ActionType.DELETE).build("customActions");
+
+ categoryContainer.add(actionLinksPanel);
+
+ actionLinksPanel.setVisible(false);
+ actionLinksPanel.setEnabled(false);
+
+ eventsContainer.add(new EventSelectionPanel("eventsPanel", eventCategoryTO, model) {
+
+ private static final long serialVersionUID = 3513194801190026082L;
+
+ @Override
+ protected void onEventAction(final IEvent<?> event) {
+ EventCategoryPanel.this.onEventAction(event);
+ }
+ });
+ }
+
+ private List<String> filter(final List<EventCategoryTO> eventCategoryTOs, final EventCategoryType type) {
+ Set<String> res = new HashSet<>();
+
+ for (EventCategoryTO eventCategory : eventCategoryTOs) {
+ if (type == eventCategory.getType() && StringUtils.isNotEmpty(eventCategory.getCategory())) {
+ res.add(eventCategory.getCategory());
+ }
+ }
+
+ List<String> filtered = new ArrayList<>(res);
+ Collections.sort(filtered);
+ return filtered;
+ }
+
+ private List<String> filter(
+ final List<EventCategoryTO> eventCategoryTOs, final EventCategoryType type, final String category) {
+
+ Set<String> res = new HashSet<>();
+
+ for (EventCategoryTO eventCategory : eventCategoryTOs) {
+ if (type == eventCategory.getType() && StringUtils.equals(category, eventCategory.getCategory())
+ && StringUtils.isNotEmpty(eventCategory.getSubcategory())) {
+ res.add(eventCategory.getSubcategory());
+ }
+ }
+
+ List<String> filtered = new ArrayList<>(res);
+ Collections.sort(filtered);
+ return filtered;
+ }
+
+ @Override
+ public void onEvent(final IEvent<?> event) {
+ if (event.getPayload() instanceof ChangeCategoryEvent) {
+ // update objects ....
+ eventCategoryTO.getEvents().clear();
+
+ final ChangeCategoryEvent change = (ChangeCategoryEvent) event.getPayload();
+
+ final Panel changedPanel = change.getChangedPanel();
+ if (null != changedPanel.getId()) {
+ switch (changedPanel.getId()) {
+ case "type":
+ eventCategoryTO.setType(type.getModelObject());
+ eventCategoryTO.setCategory(null);
+ eventCategoryTO.setSubcategory(null);
+ if (type.getModelObject() == EventCategoryType.CUSTOM) {
+ category.setChoices(Collections.<String>emptyList());
+ subcategory.setChoices(Collections.<String>emptyList());
+ category.setEnabled(false);
+ subcategory.setEnabled(false);
+ custom.setVisible(true);
+ custom.setEnabled(true);
+ actionLinksPanel.setVisible(true);
+ actionLinksPanel.setEnabled(true);
+ } else {
+ category.setChoices(filter(eventCategoryTOs, type.getModelObject()));
+ subcategory.setChoices(Collections.<String>emptyList());
+ category.setEnabled(true);
+ subcategory.setEnabled(true);
+ custom.setVisible(false);
+ custom.setEnabled(false);
+ actionLinksPanel.setVisible(false);
+ actionLinksPanel.setEnabled(false);
+ }
+ change.getTarget().add(categoryContainer);
+ break;
+
+ case "category":
+ subcategory.setChoices(
+ filter(eventCategoryTOs, type.getModelObject(), category.getModelObject()));
+ eventCategoryTO.setCategory(category.getModelObject());
+ eventCategoryTO.setSubcategory(null);
+ change.getTarget().add(categoryContainer);
+ break;
+
+ default:
+ eventCategoryTO.setSubcategory(subcategory.getModelObject());
+ break;
+ }
+ }
+
+ updateEventsContainer(change.getTarget());
+ } else if (event.getPayload() instanceof InspectSelectedEvent) {
+ // update objects ....
+ eventCategoryTO.getEvents().clear();
+
+ final InspectSelectedEvent inspectSelectedEvent = (InspectSelectedEvent) event.getPayload();
+
+ final Map.Entry<EventCategoryTO, AuditElements.Result> categoryEvent = AuditLoggerName.parseEventCategory(
+ inspectSelectedEvent.getEvent());
+
+ eventCategoryTO.setType(categoryEvent.getKey().getType());
+ category.setChoices(filter(eventCategoryTOs, type.getModelObject()));
+
+ eventCategoryTO.setCategory(categoryEvent.getKey().getCategory());
+ subcategory.setChoices(filter(eventCategoryTOs, type.getModelObject(), category.getModelObject()));
+
+ eventCategoryTO.setSubcategory(categoryEvent.getKey().getSubcategory());
+
+ if (categoryEvent.getKey().getType() == EventCategoryType.CUSTOM) {
+ custom.setModelObject(AuditLoggerName.buildEvent(
+ categoryEvent.getKey().getType(),
+ categoryEvent.getKey().getCategory(),
+ categoryEvent.getKey().getSubcategory(),
+ categoryEvent.getKey().getEvents().isEmpty()
+ ? StringUtils.EMPTY : categoryEvent.getKey().getEvents().iterator().next(),
+ categoryEvent.getValue()));
+
+ category.setEnabled(false);
+ subcategory.setEnabled(false);
+ custom.setVisible(true);
+ custom.setEnabled(true);
+ actionLinksPanel.setVisible(true);
+ actionLinksPanel.setEnabled(true);
+ } else {
+ category.setEnabled(true);
+ subcategory.setEnabled(true);
+ custom.setVisible(false);
+ custom.setEnabled(false);
+ actionLinksPanel.setVisible(false);
+ actionLinksPanel.setEnabled(false);
+ }
+
+ inspectSelectedEvent.getTarget().add(categoryContainer);
+ updateEventsContainer(inspectSelectedEvent.getTarget());
+ }
+ }
+
+ private void setEvents() {
+ final Iterator<EventCategoryTO> itor = eventCategoryTOs.iterator();
+ while (itor.hasNext() && eventCategoryTO.getEvents().isEmpty()) {
+ final EventCategoryTO eventCategory = itor.next();
+ if (eventCategory.getType() == eventCategoryTO.getType()
+ && StringUtils.equals(eventCategory.getCategory(), eventCategoryTO.getCategory())
+ && StringUtils.equals(eventCategory.getSubcategory(), eventCategoryTO.getSubcategory())) {
+ eventCategoryTO.getEvents().addAll(eventCategory.getEvents());
+
+ }
+ }
+ }
+
+ private class ChangeCategoryEvent {
+
+ private final AjaxRequestTarget target;
+
+ private final Panel changedPanel;
+
+ ChangeCategoryEvent(final AjaxRequestTarget target, final Panel changedPanel) {
+ this.target = target;
+ this.changedPanel = changedPanel;
+ }
+
+ public AjaxRequestTarget getTarget() {
+ return target;
+ }
+
+ public Panel getChangedPanel() {
+ return changedPanel;
+ }
+ }
+
+ /**
+ * To be extended in order to add actions on events.
+ *
+ * @param event event.
+ */
+ protected void onEventAction(final IEvent<?> event) {
+ // nothing by default
+ }
+
+ private void authorizeList() {
+ for (String role : getListAuthRoles()) {
+ MetaDataRoleAuthorizationStrategy.authorize(selectedEventsPanel, RENDER, role);
+ }
+ }
+
+ private void authorizeChanges() {
+ for (String role : getChangeAuthRoles()) {
+ MetaDataRoleAuthorizationStrategy.authorize(categoryContainer, RENDER, role);
+ MetaDataRoleAuthorizationStrategy.authorize(eventsContainer, RENDER, role);
+ }
+ }
+
+ private void updateEventsContainer(final AjaxRequestTarget target) {
+ setEvents();
+
+ eventsContainer.addOrReplace(new EventSelectionPanel("eventsPanel", eventCategoryTO, model) {
+
+ private static final long serialVersionUID = 3513194801190026082L;
+
+ @Override
+ public void onEventAction(final IEvent<?> event) {
+ EventCategoryPanel.this.onEventAction(event);
+ }
+ });
+ target.add(eventsContainer);
+ }
+
+ protected abstract List<String> getListAuthRoles();
+
+ protected abstract List<String> getChangeAuthRoles();
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/java/org/apache/syncope/client/console/events/EventSelectionPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/events/EventSelectionPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/events/EventSelectionPanel.java
new file mode 100644
index 0000000..54a4506
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/events/EventSelectionPanel.java
@@ -0,0 +1,220 @@
+/*
+ * 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.events;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.client.console.wicket.ajax.form.IndicatorAjaxFormChoiceComponentUpdatingBehavior;
+import org.apache.syncope.common.lib.to.EventCategoryTO;
+import org.apache.syncope.common.lib.types.AuditElements;
+import org.apache.syncope.common.lib.types.AuditLoggerName;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.event.Broadcast;
+import org.apache.wicket.event.IEvent;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.Check;
+import org.apache.wicket.markup.html.form.CheckGroup;
+import org.apache.wicket.markup.html.form.CheckGroupSelector;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.ResourceModel;
+
+public abstract class EventSelectionPanel extends Panel {
+
+ private static final long serialVersionUID = 752233163798301002L;
+
+ private final Set<String> selected = new HashSet<>();
+
+ public EventSelectionPanel(
+ final String id, final EventCategoryTO eventCategoryTO, final IModel<List<String>> model) {
+ super(id);
+ setOutputMarkupId(true);
+
+ List<String> events = getEvents(eventCategoryTO);
+
+ // needed to avoid model reset: model have to be managed into SelectedEventsPanel
+ selected.addAll(model.getObject());
+
+ final CheckGroup<String> successGroup = new CheckGroup<>("successGroup", selected);
+ successGroup.add(new IndicatorAjaxFormChoiceComponentUpdatingBehavior() {
+
+ private static final long serialVersionUID = -151291731388673682L;
+
+ @Override
+ protected void onUpdate(final AjaxRequestTarget target) {
+
+ final Set<String> toBeRemoved = new HashSet<>();
+ final Set<String> toBeAdded = new HashSet<>();
+
+ for (String event : getEvents(eventCategoryTO)) {
+ String eventString = AuditLoggerName.buildEvent(
+ eventCategoryTO.getType(),
+ eventCategoryTO.getCategory(),
+ eventCategoryTO.getSubcategory(),
+ event,
+ AuditElements.Result.SUCCESS);
+
+ if (successGroup.getModelObject().contains(eventString)) {
+ toBeAdded.add(eventString);
+ } else {
+ toBeRemoved.add(eventString);
+ }
+ }
+
+ send(EventSelectionPanel.this.getPage(), Broadcast.BREADTH,
+ new SelectedEventsPanel.EventSelectionChanged(target, toBeAdded, toBeRemoved));
+ }
+ });
+ successGroup.setVisible(!events.isEmpty());
+ add(successGroup);
+
+ add(new Label("successLabel", new ResourceModel("Success", "Success"))).setVisible(!events.isEmpty());
+
+ CheckGroupSelector successSelector = new CheckGroupSelector("successSelector", successGroup);
+ successSelector.setVisible(!events.isEmpty());
+ add(successSelector);
+
+ ListView<String> categoryView = new ListView<String>("categoryView", events) {
+
+ private static final long serialVersionUID = 4949588177564901031L;
+
+ @Override
+ protected void populateItem(final ListItem<String> item) {
+ final String subcategory = item.getModelObject();
+
+ item.add(new Label("subcategory", new ResourceModel(subcategory, subcategory)));
+ }
+ };
+ add(categoryView);
+
+ ListView<String> successView = new ListView<String>("successView", events) {
+
+ private static final long serialVersionUID = 4949588177564901031L;
+
+ @Override
+ protected void populateItem(final ListItem<String> item) {
+ item.add(new Check<>("successCheck",
+ new Model<>(AuditLoggerName.buildEvent(
+ eventCategoryTO.getType(),
+ eventCategoryTO.getCategory(),
+ eventCategoryTO.getSubcategory(),
+ item.getModelObject(),
+ AuditElements.Result.SUCCESS)),
+ successGroup));
+ }
+ };
+ successGroup.add(successView);
+
+ final CheckGroup<String> failureGroup = new CheckGroup<>("failureGroup", selected);
+ failureGroup.add(new IndicatorAjaxFormChoiceComponentUpdatingBehavior() {
+
+ private static final long serialVersionUID = -151291731388673682L;
+
+ @Override
+ protected void onUpdate(final AjaxRequestTarget target) {
+ final Set<String> toBeRemoved = new HashSet<>();
+ final Set<String> toBeAdded = new HashSet<>();
+
+ for (String event : getEvents(eventCategoryTO)) {
+ final String eventString = AuditLoggerName.buildEvent(
+ eventCategoryTO.getType(),
+ eventCategoryTO.getCategory(),
+ eventCategoryTO.getSubcategory(),
+ event,
+ AuditElements.Result.FAILURE);
+
+ if (failureGroup.getModelObject().contains(eventString)) {
+ toBeAdded.add(eventString);
+ } else {
+ toBeRemoved.add(eventString);
+ }
+ }
+
+ send(EventSelectionPanel.this.getPage(), Broadcast.BREADTH,
+ new SelectedEventsPanel.EventSelectionChanged(target, toBeAdded, toBeRemoved));
+ }
+ });
+ failureGroup.setVisible(!events.isEmpty());
+ add(failureGroup);
+
+ add(new Label("failureLabel", new ResourceModel("Failure", "Failure"))).setVisible(!events.isEmpty());
+
+ CheckGroupSelector failureSelector = new CheckGroupSelector("failureSelector", failureGroup);
+ failureSelector.setVisible(!events.isEmpty());
+ add(failureSelector);
+
+ ListView<String> failureView = new ListView<String>("failureView", events) {
+
+ private static final long serialVersionUID = 4949588177564901031L;
+
+ @Override
+ protected void populateItem(final ListItem<String> item) {
+ item.add(new Check<>("failureCheck",
+ new Model<>(AuditLoggerName.buildEvent(
+ eventCategoryTO.getType(),
+ eventCategoryTO.getCategory(),
+ eventCategoryTO.getSubcategory(),
+ item.getModelObject(),
+ AuditElements.Result.FAILURE)),
+ failureGroup));
+ }
+ };
+ failureGroup.add(failureView);
+ }
+
+ private List<String> getEvents(final EventCategoryTO eventCategoryTO) {
+ final List<String> res;
+
+ res = eventCategoryTO.getEvents();
+
+ if (res.isEmpty()) {
+ if ((AuditElements.EventCategoryType.PROPAGATION == eventCategoryTO.getType()
+ || AuditElements.EventCategoryType.PULL == eventCategoryTO.getType()
+ || AuditElements.EventCategoryType.PUSH == eventCategoryTO.getType())
+ && StringUtils.isEmpty(eventCategoryTO.getCategory())) {
+ res.add(eventCategoryTO.getType().toString());
+ } else if (AuditElements.EventCategoryType.TASK == eventCategoryTO.getType()
+ && StringUtils.isNotEmpty(eventCategoryTO.getCategory())) {
+ res.add(eventCategoryTO.getCategory());
+ }
+ } else {
+ Collections.sort(res);
+ }
+
+ return res;
+ }
+
+ /**
+ * To be extended in order to add actions on events.
+ *
+ * @param event event.
+ */
+ protected abstract void onEventAction(final IEvent<?> event);
+
+ @Override
+ public void onEvent(final IEvent<?> event) {
+ onEventAction(event);
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/java/org/apache/syncope/client/console/events/SelectedEventsPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/events/SelectedEventsPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/events/SelectedEventsPanel.java
new file mode 100644
index 0000000..07c3854
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/events/SelectedEventsPanel.java
@@ -0,0 +1,172 @@
+/*
+ * 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.events;
+
+import java.util.List;
+import java.util.Set;
+import org.apache.syncope.client.console.commons.Constants;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
+import org.apache.wicket.event.Broadcast;
+import org.apache.wicket.event.IEvent;
+import org.apache.wicket.markup.ComponentTag;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.form.IChoiceRenderer;
+import org.apache.wicket.markup.html.form.ListMultipleChoice;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.util.ListModel;
+
+public class SelectedEventsPanel extends Panel {
+
+ private static final long serialVersionUID = -4832450230348213500L;
+
+ private final WebMarkupContainer selectionContainer;
+
+ private ListMultipleChoice<String> selectedEvents;
+
+ private final IModel<List<String>> model;
+
+ public SelectedEventsPanel(final String id, final IModel<List<String>> model) {
+ super(id);
+
+ this.model = model;
+
+ selectionContainer = new WebMarkupContainer("selectionContainer");
+ selectionContainer.setOutputMarkupId(true);
+ add(selectionContainer);
+
+ selectedEvents = new ListMultipleChoice<String>("selectedEvents", new ListModel<String>(), model) {
+
+ private static final long serialVersionUID = 1226677544225737338L;
+
+ @Override
+ protected void onComponentTag(final ComponentTag tag) {
+ super.onComponentTag(tag);
+ tag.remove("size");
+ tag.remove("multiple");
+ tag.put("size", 5);
+ }
+ };
+
+ selectedEvents.setMaxRows(5);
+ selectedEvents.setChoiceRenderer(new IChoiceRenderer<String>() {
+
+ private static final long serialVersionUID = -4288397951948436434L;
+
+ @Override
+ public Object getDisplayValue(final String object) {
+ return object;
+ }
+
+ @Override
+ public String getIdValue(final String object, final int index) {
+ return object;
+ }
+
+ @Override
+ public String getObject(final String id, final IModel<? extends List<? extends String>> choices) {
+ return id;
+ }
+ });
+
+ selectedEvents.add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
+
+ private static final long serialVersionUID = -151291731388673682L;
+
+ @Override
+ protected void onUpdate(final AjaxRequestTarget target) {
+ send(SelectedEventsPanel.this.getPage(),
+ Broadcast.BREADTH,
+ new InspectSelectedEvent(target, selectedEvents.getModelValue()));
+ }
+ });
+
+ selectionContainer.add(selectedEvents);
+ }
+
+ @Override
+ public void onEvent(final IEvent<?> event) {
+ if (event.getPayload() instanceof EventSelectionChanged) {
+ final EventSelectionChanged eventSelectionChanged = (EventSelectionChanged) event.getPayload();
+
+ for (String toBeRemoved : eventSelectionChanged.getToBeRemoved()) {
+ model.getObject().remove(toBeRemoved);
+ }
+
+ for (String toBeAdded : eventSelectionChanged.getToBeAdded()) {
+ if (!model.getObject().contains(toBeAdded)) {
+ model.getObject().add(toBeAdded);
+ }
+ }
+
+ eventSelectionChanged.getTarget().add(selectionContainer);
+ }
+ }
+
+ public static class InspectSelectedEvent {
+
+ private final AjaxRequestTarget target;
+
+ private final String event;
+
+ public InspectSelectedEvent(final AjaxRequestTarget target, final String event) {
+ this.target = target;
+ this.event = event;
+ }
+
+ public AjaxRequestTarget getTarget() {
+ return target;
+ }
+
+ public String getEvent() {
+ return event;
+ }
+ }
+
+ public static class EventSelectionChanged {
+
+ private final AjaxRequestTarget target;
+
+ private final Set<String> toBeRemoved;
+
+ private final Set<String> toBeAdded;
+
+ public EventSelectionChanged(
+ final AjaxRequestTarget target,
+ final Set<String> toBeAdded,
+ final Set<String> toBeRemoved) {
+ this.target = target;
+ this.toBeAdded = toBeAdded;
+ this.toBeRemoved = toBeRemoved;
+ }
+
+ public AjaxRequestTarget getTarget() {
+ return target;
+ }
+
+ public Set<String> getToBeRemoved() {
+ return toBeRemoved;
+ }
+
+ public Set<String> getToBeAdded() {
+ return toBeAdded;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/java/org/apache/syncope/client/console/notifications/EventSelectionPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/notifications/EventSelectionPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/notifications/EventSelectionPanel.java
deleted file mode 100644
index 38d2dd9..0000000
--- a/client/console/src/main/java/org/apache/syncope/client/console/notifications/EventSelectionPanel.java
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
- * 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.notifications;
-
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.common.lib.to.EventCategoryTO;
-import org.apache.syncope.common.lib.types.AuditElements;
-import org.apache.syncope.common.lib.types.AuditLoggerName;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.form.AjaxFormChoiceComponentUpdatingBehavior;
-import org.apache.wicket.event.Broadcast;
-import org.apache.wicket.event.IEvent;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.form.Check;
-import org.apache.wicket.markup.html.form.CheckGroup;
-import org.apache.wicket.markup.html.form.CheckGroupSelector;
-import org.apache.wicket.markup.html.list.ListItem;
-import org.apache.wicket.markup.html.list.ListView;
-import org.apache.wicket.markup.html.panel.Panel;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.model.ResourceModel;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public abstract class EventSelectionPanel extends Panel {
-
- /**
- * Logger.
- */
- private static final Logger LOG = LoggerFactory.getLogger(EventSelectionPanel.class);
-
- private static final long serialVersionUID = 752233163798301002L;
-
- private final Set<String> selected = new HashSet<String>();
-
- public EventSelectionPanel(
- final String id, final EventCategoryTO eventCategoryTO, final IModel<List<String>> model) {
- super(id);
- setOutputMarkupId(true);
-
- final List<String> events = getEvents(eventCategoryTO);
-
- // needed to avoid model reset: model have to be managed into SelectedEventsPanel
- selected.addAll(model.getObject());
-
- final CheckGroup<String> successGroup = new CheckGroup<String>(
- "successGroup",
- selected);
-
- successGroup.add(new AjaxFormChoiceComponentUpdatingBehavior() {
-
- private static final long serialVersionUID = -151291731388673682L;
-
- @Override
- protected void onUpdate(final AjaxRequestTarget target) {
-
- final Set<String> toBeRemoved = new HashSet<String>();
- final Set<String> toBeAdded = new HashSet<String>();
-
- for (String event : getEvents(eventCategoryTO)) {
- final String eventString = AuditLoggerName.buildEvent(
- eventCategoryTO.getType(),
- eventCategoryTO.getCategory(),
- eventCategoryTO.getSubcategory(),
- event,
- AuditElements.Result.SUCCESS);
-
- if (successGroup.getModelObject().contains(eventString)) {
- toBeAdded.add(eventString);
- } else {
- toBeRemoved.add(eventString);
- }
- }
-
- send(EventSelectionPanel.this.getPage(), Broadcast.BREADTH,
- new SelectedEventsPanel.EventSelectionChanged(target, toBeAdded, toBeRemoved));
- }
- });
-
- successGroup.setVisible(!events.isEmpty());
- add(successGroup);
-
- add(new Label("successLabel", new ResourceModel("Success", "Success"))).setVisible(!events.isEmpty());
-
- final CheckGroupSelector successSelector = new CheckGroupSelector("successSelector", successGroup);
- successSelector.setVisible(!events.isEmpty());
- add(successSelector);
-
- final ListView<String> categoryView = new ListView<String>("categoryView", events) {
-
- private static final long serialVersionUID = 4949588177564901031L;
-
- @Override
- protected void populateItem(final ListItem<String> item) {
- final String subcategory = item.getModelObject();
-
- item.add(new Label("subcategory", new ResourceModel(subcategory, subcategory)));
- }
- };
- add(categoryView);
-
- final ListView<String> successView = new ListView<String>("successView", events) {
-
- private static final long serialVersionUID = 4949588177564901031L;
-
- @Override
- protected void populateItem(final ListItem<String> item) {
- final String event = item.getModelObject();
-
- final Check<String> successCheck = new Check<String>("successCheck",
- new Model<String>(AuditLoggerName.buildEvent(
- eventCategoryTO.getType(),
- eventCategoryTO.getCategory(),
- eventCategoryTO.getSubcategory(),
- event,
- AuditElements.Result.SUCCESS)),
- successGroup);
- item.add(successCheck);
- }
- };
- successGroup.add(successView);
-
- final CheckGroup<String> failureGroup = new CheckGroup<String>("failureGroup", selected);
-
- failureGroup.add(new AjaxFormChoiceComponentUpdatingBehavior() {
-
- private static final long serialVersionUID = -151291731388673682L;
-
- @Override
- protected void onUpdate(final AjaxRequestTarget target) {
-
- final Set<String> toBeRemoved = new HashSet<String>();
- final Set<String> toBeAdded = new HashSet<String>();
-
- for (String event : getEvents(eventCategoryTO)) {
- final String eventString = AuditLoggerName.buildEvent(
- eventCategoryTO.getType(),
- eventCategoryTO.getCategory(),
- eventCategoryTO.getSubcategory(),
- event,
- AuditElements.Result.FAILURE);
-
- if (failureGroup.getModelObject().contains(eventString)) {
- toBeAdded.add(eventString);
- } else {
- toBeRemoved.add(eventString);
- }
- }
-
- send(EventSelectionPanel.this.getPage(), Broadcast.BREADTH,
- new SelectedEventsPanel.EventSelectionChanged(target, toBeAdded, toBeRemoved));
- }
- });
-
- failureGroup.setVisible(!events.isEmpty());
- add(failureGroup);
-
- add(new Label("failureLabel", new ResourceModel("Failure", "Failure"))).setVisible(!events.isEmpty());
-
- final CheckGroupSelector failureSelector = new CheckGroupSelector("failureSelector", failureGroup);
- failureSelector.setVisible(!events.isEmpty());
- add(failureSelector);
-
- final ListView<String> failureView = new ListView<String>("failureView", events) {
-
- private static final long serialVersionUID = 4949588177564901031L;
-
- @Override
- protected void populateItem(final ListItem<String> item) {
- final String event = item.getModelObject();
-
- final Check<String> failureCheck = new Check<String>("failureCheck",
- new Model<String>(AuditLoggerName.buildEvent(
- eventCategoryTO.getType(),
- eventCategoryTO.getCategory(),
- eventCategoryTO.getSubcategory(),
- event,
- AuditElements.Result.FAILURE)),
- failureGroup);
- item.add(failureCheck);
- }
- };
- failureGroup.add(failureView);
- }
-
- private List<String> getEvents(final EventCategoryTO eventCategoryTO) {
- final List<String> res;
-
- res = eventCategoryTO.getEvents();
-
- if (res.isEmpty()) {
- if ((AuditElements.EventCategoryType.PROPAGATION == eventCategoryTO.getType()
- || AuditElements.EventCategoryType.PULL == eventCategoryTO.getType()
- || AuditElements.EventCategoryType.PUSH == eventCategoryTO.getType())
- && StringUtils.isEmpty(eventCategoryTO.getCategory())) {
- res.add(eventCategoryTO.getType().toString());
- } else if (AuditElements.EventCategoryType.TASK == eventCategoryTO.getType()
- && StringUtils.isNotEmpty(eventCategoryTO.getCategory())) {
- res.add(eventCategoryTO.getCategory());
- }
- } else {
- Collections.sort(res);
- }
-
- return res;
- }
-
- /**
- * To be extended in order to add actions on events.
- *
- * @param event event.
- */
- protected abstract void onEventAction(final IEvent<?> event);
-
- @Override
- public void onEvent(final IEvent<?> event) {
- onEventAction(event);
- }
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/java/org/apache/syncope/client/console/notifications/LoggerCategoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/notifications/LoggerCategoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/notifications/LoggerCategoryPanel.java
deleted file mode 100644
index d1715f1..0000000
--- a/client/console/src/main/java/org/apache/syncope/client/console/notifications/LoggerCategoryPanel.java
+++ /dev/null
@@ -1,509 +0,0 @@
-/*
- * 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.notifications;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import org.apache.commons.collections4.IterableUtils;
-import org.apache.commons.collections4.Predicate;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.client.console.commons.Constants;
-import org.apache.syncope.client.console.notifications.SelectedEventsPanel.EventSelectionChanged;
-import org.apache.syncope.client.console.notifications.SelectedEventsPanel.InspectSelectedEvent;
-import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
-import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksPanel;
-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.common.lib.to.EventCategoryTO;
-import org.apache.syncope.common.lib.types.AuditElements;
-import org.apache.syncope.common.lib.types.AuditElements.EventCategoryType;
-import org.apache.syncope.common.lib.types.AuditLoggerName;
-import org.apache.syncope.common.lib.types.StandardEntitlement;
-import org.apache.wicket.PageReference;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
-import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
-import org.apache.wicket.event.Broadcast;
-import org.apache.wicket.event.IEvent;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.form.IChoiceRenderer;
-import org.apache.wicket.markup.html.panel.Panel;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.model.PropertyModel;
-import org.apache.wicket.model.ResourceModel;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public abstract class LoggerCategoryPanel extends Panel {
-
- /**
- * Logger.
- */
- private static final Logger LOG = LoggerFactory.getLogger(LoggerCategoryPanel.class);
-
- private static final long serialVersionUID = 6429053774964787734L;
-
- private final List<EventCategoryTO> eventCategoryTOs;
-
- private final EventCategoryTO eventCategoryTO = new EventCategoryTO();
-
- private final WebMarkupContainer categoryContainer;
-
- private final WebMarkupContainer eventsContainer;
-
- private final SelectedEventsPanel selectedEventsPanel;
-
- private final AjaxDropDownChoicePanel<EventCategoryType> type;
-
- private final AjaxDropDownChoicePanel<String> category;
-
- private final AjaxDropDownChoicePanel<String> subcategory;
-
- private final AjaxTextFieldPanel custom;
-
- private final ActionLinksPanel actionPanel;
-
- private final IModel<List<String>> model;
-
- public LoggerCategoryPanel(
- final String id,
- final List<EventCategoryTO> eventCategoryTOs,
- final IModel<List<String>> model,
- final PageReference pageReference,
- final String pageId) {
- super(id);
-
- this.model = model;
- selectedEventsPanel = new SelectedEventsPanel("selectedEventsPanel", model);
- add(selectedEventsPanel);
-
- this.eventCategoryTOs = eventCategoryTOs;
-
- categoryContainer = new WebMarkupContainer("categoryContainer");
- categoryContainer.setOutputMarkupId(true);
- add(categoryContainer);
-
- eventsContainer = new WebMarkupContainer("eventsContainer");
- eventsContainer.setOutputMarkupId(true);
- add(eventsContainer);
-
- authorizeList();
- authorizeChanges();
-
- type = new AjaxDropDownChoicePanel<EventCategoryType>(
- "type",
- "type",
- new PropertyModel<EventCategoryType>(eventCategoryTO, "type"),
- false);
- type.setChoices(Arrays.asList(EventCategoryType.values()));
- type.setStyleSheet("ui-widget-content ui-corner-all");
- type.setChoiceRenderer(new IChoiceRenderer<EventCategoryType>() {
-
- private static final long serialVersionUID = 2317134950949778735L;
-
- @Override
- public String getDisplayValue(final EventCategoryType eventCategoryType) {
- return eventCategoryType.name();
- }
-
- @Override
- public String getIdValue(final EventCategoryType eventCategoryType, final int i) {
- return eventCategoryType.name();
- }
-
- @Override
- public EventCategoryType getObject(
- final String id, final IModel<? extends List<? extends EventCategoryType>> choices) {
- return IterableUtils.find(choices.getObject(), new Predicate<EventCategoryType>() {
-
- @Override
- public boolean evaluate(final EventCategoryType object) {
- return object.name().equals(id);
- }
- });
- }
- });
- categoryContainer.add(type);
-
- type.getField().add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
-
- private static final long serialVersionUID = -1107858522700306810L;
-
- @Override
- protected void onUpdate(final AjaxRequestTarget target) {
- send(LoggerCategoryPanel.this, Broadcast.EXACT, new ChangeCategoryEvent(target, type));
- }
- });
-
- category = new AjaxDropDownChoicePanel<String>(
- "category",
- "category",
- new PropertyModel<String>(eventCategoryTO, "category"),
- false);
- category.setChoices(filter(eventCategoryTOs, type.getModelObject()));
-// category.setStyleSheet("ui-widget-content ui-corner-all");
- categoryContainer.add(category);
-
- category.getField().add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
-
- private static final long serialVersionUID = -1107858522700306811L;
-
- @Override
- protected void onUpdate(final AjaxRequestTarget target) {
- send(LoggerCategoryPanel.this, Broadcast.EXACT, new ChangeCategoryEvent(target, category));
- }
- });
-
- subcategory = new AjaxDropDownChoicePanel<String>(
- "subcategory",
- "subcategory",
- new PropertyModel<String>(eventCategoryTO, "subcategory"),
- false);
- subcategory.setChoices(filter(eventCategoryTOs, type.getModelObject(), category.getModelObject()));
-// subcategory.setStyleSheet("ui-widget-content ui-corner-all");
- categoryContainer.add(subcategory);
-
- subcategory.getField().add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
-
- private static final long serialVersionUID = -1107858522700306812L;
-
- @Override
- protected void onUpdate(final AjaxRequestTarget target) {
- send(LoggerCategoryPanel.this, Broadcast.EXACT, new ChangeCategoryEvent(target, subcategory));
- }
- });
-
- categoryContainer.add(new Label("customLabel", new ResourceModel("custom", "custom")).setVisible(false));
-
- custom = new AjaxTextFieldPanel("custom", "custom", new Model<String>(null));
-// custom.setStyleSheet("ui-widget-content ui-corner-all short_fixedsize");
- custom.setVisible(false);
- custom.setEnabled(false);
-
- categoryContainer.add(custom.hideLabel());
-
- actionPanel = ActionLinksPanel.<EventCategoryTO>builder().
- add(new ActionLink<EventCategoryTO>() {
-
- private static final long serialVersionUID = -3722207913631435501L;
-
- @Override
- public void onClick(final AjaxRequestTarget target, final EventCategoryTO modelObject) {
-
- if (StringUtils.isNotBlank(custom.getModelObject())) {
- final Map.Entry<EventCategoryTO, AuditElements.Result> parsed = AuditLoggerName.
- parseEventCategory(
- custom.getModelObject());
-
- final String eventString = AuditLoggerName.buildEvent(
- parsed.getKey().getType(),
- null,
- null,
- parsed.getKey().getEvents().isEmpty()
- ? StringUtils.EMPTY : parsed.getKey().getEvents().iterator().next(),
- parsed.getValue());
-
- custom.setModelObject(StringUtils.EMPTY);
- send(LoggerCategoryPanel.this.getPage(), Broadcast.BREADTH, new EventSelectionChanged(
- target,
- Collections.<String>singleton(eventString),
- Collections.<String>emptySet()));
- target.add(categoryContainer);
- }
- }
- }, ActionLink.ActionType.CREATE, StandardEntitlement.NOTIFICATION_UPDATE, true).
- add(new ActionLink<EventCategoryTO>() {
-
- private static final long serialVersionUID = -3722207913631435501L;
-
- @Override
- public void onClick(final AjaxRequestTarget target, final EventCategoryTO modelObject) {
- if (StringUtils.isNotBlank(custom.getModelObject())) {
- final Map.Entry<EventCategoryTO, AuditElements.Result> parsed = AuditLoggerName.
- parseEventCategory(
- custom.getModelObject());
-
- final String eventString = AuditLoggerName.buildEvent(
- parsed.getKey().getType(),
- null,
- null,
- parsed.getKey().getEvents().isEmpty()
- ? StringUtils.EMPTY : parsed.getKey().getEvents().iterator().next(),
- parsed.getValue());
-
- custom.setModelObject(StringUtils.EMPTY);
- send(LoggerCategoryPanel.this.getPage(), Broadcast.BREADTH, new EventSelectionChanged(
- target,
- Collections.<String>singleton(eventString),
- Collections.<String>emptySet()));
- target.add(categoryContainer);
- }
- }
- }, ActionLink.ActionType.CREATE, pageId, true).
- add(new ActionLink<EventCategoryTO>() {
-
- private static final long serialVersionUID = -3722207913631435521L;
-
- @Override
- public void onClick(final AjaxRequestTarget target, final EventCategoryTO modelObject) {
- if (StringUtils.isNotBlank(custom.getModelObject())) {
- final Map.Entry<EventCategoryTO, AuditElements.Result> parsed = AuditLoggerName.
- parseEventCategory(
- custom.getModelObject());
-
- final String eventString = AuditLoggerName.buildEvent(
- parsed.getKey().getType(),
- null,
- null,
- parsed.getKey().getEvents().isEmpty()
- ? StringUtils.EMPTY : parsed.getKey().getEvents().iterator().next(),
- parsed.getValue());
-
- custom.setModelObject(StringUtils.EMPTY);
- send(LoggerCategoryPanel.this.getPage(), Broadcast.BREADTH, new EventSelectionChanged(
- target,
- Collections.<String>emptySet(),
- Collections.<String>singleton(eventString)));
- target.add(categoryContainer);
- }
- }
- }, ActionLink.ActionType.DELETE, pageId, true).build("customActions");
-
- //, new Model(), pageReference);
- categoryContainer.add(actionPanel);
-
- actionPanel.setVisible(false);
- actionPanel.setEnabled(false);
-
- eventsContainer.add(new EventSelectionPanel("eventsPanel", eventCategoryTO, model) {
-
- private static final long serialVersionUID = 3513194801190026082L;
-
- @Override
- protected void onEventAction(final IEvent<?> event) {
- LoggerCategoryPanel.this.onEventAction(event);
- }
- });
- }
-
- private List<String> filter(
- final List<EventCategoryTO> eventCategoryTOs, final EventCategoryType type) {
- final Set<String> res = new HashSet<String>();
-
- for (EventCategoryTO eventCategory : eventCategoryTOs) {
- if (type == eventCategory.getType() && StringUtils.isNotEmpty(eventCategory.getCategory())) {
- res.add(eventCategory.getCategory());
- }
- }
-
- final List<String> filtered = new ArrayList<String>(res);
- Collections.sort(filtered);
- return filtered;
- }
-
- private List<String> filter(
- final List<EventCategoryTO> eventCategoryTOs, final EventCategoryType type, final String category) {
- final Set<String> res = new HashSet<String>();
-
- for (EventCategoryTO eventCategory : eventCategoryTOs) {
- if (type == eventCategory.getType() && StringUtils.equals(category, eventCategory.getCategory())
- && StringUtils.isNotEmpty(eventCategory.getSubcategory())) {
- res.add(eventCategory.getSubcategory());
- }
- }
-
- final List<String> filtered = new ArrayList<String>(res);
- Collections.sort(filtered);
- return filtered;
- }
-
- @Override
- @SuppressWarnings("unchecked")
- public void onEvent(final IEvent<?> event) {
- if (event.getPayload() instanceof ChangeCategoryEvent) {
- // update objects ....
- eventCategoryTO.getEvents().clear();
-
- final ChangeCategoryEvent change = (ChangeCategoryEvent) event.getPayload();
-
- final Panel changedPanel = change.getChangedPanel();
- if ("type".equals(changedPanel.getId())) {
- eventCategoryTO.setType(type.getModelObject());
- eventCategoryTO.setCategory(null);
- eventCategoryTO.setSubcategory(null);
-
- if (type.getModelObject() == EventCategoryType.CUSTOM) {
- category.setChoices(Collections.<String>emptyList());
- subcategory.setChoices(Collections.<String>emptyList());
- category.setEnabled(false);
- subcategory.setEnabled(false);
- custom.setVisible(true);
- custom.setEnabled(true);
- actionPanel.setVisible(true);
- actionPanel.setEnabled(true);
-
- } else {
- category.setChoices(filter(eventCategoryTOs, type.getModelObject()));
- subcategory.setChoices(Collections.<String>emptyList());
- category.setEnabled(true);
- subcategory.setEnabled(true);
- custom.setVisible(false);
- custom.setEnabled(false);
- actionPanel.setVisible(false);
- actionPanel.setEnabled(false);
- }
- change.getTarget().add(categoryContainer);
- } else if ("category".equals(changedPanel.getId())) {
- subcategory.setChoices(filter(eventCategoryTOs, type.getModelObject(), category.getModelObject()));
- eventCategoryTO.setCategory(category.getModelObject());
- eventCategoryTO.setSubcategory(null);
- change.getTarget().add(categoryContainer);
- } else {
- eventCategoryTO.setSubcategory(subcategory.getModelObject());
- }
-
- updateEventsContainer(change.getTarget());
- } else if (event.getPayload() instanceof InspectSelectedEvent) {
- // update objects ....
- eventCategoryTO.getEvents().clear();
-
- final InspectSelectedEvent inspectSelectedEvent = (InspectSelectedEvent) event.getPayload();
-
- final Map.Entry<EventCategoryTO, AuditElements.Result> categoryEvent = AuditLoggerName.parseEventCategory(
- inspectSelectedEvent.getEvent());
-
- eventCategoryTO.setType(categoryEvent.getKey().getType());
- category.setChoices(filter(eventCategoryTOs, type.getModelObject()));
-
- eventCategoryTO.setCategory(categoryEvent.getKey().getCategory());
- subcategory.setChoices(filter(eventCategoryTOs, type.getModelObject(), category.getModelObject()));
-
- eventCategoryTO.setSubcategory(categoryEvent.getKey().getSubcategory());
-
- if (categoryEvent.getKey().getType() == EventCategoryType.CUSTOM) {
- custom.setModelObject(AuditLoggerName.buildEvent(
- categoryEvent.getKey().getType(),
- categoryEvent.getKey().getCategory(),
- categoryEvent.getKey().getSubcategory(),
- categoryEvent.getKey().getEvents().isEmpty()
- ? StringUtils.EMPTY : categoryEvent.getKey().getEvents().iterator().next(),
- categoryEvent.getValue()));
-
- category.setEnabled(false);
- subcategory.setEnabled(false);
- custom.setVisible(true);
- custom.setEnabled(true);
- actionPanel.setVisible(true);
- actionPanel.setEnabled(true);
- } else {
- category.setEnabled(true);
- subcategory.setEnabled(true);
- custom.setVisible(false);
- custom.setEnabled(false);
- actionPanel.setVisible(false);
- actionPanel.setEnabled(false);
- }
-
- inspectSelectedEvent.getTarget().add(categoryContainer);
- updateEventsContainer(inspectSelectedEvent.getTarget());
- }
- }
-
- private void setEvents() {
- final Iterator<EventCategoryTO> itor = eventCategoryTOs.iterator();
- while (itor.hasNext() && eventCategoryTO.getEvents().isEmpty()) {
- final EventCategoryTO eventCategory = itor.next();
- if (eventCategory.getType() == eventCategoryTO.getType()
- && StringUtils.equals(eventCategory.getCategory(), eventCategoryTO.getCategory())
- && StringUtils.equals(eventCategory.getSubcategory(), eventCategoryTO.getSubcategory())) {
- eventCategoryTO.getEvents().addAll(eventCategory.getEvents());
-
- }
- }
- }
-
- private class ChangeCategoryEvent {
-
- private final AjaxRequestTarget target;
-
- private final Panel changedPanel;
-
- ChangeCategoryEvent(final AjaxRequestTarget target, final Panel changedPanel) {
- this.target = target;
- this.changedPanel = changedPanel;
- }
-
- public AjaxRequestTarget getTarget() {
- return target;
- }
-
- public Panel getChangedPanel() {
- return changedPanel;
- }
- }
-
- /**
- * To be extended in order to add actions on events.
- *
- * @param event event.
- */
- protected void onEventAction(final IEvent<?> event) {
- // nothing by default
- }
-
- private void authorizeList() {
- for (String role : getListRoles()) {
- MetaDataRoleAuthorizationStrategy.authorize(selectedEventsPanel, RENDER, role);
- }
- }
-
- private void authorizeChanges() {
- for (String role : getChangeRoles()) {
- MetaDataRoleAuthorizationStrategy.authorize(categoryContainer, RENDER, role);
- MetaDataRoleAuthorizationStrategy.authorize(eventsContainer, RENDER, role);
- }
- }
-
- private void updateEventsContainer(final AjaxRequestTarget target) {
- setEvents();
-
- eventsContainer.addOrReplace(new EventSelectionPanel("eventsPanel", eventCategoryTO, model) {
-
- private static final long serialVersionUID = 3513194801190026082L;
-
- @Override
- public void onEventAction(final IEvent<?> event) {
- LoggerCategoryPanel.this.onEventAction(event);
- }
- });
- target.add(eventsContainer);
- }
-
- protected abstract String[] getListRoles();
-
- protected abstract String[] getChangeRoles();
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/java/org/apache/syncope/client/console/notifications/MailTemplateDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/notifications/MailTemplateDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/notifications/MailTemplateDirectoryPanel.java
index 2b9d072..6b1796f 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/notifications/MailTemplateDirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/notifications/MailTemplateDirectoryPanel.java
@@ -203,14 +203,14 @@ public class MailTemplateDirectoryPanel
@Override
public Iterator<MailTemplateTO> iterator(final long first, final long count) {
- final List<MailTemplateTO> list = restClient.getAllAvailableTemplates();
+ final List<MailTemplateTO> list = restClient.listTemplates();
Collections.sort(list, comparator);
return list.subList((int) first, (int) first + (int) count).iterator();
}
@Override
public long size() {
- return restClient.getAllAvailableTemplates().size();
+ return restClient.listTemplates().size();
}
@Override
http://git-wip-us.apache.org/repos/asf/syncope/blob/052cf6b1/client/console/src/main/java/org/apache/syncope/client/console/notifications/NotificationDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/notifications/NotificationDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/notifications/NotificationDirectoryPanel.java
index 195c5ff..ba0e43a 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/notifications/NotificationDirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/notifications/NotificationDirectoryPanel.java
@@ -34,6 +34,7 @@ import org.apache.syncope.client.console.notifications.NotificationDirectoryPane
import org.apache.syncope.client.console.panels.DirectoryPanel;
import org.apache.syncope.client.console.rest.NotificationRestClient;
import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.ActionColumn;
+import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.BooleanPropertyColumn;
import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.CollectionPropertyColumn;
import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.KeyPropertyColumn;
import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
@@ -56,23 +57,24 @@ import org.apache.wicket.model.ResourceModel;
import org.apache.wicket.model.StringResourceModel;
public class NotificationDirectoryPanel
- extends DirectoryPanel<NotificationTO, NotificationHandler, NotificationProvider, NotificationRestClient> {
+ extends DirectoryPanel<NotificationTO, NotificationWrapper, NotificationProvider, NotificationRestClient> {
private static final long serialVersionUID = -3789392431954221446L;
protected final BaseModal<Serializable> utilityModal = new BaseModal<>("outer");
- public NotificationDirectoryPanel(final String id, final PageReference pageReference) {
- super(id, pageReference, true);
+ public NotificationDirectoryPanel(final String id, final PageReference pageRef) {
+ super(id, pageRef, true);
disableCheckBoxes();
addOuterObject(utilityModal);
setWindowClosedReloadCallback(utilityModal);
+ utilityModal.size(Modal.Size.Large);
modal.size(Modal.Size.Large);
altDefaultModal.size(Modal.Size.Large);
- addNewItemPanelBuilder(new NotificationWizardBuilder(new NotificationTO(), pageReference), true);
+ addNewItemPanelBuilder(new NotificationWizardBuilder(new NotificationTO(), pageRef), true);
restClient = new NotificationRestClient();
@@ -83,7 +85,6 @@ public class NotificationDirectoryPanel
@Override
protected List<IColumn<NotificationTO, String>> getColumns() {
-
List<IColumn<NotificationTO, String>> columns = new ArrayList<>();
columns.add(new KeyPropertyColumn<NotificationTO>(
new StringResourceModel("key", this, null), "key", "key"));
@@ -95,7 +96,7 @@ public class NotificationDirectoryPanel
new StringResourceModel("template", this, null), "template", "template"));
columns.add(new PropertyColumn<NotificationTO, String>(
new StringResourceModel("traceLevel", this, null), "traceLevel", "traceLevel"));
- columns.add(new PropertyColumn<NotificationTO, String>(
+ columns.add(new BooleanPropertyColumn<NotificationTO>(
new StringResourceModel("active", this, null), "active", "active"));
columns.add(new ActionColumn<NotificationTO, String>(new ResourceModel("actions", "")) {
@@ -130,7 +131,7 @@ public class NotificationDirectoryPanel
public void onClick(final AjaxRequestTarget target, final NotificationTO ignore) {
send(NotificationDirectoryPanel.this, Broadcast.EXACT,
new AjaxWizard.EditItemActionEvent<>(
- new NotificationHandler(restClient.read(model.getObject().getKey())), target));
+ new NotificationWrapper(restClient.read(model.getObject().getKey())), target));
}
}, ActionLink.ActionType.EDIT, StandardEntitlement.NOTIFICATION_UPDATE);
@@ -173,7 +174,7 @@ public class NotificationDirectoryPanel
return Collections.<ActionLink.ActionType>emptyList();
}
- public class NotificationProvider extends DirectoryDataProvider<NotificationTO> {
+ protected class NotificationProvider extends DirectoryDataProvider<NotificationTO> {
private static final long serialVersionUID = -276043813563988590L;
@@ -181,20 +182,21 @@ public class NotificationDirectoryPanel
public NotificationProvider(final int paginatorRows) {
super(paginatorRows);
+
setSort("key", SortOrder.ASCENDING);
comparator = new SortableDataProviderComparator<>(this);
}
@Override
public Iterator<NotificationTO> iterator(final long first, final long count) {
- final List<NotificationTO> list = restClient.getAllNotifications();
+ List<NotificationTO> list = restClient.list();
Collections.sort(list, comparator);
return list.subList((int) first, (int) first + (int) count).iterator();
}
@Override
public long size() {
- return restClient.getAllNotifications().size();
+ return restClient.list().size();
}
@Override