Lior Vernia has uploaded a new change for review. Change subject: webadmin: Render Network/Hosts subtab columns sortable ......................................................................
webadmin: Render Network/Hosts subtab columns sortable Implemented client-side sorting for aforementioned columns. Change-Id: I463a6402fa65769a49fea117bff298a739878f26 Signed-off-by: Lior Vernia <[email protected]> --- A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/InterfaceHostComparator.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkHostListModel.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkHostView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/HostStatusColumn.java 4 files changed, 157 insertions(+), 29 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/66/28466/1 diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/InterfaceHostComparator.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/InterfaceHostComparator.java new file mode 100644 index 0000000..96a24df --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/InterfaceHostComparator.java @@ -0,0 +1,121 @@ +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.core.common.businessentities.network.InterfaceStatus; +import org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface; +import org.ovirt.engine.core.common.utils.PairQueryable; + +public class InterfaceHostComparator { + + public static class ByStatus implements Comparator<PairQueryable<VdsNetworkInterface, VDS>> { + + @Override + public int compare(PairQueryable<VdsNetworkInterface, VDS> arg0, PairQueryable<VdsNetworkInterface, VDS> arg1) { + return arg0.getSecond().getStatus().getValue() - arg1.getSecond().getStatus().getValue(); + } + } + + public static class ByName implements Comparator<PairQueryable<VdsNetworkInterface, VDS>> { + + private LexoNumericComparator lexoNumeric = new LexoNumericComparator(); + + @Override + public int compare(PairQueryable<VdsNetworkInterface, VDS> arg0, PairQueryable<VdsNetworkInterface, VDS> arg1) { + return lexoNumeric.compare(arg0.getSecond().getName(), arg1.getSecond().getName()); + } + } + + public static class ByCluster implements Comparator<PairQueryable<VdsNetworkInterface, VDS>> { + + private LexoNumericComparator lexoNumeric = new LexoNumericComparator(); + + @Override + public int compare(PairQueryable<VdsNetworkInterface, VDS> arg0, PairQueryable<VdsNetworkInterface, VDS> arg1) { + return lexoNumeric.compare(arg0.getSecond().getVdsGroupName(), arg1.getSecond().getVdsGroupName()); + } + } + + public static class ByDataCenter implements Comparator<PairQueryable<VdsNetworkInterface, VDS>> { + + private LexoNumericComparator lexoNumeric = new LexoNumericComparator(); + + @Override + public int compare(PairQueryable<VdsNetworkInterface, VDS> arg0, PairQueryable<VdsNetworkInterface, VDS> arg1) { + return lexoNumeric.compare(arg0.getSecond().getStoragePoolName(), arg1.getSecond().getStoragePoolName()); + } + } + + public static class ByInterfaceStatus implements Comparator<PairQueryable<VdsNetworkInterface, VDS>> { + + @Override + public int compare(PairQueryable<VdsNetworkInterface, VDS> arg0, PairQueryable<VdsNetworkInterface, VDS> arg1) { + InterfaceStatus status1 = + (arg0.getFirst() == null) ? InterfaceStatus.NONE : arg0.getFirst().getStatistics().getStatus(); + InterfaceStatus status2 = + (arg1.getFirst() == null) ? InterfaceStatus.NONE : arg1.getFirst().getStatistics().getStatus(); + if (status1 == status2) { + return 0; + } else if (status1 == InterfaceStatus.UP) { + return 1; + } else if (status2 == InterfaceStatus.UP) { + return -1; + } else { + return (status1 == InterfaceStatus.DOWN) ? 1 : -1; + } + } + } + + public static class ByInterface implements Comparator<PairQueryable<VdsNetworkInterface, VDS>> { + + private LexoNumericComparator lexoNumeric = new LexoNumericComparator(); + + @Override + public int compare(PairQueryable<VdsNetworkInterface, VDS> arg0, PairQueryable<VdsNetworkInterface, VDS> arg1) { + String name1 = (arg0.getFirst() == null) ? null : arg0.getFirst().getName(); + String name2 = (arg1.getFirst() == null) ? null : arg1.getFirst().getName(); + return lexoNumeric.compare(name1, name2); + } + } + + public static class BySpeed implements Comparator<PairQueryable<VdsNetworkInterface, VDS>> { + + @Override + public int compare(PairQueryable<VdsNetworkInterface, VDS> arg0, PairQueryable<VdsNetworkInterface, VDS> arg1) { + int speed1 = (arg0.getFirst() == null) ? -1 : arg0.getFirst().getSpeed(); + int speed2 = (arg1.getFirst() == null) ? -1 : arg1.getFirst().getSpeed(); + return speed1 - speed2; + } + } + + public static class ByRxRate implements Comparator<PairQueryable<VdsNetworkInterface, VDS>> { + + @Override + public int compare(PairQueryable<VdsNetworkInterface, VDS> arg0, PairQueryable<VdsNetworkInterface, VDS> arg1) { + double rate1 = + (arg0.getFirst() == null) ? -1 : arg0.getFirst().getStatistics().getReceiveRate() + * arg0.getFirst().getSpeed(); + double rate2 = + (arg1.getFirst() == null) ? -1 : arg1.getFirst().getStatistics().getReceiveRate() + * arg0.getFirst().getSpeed(); + return (int) (rate1 - rate2); + } + } + + public static class ByTxRate implements Comparator<PairQueryable<VdsNetworkInterface, VDS>> { + + @Override + public int compare(PairQueryable<VdsNetworkInterface, VDS> arg0, PairQueryable<VdsNetworkInterface, VDS> arg1) { + double rate1 = + (arg0.getFirst() == null) ? -1 : arg0.getFirst().getStatistics().getTransmitRate() + * arg0.getFirst().getSpeed(); + double rate2 = + (arg1.getFirst() == null) ? -1 : arg1.getFirst().getStatistics().getTransmitRate() + * arg0.getFirst().getSpeed(); + return (int) (rate1 - rate2); + } + } + +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkHostListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkHostListModel.java index 060cab3..1b23097 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkHostListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkHostListModel.java @@ -2,7 +2,6 @@ import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.Comparator; import java.util.List; @@ -25,7 +24,6 @@ import org.ovirt.engine.ui.uicompat.PropertyChangedEventArgs; import org.ovirt.engine.ui.uicompat.external.StringUtils; -@SuppressWarnings("unused") public class NetworkHostListModel extends SearchableListModel { private UICommand setupNetworksCommand; @@ -37,6 +35,22 @@ setTitle(ConstantsManager.getInstance().getConstants().hostsTitle()); setHelpTag(HelpTag.hosts); setHashName("hosts"); //$NON-NLS-1$ + + setComparator(new Comparator<PairQueryable<VdsNetworkInterface, VDS>>() { + + @Override + public int compare(PairQueryable<VdsNetworkInterface, VDS> arg0, + PairQueryable<VdsNetworkInterface, VDS> arg1) { + int compareValue = + arg0.getSecond().getVdsGroupName().compareTo(arg1.getSecond().getVdsGroupName()); + + if (compareValue != 0) { + return compareValue; + } + + return arg0.getSecond().getName().compareTo(arg1.getSecond().getName()); + } + }); setSetupNetworksCommand(new UICommand("SetupNetworks", this)); //$NON-NLS-1$ @@ -70,7 +84,8 @@ @Override public void onSuccess(final Object model, Object ReturnValue) { if (model.equals(getViewFilterType())) { - final Iterable returnList = (Iterable) ((VdcQueryReturnValue) ReturnValue).getReturnValue(); + final Collection<PairQueryable<VdsNetworkInterface, VDS>> returnList = + (Collection<PairQueryable<VdsNetworkInterface, VDS>>) ((VdcQueryReturnValue) ReturnValue).getReturnValue(); if (NetworkHostFilter.unattached.equals(getViewFilterType())) { final List<PairQueryable<VdsNetworkInterface, VDS>> items = new ArrayList<PairQueryable<VdsNetworkInterface, VDS>>(); @@ -79,7 +94,7 @@ } setItems(items); } else if (NetworkHostFilter.attached.equals(getViewFilterType())) { - initAttachedInterfaces((List<PairQueryable<VdsNetworkInterface, VDS>>) returnList); + initAttachedInterfaces(returnList); } } } @@ -97,7 +112,7 @@ setIsQueryFirstTime(false); } - private void initAttachedInterfaces(final List<PairQueryable<VdsNetworkInterface, VDS>> items) { + private void initAttachedInterfaces(final Collection<PairQueryable<VdsNetworkInterface, VDS>> items) { if (StringUtils.isEmpty(getEntity().getLabel()) || items.isEmpty()) { setItems(items); return; @@ -127,27 +142,6 @@ public Boolean isInterfaceAttachedByLabel(VdsNetworkInterface iface) { return attachedByLabelInterfaces != null && attachedByLabelInterfaces.contains(iface); - } - - @Override - public void setItems(Collection value) { - Collections.sort((List<PairQueryable<VdsNetworkInterface, VDS>>) value, - new Comparator<PairQueryable<VdsNetworkInterface, VDS>>() { - - @Override - public int compare(PairQueryable<VdsNetworkInterface, VDS> arg0, - PairQueryable<VdsNetworkInterface, VDS> arg1) { - int compareValue = - arg0.getSecond().getVdsGroupName().compareTo(arg1.getSecond().getVdsGroupName()); - - if (compareValue != 0) { - return compareValue; - } - - return arg0.getSecond().getName().compareTo(arg1.getSecond().getName()); - } - }); - super.setItems(value); } public void setupNetworks() { diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkHostView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkHostView.java index ae4df6f..157e57f 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkHostView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkHostView.java @@ -14,6 +14,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.InterfaceHostComparator; import org.ovirt.engine.ui.uicommonweb.models.networks.NetworkHostFilter; import org.ovirt.engine.ui.uicommonweb.models.networks.NetworkHostListModel; import org.ovirt.engine.ui.uicommonweb.models.networks.NetworkListModel; @@ -207,6 +208,7 @@ getTable().enableColumnResizing(); initTableOverhead(); handleRadioButtonClick(null); + initComparators(); getTable().addActionButton(new WebAdminButtonDefinition<PairQueryable<VdsNetworkInterface, VDS>>(constants.setupHostNetworksInterface()) { @Override @@ -215,5 +217,17 @@ } }); } + + private void initComparators() { + hostStatus.makeSortable(new InterfaceHostComparator.ByStatus()); + nameColumn.makeSortable(new InterfaceHostComparator.ByName()); + clusterColumn.makeSortable(new InterfaceHostComparator.ByCluster()); + dcColumn.makeSortable(new InterfaceHostComparator.ByDataCenter()); + nicStatusColumn.makeSortable(new InterfaceHostComparator.ByInterfaceStatus()); + nicColumn.makeSortable(new InterfaceHostComparator.ByInterface()); + speedColumn.makeSortable(new InterfaceHostComparator.BySpeed()); + nicRxColumn.makeSortable(new InterfaceHostComparator.ByRxRate()); + nicTxColumn.makeSortable(new InterfaceHostComparator.ByTxRate()); + } } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/HostStatusColumn.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/HostStatusColumn.java index 363f7f9..5eb2ea2 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/HostStatusColumn.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/HostStatusColumn.java @@ -2,10 +2,9 @@ import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.utils.PairQueryable; +import org.ovirt.engine.ui.common.widget.table.column.SortableColumn; -import com.google.gwt.user.cellview.client.Column; - -public class HostStatusColumn<S> extends Column<S, VDS> { +public class HostStatusColumn<S> extends SortableColumn<S, VDS> { public HostStatusColumn() { super(new HostStatusCell()); -- To view, visit http://gerrit.ovirt.org/28466 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I463a6402fa65769a49fea117bff298a739878f26 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
