Greg Sheremeta has uploaded a new change for review. Change subject: userportal, webadmin: sort login domain select box ......................................................................
userportal, webadmin: sort login domain select box Changed the login domain select box to be sorted alphabetically, with the special case of "internal" always appearing at the bottom. Change-Id: Ia7e9f80b47a5b65924d7f78d7f658cf5db478ed1 Bug-Url: https://bugzilla.redhat.com/785555 Signed-off-by: Greg Sheremeta <gsher...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetDomainListQuery.java A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/LoginDomainComparator.java A backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/LoginDomainComparatorTest.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/LoginModel.java 4 files changed, 120 insertions(+), 2 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/27/18727/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetDomainListQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetDomainListQuery.java index c70ed23..cae89a6 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetDomainListQuery.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetDomainListQuery.java @@ -4,6 +4,8 @@ import java.util.List; import org.ovirt.engine.core.bll.adbroker.LdapBrokerUtils; +import org.ovirt.engine.core.common.config.Config; +import org.ovirt.engine.core.common.config.ConfigValues; import org.ovirt.engine.core.common.queries.GetDomainListParameters; import org.ovirt.engine.core.common.queries.VdcQueryParametersBase; @@ -20,7 +22,8 @@ filterInternalDomain = ((GetDomainListParameters)getParameters()).getFilterInternalDomain(); } List<String> domains = LdapBrokerUtils.getDomainsList(filterInternalDomain); - Collections.sort(domains); + String internalDomainName = Config.<String>GetValue(ConfigValues.AdminDomain); + Collections.sort(domains, new LoginDomainComparator(internalDomainName)); getQueryReturnValue().setReturnValue(domains); } } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/LoginDomainComparator.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/LoginDomainComparator.java new file mode 100644 index 0000000..7f2f52d --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/LoginDomainComparator.java @@ -0,0 +1,27 @@ +package org.ovirt.engine.core.bll; + +import java.util.Comparator; + +/** + * Used to sort the login domain list on the login page. Business rule is sort alphabetically, + * but put "internal" at the end. + */ +public class LoginDomainComparator implements Comparator<String> { + + private String internal; + + public LoginDomainComparator(String internal) { + this.internal = internal; + } + + @Override + public int compare(String a, String b) { + if (a == b) return 0; + if (a == null) return -1; + if (b == null) return 1; + if (a.equals(internal)) return 1; + if (b.equals(internal)) return -1; + return a.compareTo(b); + } + +} diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/LoginDomainComparatorTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/LoginDomainComparatorTest.java new file mode 100644 index 0000000..6cdf81b --- /dev/null +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/LoginDomainComparatorTest.java @@ -0,0 +1,89 @@ +package org.ovirt.engine.core.bll; + +import static org.junit.Assert.assertEquals; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.runners.MockitoJUnitRunner; + +@RunWith(MockitoJUnitRunner.class) +public class LoginDomainComparatorTest { + + @Test + public void testCompareWithoutInternal() { + List<String> list = new ArrayList<String>(); + list.add("a1"); + list.add("b1"); + list.add("c1"); + list.add("d1"); + list.add("a2"); + Collections.sort(list, new LoginDomainComparator("internal")); + assertEquals("a1", list.get(0)); + assertEquals("a2", list.get(1)); + assertEquals("b1", list.get(2)); + assertEquals("c1", list.get(3)); + assertEquals("d1", list.get(4)); + } + + @Test + public void testCompareWithInternal() { + List<String> list = new ArrayList<String>(); + list.add("a1"); + list.add("b1"); + list.add("internal"); + list.add("c1"); + list.add("d1"); + list.add("a2"); + Collections.sort(list, new LoginDomainComparator("internal")); + assertEquals("a1", list.get(0)); + assertEquals("a2", list.get(1)); + assertEquals("b1", list.get(2)); + assertEquals("c1", list.get(3)); + assertEquals("d1", list.get(4)); + assertEquals("internal", list.get(5)); + } + + @Test + public void testCompareWithTwoInternal() { + List<String> list = new ArrayList<String>(); + list.add("a1"); + list.add("b1"); + list.add("internal"); + list.add("c1"); + list.add("d1"); + list.add("internal"); + list.add("a2"); + Collections.sort(list, new LoginDomainComparator("internal")); + assertEquals("a1", list.get(0)); + assertEquals("a2", list.get(1)); + assertEquals("b1", list.get(2)); + assertEquals("c1", list.get(3)); + assertEquals("d1", list.get(4)); + assertEquals("internal", list.get(5)); + assertEquals("internal", list.get(6)); + } + + @Test + public void testCompareWithNulls() { + List<String> list = new ArrayList<String>(); + list.add(null); + list.add(null); + list.add("internal"); + list.add("c1"); + list.add("d1"); + list.add("internal"); + list.add("a2"); + Collections.sort(list, new LoginDomainComparator("internal")); + assertEquals(null, list.get(0)); + assertEquals(null, list.get(1)); + assertEquals("a2", list.get(2)); + assertEquals("c1", list.get(3)); + assertEquals("d1", list.get(4)); + assertEquals("internal", list.get(5)); + assertEquals("internal", list.get(6)); + } +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/LoginModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/LoginModel.java index 5222d7c..5980e68 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/LoginModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/LoginModel.java @@ -188,7 +188,6 @@ } List<String> domains = (List<String>) ReturnValue; - loginModel.getDomain().setSelectedItem(Linq.firstOrDefault(domains)); loginModel.getDomain().setItems(domains); } -- To view, visit http://gerrit.ovirt.org/18727 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia7e9f80b47a5b65924d7f78d7f658cf5db478ed1 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Greg Sheremeta <gsher...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches