Alexander Wels has uploaded a new change for review.

Change subject: webadmin: cluster sorting
......................................................................

webadmin: cluster sorting

- Implemented sorting in cluster main tab
- Implemented sorting in cluster sub tabs.
- Fixed bug that would cause invalid SQL to be generated
  when sorting.
- Fixed bug that caused sorting to be ignored when
  updating hosts and VMs for clusters.

Change-Id: Ib7b2d9938a7e9b7e32238a284c0ddca6568b3bdc
Signed-off-by: Alexander Wels <[email protected]>
---
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsGroupDAODbFacadeImpl.java
M 
backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/ClusterConditionFieldAutoCompleter.java
M 
backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SearchObjectAutoCompleter.java
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/AffinityGroupComparator.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/NetworkComparator.java
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/VDSComparator.java
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/VMComparator.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterListModel.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/AbstractSubTabAffinityGroupsView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabClusterView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/cluster/SubTabClusterHostView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/cluster/SubTabClusterNetworkView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/cluster/SubTabClusterVmView.java
13 files changed, 231 insertions(+), 12 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/61/28361/1

diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsGroupDAODbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsGroupDAODbFacadeImpl.java
index fa4e9ff..35f80f3 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsGroupDAODbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VdsGroupDAODbFacadeImpl.java
@@ -4,7 +4,6 @@
 import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.SQLException;
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.List;
@@ -187,6 +186,7 @@
                 parameterSource);
     }
 
+    @Override
     public List<VDSGroup> getTrustedClusters() {
         MapSqlParameterSource parameterSource = 
getCustomMapSqlParameterSource()
                 .addValue("trusted_service", true);
@@ -327,7 +327,9 @@
         for (VDSGroupHostsAndVMs groupDetail : dataList) {
             
groupsById.get(groupDetail.getVdsGroupId()).setGroupHostsAndVms(groupDetail);
         }
-        return new ArrayList<VDSGroup>(groupsById.values());
+        //The VDS groups have been updated, but we want to keep the order, so 
return the original list which is
+        //in the right order.
+        return vdsGroups;
 
     }
 }
diff --git 
a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/ClusterConditionFieldAutoCompleter.java
 
b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/ClusterConditionFieldAutoCompleter.java
index 76a67fd..70a5452 100644
--- 
a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/ClusterConditionFieldAutoCompleter.java
+++ 
b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/ClusterConditionFieldAutoCompleter.java
@@ -3,24 +3,27 @@
 import org.ovirt.engine.core.common.businessentities.ArchitectureType;
 
 public class ClusterConditionFieldAutoCompleter extends 
BaseConditionFieldAutoCompleter {
+    public static final String NAME = "NAME";
+    public static final String DESCRIPTION = "DESCRIPTION";
+
     public ClusterConditionFieldAutoCompleter() {
         // Building the basic vervs Dict
-        mVerbs.add("NAME");
-        mVerbs.add("DESCRIPTION");
+        mVerbs.add(NAME);
+        mVerbs.add(DESCRIPTION);
         mVerbs.add("COMMENT");
         mVerbs.add("ARCHITECTURE");
 
         // Building the autoCompletion Dict
         buildCompletions();
         // Building the types dict
-        getTypeDictionary().put("NAME", String.class);
-        getTypeDictionary().put("DESCRIPTION", String.class);
+        getTypeDictionary().put(NAME, String.class);
+        getTypeDictionary().put(DESCRIPTION, String.class);
         getTypeDictionary().put("COMMENT", String.class);
         getTypeDictionary().put("ARCHITECTURE", ArchitectureType.class);
 
         // building the ColumnName Dict
-        columnNameDict.put("NAME", "name");
-        columnNameDict.put("DESCRIPTION", "description");
+        columnNameDict.put(NAME, "name");
+        columnNameDict.put(DESCRIPTION, "description");
         columnNameDict.put("COMMENT", "free_text_comment");
         columnNameDict.put("ARCHITECTURE", "architecture");
 
diff --git 
a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SearchObjectAutoCompleter.java
 
b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SearchObjectAutoCompleter.java
index 4ac5e05..e0d9926 100644
--- 
a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SearchObjectAutoCompleter.java
+++ 
b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SearchObjectAutoCompleter.java
@@ -245,7 +245,7 @@
                             "vds_groups_view",
                             "vds_groups_storage_domain",
                             "vds_group_id",
-                            "name ASC "));
+                            "name ASC"));
                     put(SearchObjects.QUOTA_OBJ_NAME, new EntitySearchInfo(new 
QuotaConditionFieldAutoCompleter(),
                             new QuotaConditionFieldAutoCompleter(),
                             "quota_view",
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/AffinityGroupComparator.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/AffinityGroupComparator.java
new file mode 100644
index 0000000..cccaee7
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/AffinityGroupComparator.java
@@ -0,0 +1,52 @@
+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.scheduling.AffinityGroup;
+
+public class AffinityGroupComparator {
+    private static final LexoNumericComparator lexoNumeric = new 
LexoNumericComparator();
+
+    /**
+     * Comparator for the name field in {@code AffinityGroup}.
+     */
+    public static final Comparator<AffinityGroup> NAME = new 
Comparator<AffinityGroup>() {
+        @Override
+        public int compare(AffinityGroup group1, AffinityGroup group2) {
+            return lexoNumeric.compare(group1.getName(), group2.getName());
+        }
+    };
+
+    /**
+     * Comparator for the description field in {@code AffinityGroup}.
+     */
+    public static final Comparator<AffinityGroup> DESCRIPTION = new 
Comparator<AffinityGroup>() {
+        @Override
+        public int compare(AffinityGroup group1, AffinityGroup group2) {
+            return lexoNumeric.compare(group1.getDescription(), 
group2.getDescription());
+        }
+    };
+
+    /**
+     * Comparator for the positive field in {@code AffinityGroup}.
+     */
+    public static final Comparator<AffinityGroup> POLARITY = new 
Comparator<AffinityGroup>() {
+        @Override
+        public int compare(AffinityGroup group1, AffinityGroup group2) {
+            return 
((Boolean)group1.isPositive()).compareTo(group2.isPositive());
+        }
+    };
+
+    /**
+     * Comparator for the enforcing field in {@code AffinityGroup}.
+     */
+    public static final Comparator<AffinityGroup> ENFORCING = new 
Comparator<AffinityGroup>() {
+        @Override
+        public int compare(AffinityGroup group1, AffinityGroup group2) {
+            return 
((Boolean)group1.isEnforcing()).compareTo(group2.isEnforcing());
+        }
+    };
+
+    //TODO sort on members, which is a list of strings, comma separated?
+}
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/NetworkComparator.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/NetworkComparator.java
index 4587655..b6e6142 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/NetworkComparator.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/NetworkComparator.java
@@ -4,15 +4,40 @@
 
 import 
org.ovirt.engine.core.common.businessentities.comparators.LexoNumericComparator;
 import org.ovirt.engine.core.common.businessentities.network.Network;
+import org.ovirt.engine.ui.uicompat.EnumTranslator;
 
 public class NetworkComparator {
+    private static final LexoNumericComparator lexoNumeric = new 
LexoNumericComparator();
+
     /**
      * Comparator for the description field in {@code Network}.
      */
     public static final Comparator<Network> DESCRIPTION = new 
Comparator<Network>() {
         @Override
         public int compare(Network network1, Network network2) {
-            return new 
LexoNumericComparator().compare(network1.getDescription(), 
network2.getDescription());
+            return lexoNumeric.compare(network1.getDescription(), 
network2.getDescription());
         }
     };
+
+    /**
+     * Comparator for the name field in {@code Network}.
+     */
+    public static final Comparator<Network> NAME = new Comparator<Network>() {
+        @Override
+        public int compare(Network network1, Network network2) {
+            return lexoNumeric.compare(network1.getName(), network2.getName());
+        }
+    };
+
+    /**
+     * Comparator for the status field in {@code Network}.
+     */
+    public static final Comparator<Network> STATUS = new Comparator<Network>() 
{
+        @Override
+        public int compare(Network network1, Network network2) {
+            return 
lexoNumeric.compare(EnumTranslator.createAndTranslate(network1.getCluster().getStatus()),
+                    
EnumTranslator.createAndTranslate(network2.getCluster().getStatus()));
+        }
+    };
+
 }
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/VDSComparator.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/VDSComparator.java
new file mode 100644
index 0000000..03c3b5f
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/VDSComparator.java
@@ -0,0 +1,65 @@
+package org.ovirt.engine.ui.uicommonweb.comparators;
+
+import java.util.Comparator;
+
+import org.ovirt.engine.core.common.businessentities.VDS;
+import 
org.ovirt.engine.core.common.businessentities.comparators.LexoNumericComparator;
+import org.ovirt.engine.ui.uicompat.EnumTranslator;
+
+public class VDSComparator {
+    private static final LexoNumericComparator lexoNumeric = new 
LexoNumericComparator();
+
+    /**
+     * Comparator for the name field in {@code VDS}.
+     */
+    public static final Comparator<VDS> NAME = new Comparator<VDS>() {
+        @Override
+        public int compare(VDS host1, VDS host2) {
+            return lexoNumeric.compare(host1.getName(), host2.getName());
+        }
+    };
+
+    /**
+     * Comparator for the host name field in {@code VDS}.
+     */
+    public static final Comparator<VDS> HOST = new Comparator<VDS>() {
+        @Override
+        public int compare(VDS host1, VDS host2) {
+            return lexoNumeric.compare(host1.getHostName(), 
host2.getHostName());
+        }
+    };
+
+    /**
+     * Comparator for the status name field in {@code VDS}.
+     */
+    public static final Comparator<VDS> STATUS = new Comparator<VDS>() {
+        @Override
+        public int compare(VDS host1, VDS host2) {
+            return 
lexoNumeric.compare(EnumTranslator.createAndTranslate(host1.getStatus()),
+                    EnumTranslator.createAndTranslate(host2.getStatus()));
+        }
+    };
+
+    /**
+     * Comparator for the number of active VMs field in {@code VDS}.
+     */
+    public static final Comparator<VDS> LOAD = new Comparator<VDS>() {
+        @Override
+        public int compare(VDS host1, VDS host2) {
+            Integer numOfActiveVMs1 = host1.getVmActive() != null ? 
host1.getVmActive() : 0;
+            Integer numOfActiveVMs2 = host2.getVmActive() != null ? 
host2.getVmActive() : 0;
+            return numOfActiveVMs1.compareTo(numOfActiveVMs2);
+        }
+    };
+
+    /**
+     * Comparator for the console address field in {@code VDS}.
+     */
+    public static final Comparator<VDS> CONSOLE_OVERRIDE = new 
Comparator<VDS>() {
+        @Override
+        public int compare(VDS host1, VDS host2) {
+            return lexoNumeric.compare(host1.getConsoleAddress(), 
host2.getConsoleAddress());
+        }
+    };
+
+}
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/VMComparator.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/VMComparator.java
new file mode 100644
index 0000000..6f25113
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/VMComparator.java
@@ -0,0 +1,43 @@
+package org.ovirt.engine.ui.uicommonweb.comparators;
+
+import java.util.Comparator;
+
+import org.ovirt.engine.core.common.businessentities.VM;
+import 
org.ovirt.engine.core.common.businessentities.comparators.LexoNumericComparator;
+import org.ovirt.engine.ui.uicompat.EnumTranslator;
+
+public class VMComparator {
+    private static final LexoNumericComparator lexoNumeric = new 
LexoNumericComparator();
+
+    /**
+     * Comparator for the name field in {@code VM}.
+     */
+    public static final Comparator<VM> NAME = new Comparator<VM>() {
+        @Override
+        public int compare(VM vm1, VM vm2) {
+            return lexoNumeric.compare(vm1.getName(), vm2.getName());
+        }
+    };
+
+    /**
+     * Comparator for the status field in {@code VM}.
+     */
+    public static final Comparator<VM> STATUS = new Comparator<VM>() {
+        @Override
+        public int compare(VM vm1, VM vm2) {
+            return 
lexoNumeric.compare(EnumTranslator.createAndTranslate(vm1.getStatus()),
+                    EnumTranslator.createAndTranslate(vm2.getStatus()));
+        }
+    };
+
+    /**
+     * Comparator for the name field in {@code VM}.
+     */
+    public static final Comparator<VM> UPTIME = new Comparator<VM>() {
+        @Override
+        public int compare(VM vm1, VM vm2) {
+            //Convert to long so there is drift due to comparing doubles.
+            return 
((Long)vm1.getRoundedElapsedTime().longValue()).compareTo(vm2.getRoundedElapsedTime().longValue());
+        }
+    };
+}
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterListModel.java
index 0a69594..35818c4 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterListModel.java
@@ -286,11 +286,17 @@
     @Override
     protected void syncSearch()
     {
-        SearchParameters tempVar = new SearchParameters(getSearchString(), 
SearchType.Cluster, isCaseSensitiveSearch());
+        SearchParameters tempVar = new 
SearchParameters(applySortOptions(getSearchString()), SearchType.Cluster,
+                isCaseSensitiveSearch());
         tempVar.setMaxCount(getSearchPageSize());
         super.syncSearch(VdcQueryType.Search, tempVar);
     }
 
+    @Override
+    public boolean supportsServerSideSorting() {
+        return true;
+    }
+
     public void newEntity()
     {
         if (getWindow() != null)
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/AbstractSubTabAffinityGroupsView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/AbstractSubTabAffinityGroupsView.java
index f0bc0ce..526ddd6 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/AbstractSubTabAffinityGroupsView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/AbstractSubTabAffinityGroupsView.java
@@ -7,6 +7,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.AffinityGroupComparator;
 import org.ovirt.engine.ui.uicommonweb.models.ListWithDetailsModel;
 import 
org.ovirt.engine.ui.uicommonweb.models.configure.scheduling.affinity_groups.list.AffinityGroupListModel;
 import org.ovirt.engine.ui.webadmin.ApplicationConstants;
@@ -32,6 +33,7 @@
                 return object.getName();
             }
         };
+        nameColumn.makeSortable(AffinityGroupComparator.NAME);
         getTable().addColumn(nameColumn, constants.nameAffinityGroup(), 
"150px"); //$NON-NLS-1$
 
         TextColumnWithTooltip<AffinityGroup> descColumn = new 
TextColumnWithTooltip<AffinityGroup>() {
@@ -40,6 +42,7 @@
                 return object.getDescription();
             }
         };
+        descColumn.makeSortable(AffinityGroupComparator.DESCRIPTION);
         getTable().addColumn(descColumn, constants.descriptionAffinityGroup(), 
"150px"); //$NON-NLS-1$
 
         BooleanColumn<AffinityGroup> polarityColumn =
@@ -50,6 +53,7 @@
                 return object.isPositive();
             }
         };
+        polarityColumn.makeSortable(AffinityGroupComparator.POLARITY);
         getTable().addColumn(polarityColumn, 
constants.polarityAffinityGroup(), "100px"); //$NON-NLS-1$
 
         BooleanColumn<AffinityGroup> enforceColumn =
@@ -60,6 +64,7 @@
                         return object.isEnforcing();
                     }
                 };
+        enforceColumn.makeSortable(AffinityGroupComparator.ENFORCING);
         getTable().addColumn(enforceColumn, constants.enforceAffinityGroup(), 
"100px"); //$NON-NLS-1$
 
         getTable().addColumn(new TextColumnWithTooltip<AffinityGroup>() {
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabClusterView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabClusterView.java
index 079d747..1d3677f 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabClusterView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabClusterView.java
@@ -4,6 +4,7 @@
 
 import org.ovirt.engine.core.common.businessentities.VDSGroup;
 import org.ovirt.engine.core.common.mode.ApplicationMode;
+import org.ovirt.engine.core.searchbackend.ClusterConditionFieldAutoCompleter;
 import org.ovirt.engine.ui.common.idhandler.ElementIdHandler;
 import org.ovirt.engine.ui.common.uicommon.model.MainModelProvider;
 import org.ovirt.engine.ui.common.widget.action.ActionButtonDefinition;
@@ -25,7 +26,8 @@
 import com.google.gwt.core.client.GWT;
 import com.google.inject.Inject;
 
-public class MainTabClusterView extends 
AbstractMainTabWithDetailsTableView<VDSGroup, ClusterListModel> implements 
MainTabClusterPresenter.ViewDef {
+public class MainTabClusterView extends 
AbstractMainTabWithDetailsTableView<VDSGroup, ClusterListModel> implements
+    MainTabClusterPresenter.ViewDef {
 
     interface ViewIdHandler extends ElementIdHandler<MainTabClusterView> {
         ViewIdHandler idHandler = GWT.create(ViewIdHandler.class);
@@ -49,6 +51,7 @@
                 return object.getName();
             }
         };
+        nameColumn.makeSortable(ClusterConditionFieldAutoCompleter.NAME);
         getTable().addColumn(nameColumn, constants.nameCluster(), "150px"); 
//$NON-NLS-1$
 
         CommentColumn<VDSGroup> commentColumn = new CommentColumn<VDSGroup>();
@@ -78,6 +81,7 @@
                 return object.getdescription();
             }
         };
+        
descColumn.makeSortable(ClusterConditionFieldAutoCompleter.DESCRIPTION);
         getTable().addColumn(descColumn, constants.descriptionCluster(), 
"300px"); //$NON-NLS-1$
 
         if (ApplicationModeHelper.getUiMode() != ApplicationMode.GlusterOnly) {
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/cluster/SubTabClusterHostView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/cluster/SubTabClusterHostView.java
index f649b0f..dfe00cf 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/cluster/SubTabClusterHostView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/cluster/SubTabClusterHostView.java
@@ -10,6 +10,7 @@
 import org.ovirt.engine.ui.common.widget.table.column.EnumColumn;
 import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip;
 import org.ovirt.engine.ui.uicommonweb.UICommand;
+import org.ovirt.engine.ui.uicommonweb.comparators.VDSComparator;
 import org.ovirt.engine.ui.uicommonweb.models.ApplicationModeHelper;
 import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterHostListModel;
 import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterListModel;
@@ -41,6 +42,7 @@
                 return object.getName();
             }
         };
+        nameColumn.makeSortable(VDSComparator.NAME);
         getTable().addColumn(nameColumn, constants.nameClusterHost(), 
"220px"); //$NON-NLS-1$
 
         TextColumnWithTooltip<VDS> hostColumn = new 
TextColumnWithTooltip<VDS>() {
@@ -49,6 +51,7 @@
                 return object.getHostName();
             }
         };
+        hostColumn.makeSortable(VDSComparator.HOST);
         getTable().addColumn(hostColumn, constants.hostIpClusterHost(), 
"220px"); //$NON-NLS-1$
 
         TextColumnWithTooltip<VDS> statusColumn = new EnumColumn<VDS, 
VDSStatus>() {
@@ -57,6 +60,7 @@
                 return object.getStatus();
             }
         };
+        statusColumn.makeSortable(VDSComparator.STATUS);
         getTable().addColumn(statusColumn, constants.statusClusterHost(), 
"120px"); //$NON-NLS-1$
 
         if (ApplicationModeHelper.isModeSupported(ApplicationMode.VirtOnly)) {
@@ -67,6 +71,7 @@
                     return 
ConstantsManager.getInstance().getMessages().numberOfVmsForHostsLoad(numOfActiveVMs);
                 }
             };
+            loadColumn.makeSortable(VDSComparator.LOAD);
             getTable().addColumn(loadColumn, constants.loadClusterHost(), 
"120px"); //$NON-NLS-1$
         }
 
