Lior Vernia has uploaded a new change for review.

Change subject: webadmin: Render vNIC Profile tabs columns sortable
......................................................................

webadmin: Render vNIC Profile tabs columns sortable

Since the main tab doesn't currently support server-side sorting, both
were implemented as client-side sorting.

Change-Id: Ib9b6d41a5987be65e47ce90b4c7acbadfba6e9d1
Signed-off-by: Lior Vernia <[email protected]>
---
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/VnicProfileComparator.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkProfileListModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/profiles/VnicProfileListModel.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVnicProfileView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkProfileView.java
5 files changed, 109 insertions(+), 30 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/90/28290/1

diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/VnicProfileComparator.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/VnicProfileComparator.java
new file mode 100644
index 0000000..4680c52
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/VnicProfileComparator.java
@@ -0,0 +1,80 @@
+package org.ovirt.engine.ui.uicommonweb.comparators;
+
+import java.util.Comparator;
+
+import 
org.ovirt.engine.core.common.businessentities.comparators.LexoNumericComparator;
+import org.ovirt.engine.core.common.businessentities.network.VnicProfileView;
+
+public class VnicProfileComparator {
+
+    public static class ByName implements Comparator<VnicProfileView> {
+
+        private LexoNumericComparator lexoNumeric = new 
LexoNumericComparator();
+
+        @Override
+        public int compare(VnicProfileView o1, VnicProfileView o2) {
+            return lexoNumeric.compare(o1.getName(), o2.getName());
+        }
+    }
+
+    public static class ByDescription implements Comparator<VnicProfileView> {
+
+        private LexoNumericComparator lexoNumeric = new 
LexoNumericComparator();
+
+        @Override
+        public int compare(VnicProfileView o1, VnicProfileView o2) {
+            return lexoNumeric.compare(o1.getDescription(), 
o2.getDescription());
+        }
+    }
+
+    public static class ByNetwork implements Comparator<VnicProfileView> {
+
+        private LexoNumericComparator lexoNumeric = new 
LexoNumericComparator();
+
+        @Override
+        public int compare(VnicProfileView o1, VnicProfileView o2) {
+            return lexoNumeric.compare(o1.getNetworkName(), 
o2.getNetworkName());
+        }
+    }
+
+    public static class ByDataCenter implements Comparator<VnicProfileView> {
+
+        private LexoNumericComparator lexoNumeric = new 
LexoNumericComparator();
+
+        @Override
+        public int compare(VnicProfileView o1, VnicProfileView o2) {
+            return lexoNumeric.compare(o1.getDataCenterName(), 
o2.getDataCenterName());
+        }
+    }
+
+    public static class ByVersion implements Comparator<VnicProfileView> {
+
+        @Override
+        public int compare(VnicProfileView o1, VnicProfileView o2) {
+            return 
o1.getCompatibilityVersion().compareTo(o2.getCompatibilityVersion());
+        }
+    }
+
+    public static class ByQos implements Comparator<VnicProfileView> {
+
+        private LexoNumericComparator lexoNumeric = new 
LexoNumericComparator();
+
+        @Override
+        public int compare(VnicProfileView o1, VnicProfileView o2) {
+            return lexoNumeric.compare(o1.getNetworkQosName(), 
o2.getNetworkQosName());
+        }
+    }
+
+    public static class ByPortMirroring implements Comparator<VnicProfileView> 
{
+
+        @Override
+        public int compare(VnicProfileView o1, VnicProfileView o2) {
+            if (o1.isPortMirroring() == o2.isPortMirroring()) {
+                return 0;
+            } else {
+                return o1.isPortMirroring() ? 1 : -1;
+            }
+        }
+    }
+
+}
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkProfileListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkProfileListModel.java
index 44691f5..17b16ba 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkProfileListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkProfileListModel.java
@@ -2,16 +2,13 @@
 
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 import org.ovirt.engine.core.common.businessentities.network.Network;
 import org.ovirt.engine.core.common.businessentities.network.NetworkView;
 import org.ovirt.engine.core.common.businessentities.network.VnicProfileView;
 import org.ovirt.engine.ui.frontend.AsyncQuery;
 import org.ovirt.engine.ui.frontend.INewAsyncCallback;
