Keep resource provision list order after editing for SYNCOPE-1154 - This closes #53
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/13f9e9b9 Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/13f9e9b9 Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/13f9e9b9 Branch: refs/heads/master Commit: 13f9e9b9b34659ef36ce3631b7e26073e72125e1 Parents: bd6f46e Author: Matteo Alessandroni <matteo.alessandr...@tirasa.net> Authored: Wed Jul 12 09:20:42 2017 +0200 Committer: Francesco Chicchiriccò <ilgro...@apache.org> Committed: Thu Jul 13 10:10:41 2017 +0200 ---------------------------------------------------------------------- .../client/console/rest/AnyTypeRestClient.java | 4 ++-- .../resources/ResourceProvisionPanel.java | 25 +++++++++++++++++--- 2 files changed, 24 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/syncope/blob/13f9e9b9/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyTypeRestClient.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyTypeRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyTypeRestClient.java index f422c2b..86d27c1 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyTypeRestClient.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/AnyTypeRestClient.java @@ -75,7 +75,7 @@ public class AnyTypeRestClient extends BaseRestClient { getService(AnyTypeService.class).delete(key); } - private static class AnyTypeComparator implements Comparator<AnyTypeTO>, Serializable { + public static class AnyTypeComparator implements Comparator<AnyTypeTO>, Serializable { private static final long serialVersionUID = -8227715253094467138L; @@ -97,7 +97,7 @@ public class AnyTypeRestClient extends BaseRestClient { } } - private static class AnyTypeKeyComparator implements Comparator<String>, Serializable { + public static class AnyTypeKeyComparator implements Comparator<String>, Serializable { private static final long serialVersionUID = -7778622183107320760L; http://git-wip-us.apache.org/repos/asf/syncope/blob/13f9e9b9/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java index 28b4605..33e254a 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java @@ -21,6 +21,8 @@ package org.apache.syncope.client.console.wizards.resources; import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; import java.util.List; import org.apache.commons.collections4.IterableUtils; import org.apache.commons.collections4.IteratorUtils; @@ -33,6 +35,7 @@ import org.apache.syncope.client.console.pages.BasePage; import org.apache.syncope.client.console.panels.AbstractModalPanel; import org.apache.syncope.client.console.panels.ListViewPanel; import org.apache.syncope.client.console.panels.ListViewPanel.ListViewReload; +import org.apache.syncope.client.console.rest.AnyTypeRestClient; import org.apache.syncope.client.console.rest.ConnectorRestClient; import org.apache.syncope.client.console.rest.ResourceRestClient; import org.apache.syncope.client.console.wicket.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior; @@ -193,7 +196,7 @@ public class ResourceProvisionPanel extends AbstractModalPanel<Serializable> { @Override protected void customActionCallback(final AjaxRequestTarget target) { - // change modal foter visibility + // change modal footer visibility send(ResourceProvisionPanel.this, Broadcast.BUBBLE, new BaseModal.ChangeFooterVisibilityEvent(target)); } @@ -202,7 +205,7 @@ public class ResourceProvisionPanel extends AbstractModalPanel<Serializable> { ResourceProvisionPanel.this.aboutRealmProvison.setVisible(true); target.add(ResourceProvisionPanel.this.aboutRealmProvison); - // change modal foter visibility + // change modal footer visibility send(ResourceProvisionPanel.this, Broadcast.BUBBLE, new BaseModal.ChangeFooterVisibilityEvent(target)); } @@ -211,11 +214,17 @@ public class ResourceProvisionPanel extends AbstractModalPanel<Serializable> { ResourceProvisionPanel.this.aboutRealmProvison.setVisible(true); target.add(ResourceProvisionPanel.this.aboutRealmProvison); - // change modal foter visibility + // keep list ordered - SYNCOPE-1154 + sortProvisionList(); + + // change modal footer visibility send(ResourceProvisionPanel.this, Broadcast.BUBBLE, new BaseModal.ChangeFooterVisibilityEvent(target)); } }; + // keep list ordered - SYNCOPE-1154 + sortProvisionList(); + builder.setItems(resourceTO.getProvisions()); builder.includes("anyType", "objectClass", "auxClasses"); builder.setReuseItem(false); @@ -349,6 +358,16 @@ public class ResourceProvisionPanel extends AbstractModalPanel<Serializable> { ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target); } + private void sortProvisionList() { + Collections.sort(resourceTO.getProvisions(), new Comparator<ProvisionTO>() { + + @Override + public int compare(final ProvisionTO o1, final ProvisionTO o2) { + return new AnyTypeRestClient.AnyTypeKeyComparator().compare(o1.getAnyType(), o2.getAnyType()); + } + }); + } + @Override public void onEvent(final IEvent<?> event) { if (event.getPayload() instanceof AjaxWizard.NewItemActionEvent) {