@@ -78,6 +83,7 @@
                 }
 
             };
+            consoleColumn.makeSortable(VDSComparator.CONSOLE_OVERRIDE);
             getTable().addColumn(consoleColumn, 
constants.overriddenConsoleAddress(), "220px"); //$NON-NLS-1$
         }
 
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/cluster/SubTabClusterNetworkView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/cluster/SubTabClusterNetworkView.java
index 4f350c4..8903625 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/cluster/SubTabClusterNetworkView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/cluster/SubTabClusterNetworkView.java
@@ -15,6 +15,7 @@
 import 
org.ovirt.engine.ui.common.widget.table.column.SafeHtmlWithSafeHtmlTooltipColumn;
 import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip;
 import org.ovirt.engine.ui.uicommonweb.UICommand;
+import org.ovirt.engine.ui.uicommonweb.comparators.NetworkComparator;
 import org.ovirt.engine.ui.uicommonweb.models.ApplicationModeHelper;
 import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterListModel;
 import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterNetworkListModel;
@@ -71,6 +72,7 @@
                 return object.getName();
             }
         };
+        nameColumn.makeSortable(NetworkComparator.NAME);
         getTable().addColumn(nameColumn, constants.nameNetwork(), "400px"); 
//$NON-NLS-1$
 
         TextColumnWithTooltip<Network> statusColumn = new EnumColumn<Network, 
NetworkStatus>() {
@@ -79,6 +81,7 @@
                 return object.getCluster().getStatus();
             }
         };
+        statusColumn.makeSortable(NetworkComparator.STATUS);
         getTable().addColumn(statusColumn, constants.statusNetwork(), 
"100px"); //$NON-NLS-1$
 
         SafeHtmlWithSafeHtmlTooltipColumn<Network> roleColumn =
@@ -131,6 +134,7 @@
                 return object.getDescription();
             }
         };
+        descColumn.makeSortable(NetworkComparator.DESCRIPTION);
         getTable().addColumn(descColumn, constants.descriptionNetwork(), 
"400px"); //$NON-NLS-1$
 
         if (ApplicationModeHelper.isModeSupported(ApplicationMode.VirtOnly)) {
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/cluster/SubTabClusterVmView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/cluster/SubTabClusterVmView.java
index 9c42829..760b118 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/cluster/SubTabClusterVmView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/cluster/SubTabClusterVmView.java
@@ -8,6 +8,7 @@
 import org.ovirt.engine.ui.common.uicommon.model.SearchableDetailModelProvider;
 import org.ovirt.engine.ui.common.widget.table.column.EnumColumn;
 import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip;
+import org.ovirt.engine.ui.uicommonweb.comparators.VMComparator;
 import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterListModel;
 import org.ovirt.engine.ui.uicommonweb.models.clusters.ClusterVmListModel;
 import org.ovirt.engine.ui.webadmin.ApplicationConstants;
@@ -38,6 +39,7 @@
                 return object.getName();
             }
         };
+        nameColumn.makeSortable(VMComparator.NAME);
         getTable().addColumn(nameColumn, constants.nameVm(), "220px"); 
//$NON-NLS-1$
 
         getTable().addColumn(new VmTypeColumn(), constants.empty(), "30px"); 
//$NON-NLS-1$
@@ -48,6 +50,7 @@
                 return object.getStatus();
             }
         };
+        statusColumn.makeSortable(VMComparator.STATUS);
         getTable().addColumn(statusColumn, constants.statusVm(), "220px"); 
//$NON-NLS-1$
 
         TextColumnWithTooltip<VM> uptimeColumn = new UptimeColumn<VM>() {
@@ -56,6 +59,7 @@
                 return object.getRoundedElapsedTime();
             }
         };
+        uptimeColumn.makeSortable(VMComparator.UPTIME);
         getTable().addColumn(uptimeColumn, constants.uptimeVm(), "220px"); 
//$NON-NLS-1$
     }
 


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

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

Reply via email to