-import org.ovirt.engine.ui.uicommonweb.Linq;
 import org.ovirt.engine.ui.uicommonweb.UICommand;
+import org.ovirt.engine.ui.uicommonweb.comparators.VnicProfileComparator;
 import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider;
 import org.ovirt.engine.ui.uicommonweb.help.HelpTag;
 import org.ovirt.engine.ui.uicommonweb.models.SearchableListModel;
@@ -22,7 +19,6 @@
 import org.ovirt.engine.ui.uicompat.ConstantsManager;
 import org.ovirt.engine.ui.uicompat.PropertyChangedEventArgs;
 
-@SuppressWarnings("unused")
 public class NetworkProfileListModel extends SearchableListModel
 {
     private UICommand newCommand;
@@ -33,6 +29,7 @@
         
setTitle(ConstantsManager.getInstance().getConstants().vnicProfilesTitle());
         setHelpTag(HelpTag.profiles);
         setHashName("profiles"); //$NON-NLS-1$
+        setComparator(new VnicProfileComparator.ByName());
 
         setNewCommand(new UICommand("New", this)); //$NON-NLS-1$
         setEditCommand(new UICommand("Edit", this)); //$NON-NLS-1$
@@ -149,7 +146,7 @@
         asyncQuery.asyncCallback = new INewAsyncCallback() {
             @Override
             public void onSuccess(Object model, Object returnValue) {
-                NetworkProfileListModel.this.setItems((List<VnicProfileView>) 
returnValue);
+                setItems((Collection<VnicProfileView>) returnValue);
             }
         };
         AsyncDataProvider.getVnicProfilesByNetworkId(asyncQuery, 
getEntity().getId());
@@ -182,14 +179,6 @@
     protected void selectedItemsChanged() {
         super.selectedItemsChanged();
         updateActionAvailability();
-    }
-
-    @Override
-    public void setItems(Collection value) {
-        if (value != null) {
-            Collections.sort((List<VnicProfileView>) value, new 
Linq.VnicProfileViewComparator());
-        }
-        super.setItems(value);
     }
 
     @Override
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/profiles/VnicProfileListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/profiles/VnicProfileListModel.java
index c075987..0f2dbc8 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/profiles/VnicProfileListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/profiles/VnicProfileListModel.java
@@ -2,8 +2,6 @@
 
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
 
 import org.ovirt.engine.core.common.businessentities.StoragePool;
@@ -19,6 +17,7 @@
 import org.ovirt.engine.ui.frontend.INewAsyncCallback;
 import org.ovirt.engine.ui.uicommonweb.Linq;
 import org.ovirt.engine.ui.uicommonweb.UICommand;
+import org.ovirt.engine.ui.uicommonweb.comparators.VnicProfileComparator;
 import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider;
 import org.ovirt.engine.ui.uicommonweb.help.HelpTag;
 import org.ovirt.engine.ui.uicommonweb.models.CommonModel;
@@ -45,6 +44,7 @@
         
setTitle(ConstantsManager.getInstance().getConstants().vnicProfilesTitle());
         setHelpTag(HelpTag.vnicProfiles);
         setHashName("vnicProfiles"); //$NON-NLS-1$
+        setComparator(new VnicProfileComparator.ByName());
 
         setDefaultSearchString("VnicProfile:"); //$NON-NLS-1$
         setSearchString(getDefaultSearchString());
@@ -295,14 +295,6 @@
     @Override
     public VnicProfileView getEntity() {
         return (VnicProfileView) super.getEntity();
-    }
-
-    @Override
-    public void setItems(Collection value) {
-        if (value != null) {
-            Collections.sort((List<VnicProfileView>) value, new 
Linq.VnicProfileViewComparator());
-        }
-        super.setItems(value);
     }
 
     @Override
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVnicProfileView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVnicProfileView.java
index 40829d1..c9e9e32 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVnicProfileView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabVnicProfileView.java
@@ -6,6 +6,7 @@
 import org.ovirt.engine.ui.common.widget.table.column.BooleanColumn;
 import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip;
 import org.ovirt.engine.ui.uicommonweb.UICommand;
+import org.ovirt.engine.ui.uicommonweb.comparators.VnicProfileComparator;
 import org.ovirt.engine.ui.uicommonweb.models.profiles.VnicProfileListModel;
 import org.ovirt.engine.ui.webadmin.ApplicationConstants;
 import org.ovirt.engine.ui.webadmin.ApplicationResources;
@@ -45,6 +46,7 @@
                 return object.getName();
             }
         };
+        nameColumn.makeSortable(new VnicProfileComparator.ByName());
         getTable().addColumn(nameColumn, constants.nameVnicProfile(), 
"200px"); //$NON-NLS-1$
 
         TextColumnWithTooltip<VnicProfileView> networkColumn = new 
TextColumnWithTooltip<VnicProfileView>() {
@@ -53,6 +55,7 @@
                 return object.getNetworkName();
             }
         };
+        networkColumn.makeSortable(new VnicProfileComparator.ByNetwork());
         getTable().addColumn(networkColumn, constants.networkVnicProfile(), 
"200px"); //$NON-NLS-1$
 
         TextColumnWithTooltip<VnicProfileView> dcColumn = new 
TextColumnWithTooltip<VnicProfileView>() {
@@ -61,6 +64,7 @@
                 return object.getDataCenterName();
             }
         };
+        dcColumn.makeSortable(new VnicProfileComparator.ByDataCenter());
         getTable().addColumn(dcColumn, constants.dcVnicProfile(), "200px"); 
//$NON-NLS-1$
 
         TextColumnWithTooltip<VnicProfileView> compatibilityVersionColumn =
@@ -70,20 +74,17 @@
                         return object.getCompatibilityVersion().toString();
                     }
                 };
+        compatibilityVersionColumn.makeSortable(new 
VnicProfileComparator.ByVersion());
         getTable().addColumn(compatibilityVersionColumn, 
constants.compatibilityVersionVnicProfile(), "200px"); //$NON-NLS-1$
+
         TextColumnWithTooltip<VnicProfileView> qosColumn = new 
TextColumnWithTooltip<VnicProfileView>() {
             @Override
             public String getValue(VnicProfileView object) {
                 return object.getNetworkQosName();
             }
         };
+        qosColumn.makeSortable(new VnicProfileComparator.ByQos());
         getTable().addColumn(qosColumn, constants.qosNameVnicProfile(), 
"200px"); //$NON-NLS-1$
-        TextColumnWithTooltip<VnicProfileView> descriptionColumn = new 
TextColumnWithTooltip<VnicProfileView>() {
-            @Override
-            public String getValue(VnicProfileView object) {
-                return object.getDescription();
-            }
-        };
 
         BooleanColumn<VnicProfileView> portMirroringColumn =
                 new 
BooleanColumn<VnicProfileView>(constants.portMirroringEnabled()) {
@@ -92,8 +93,16 @@
                         return object.isPortMirroring();
                     }
                 };
+        portMirroringColumn.makeSortable(new 
VnicProfileComparator.ByPortMirroring());
         getTable().addColumnWithHtmlHeader(portMirroringColumn, 
constants.portMirroringVnicProfile(), "85px"); //$NON-NLS-1$
 
+        TextColumnWithTooltip<VnicProfileView> descriptionColumn = new 
TextColumnWithTooltip<VnicProfileView>() {
+            @Override
+            public String getValue(VnicProfileView object) {
+                return object.getDescription();
+            }
+        };
+        descriptionColumn.makeSortable(new 
VnicProfileComparator.ByDescription());
         getTable().addColumn(descriptionColumn, 
constants.descriptionVnicProfile(), "400px"); //$NON-NLS-1$
 
         getTable().addActionButton(new 
WebAdminButtonDefinition<VnicProfileView>(constants.newVnicProfile()) {
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkProfileView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkProfileView.java
index 9a113b9..e7fad1d 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkProfileView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkProfileView.java
@@ -6,6 +6,7 @@
 import org.ovirt.engine.ui.common.widget.table.column.BooleanColumn;
 import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip;
 import org.ovirt.engine.ui.uicommonweb.UICommand;
+import org.ovirt.engine.ui.uicommonweb.comparators.VnicProfileComparator;
 import org.ovirt.engine.ui.uicommonweb.models.networks.NetworkListModel;
 import org.ovirt.engine.ui.uicommonweb.models.networks.NetworkProfileListModel;
 import org.ovirt.engine.ui.webadmin.ApplicationConstants;
@@ -36,6 +37,7 @@
                         return object.getName();
                     }
                 };
+        nameColumn.makeSortable(new VnicProfileComparator.ByName());
         getTable().addColumn(nameColumn, constants.nameVnicProfile(), 
"400px"); //$NON-NLS-1$
 
         TextColumnWithTooltip<VnicProfileView> networkColumn = new 
TextColumnWithTooltip<VnicProfileView>() {
@@ -44,6 +46,7 @@
                 return object.getNetworkName();
             }
         };
+        networkColumn.makeSortable(new VnicProfileComparator.ByNetwork());
         getTable().addColumn(networkColumn, constants.networkVnicProfile(), 
"200px"); //$NON-NLS-1$
 
         TextColumnWithTooltip<VnicProfileView> dcColumn = new 
TextColumnWithTooltip<VnicProfileView>() {
@@ -52,6 +55,7 @@
                 return object.getDataCenterName();
             }
         };
+        dcColumn.makeSortable(new VnicProfileComparator.ByDataCenter());
         getTable().addColumn(dcColumn, constants.dcVnicProfile(), "200px"); 
//$NON-NLS-1$
 
         TextColumnWithTooltip<VnicProfileView> compatibilityVersionColumn =
@@ -61,13 +65,16 @@
                         return object.getCompatibilityVersion().toString();
                     }
                 };
+        compatibilityVersionColumn.makeSortable(new 
VnicProfileComparator.ByVersion());
         getTable().addColumn(compatibilityVersionColumn, 
constants.compatibilityVersionVnicProfile(), "200px"); //$NON-NLS-1$
+
         TextColumnWithTooltip<VnicProfileView> qosColumn = new 
TextColumnWithTooltip<VnicProfileView>() {
             @Override
             public String getValue(VnicProfileView object) {
                 return object.getNetworkQosName();
             }
         };
+        qosColumn.makeSortable(new VnicProfileComparator.ByQos());
         getTable().addColumn(qosColumn, constants.qosNameVnicProfile(), 
"200px"); //$NON-NLS-1$
 
         BooleanColumn<VnicProfileView> portMirroringColumn =
@@ -77,6 +84,7 @@
                         return object.isPortMirroring();
                     }
                 };
+        portMirroringColumn.makeSortable(new 
VnicProfileComparator.ByPortMirroring());
         getTable().addColumnWithHtmlHeader(portMirroringColumn, 
constants.portMirroringVnicProfile(), "85px"); //$NON-NLS-1$
 
         TextColumnWithTooltip<VnicProfileView> descriptionColumn =
@@ -86,6 +94,7 @@
                         return object.getDescription();
                     }
                 };
+        descriptionColumn.makeSortable(new 
VnicProfileComparator.ByDescription());
         getTable().addColumn(descriptionColumn, 
constants.descriptionVnicProfile(), "400px"); //$NON-NLS-1$
 
         getTable().addActionButton(new 
WebAdminButtonDefinition<VnicProfileView>(constants.newNetworkProfile()) {


-- 
To view, visit http://gerrit.ovirt.org/28290
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib9b6d41a5987be65e47ce90b4c7acbadfba6e9d1
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Lior Vernia <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to