Lior Vernia has uploaded a new change for review. Change subject: webadmin: Render Network/VMs subtab columns sortable ......................................................................
webadmin: Render Network/VMs subtab columns sortable Implemented client-side sorting for aforementioned columns. Change-Id: I57be4c2b99a081c60a2175d7c15cbacbc40663af Signed-off-by: Lior Vernia <lver...@redhat.com> --- A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/InterfaceComparator.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/InterfaceHostComparator.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/InterfaceVmComparator.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkVmListModel.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/section/main/view/tab/network/SubTabNetworkVmView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VmStatusColumn.java 7 files changed, 215 insertions(+), 51 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/44/28544/1 diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/InterfaceComparator.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/InterfaceComparator.java new file mode 100644 index 0000000..bd5047e --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/InterfaceComparator.java @@ -0,0 +1,51 @@ +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.NetworkInterface; +import org.ovirt.engine.core.common.utils.PairQueryable; + +public class InterfaceComparator { + + public static class ByInterfaceName<T extends NetworkInterface<?>> implements Comparator<PairQueryable<T, ?>> { + + private LexoNumericComparator lexoNumeric = new LexoNumericComparator(); + + @Override + public int compare(PairQueryable<T, ?> arg0, PairQueryable<T, ?> 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 ByRxRate<T extends NetworkInterface<?>> implements Comparator<PairQueryable<T, ?>> { + + @Override + public int compare(PairQueryable<T, ?> arg0, PairQueryable<T, ?> 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<T extends NetworkInterface<?>> implements Comparator<PairQueryable<T, ?>> { + + @Override + public int compare(PairQueryable<T, ?> arg0, PairQueryable<T, ?> 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/comparators/InterfaceHostComparator.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/InterfaceHostComparator.java index 96a24df..d021d2f 100644 --- 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 @@ -68,15 +68,14 @@ } } - public static class ByInterface implements Comparator<PairQueryable<VdsNetworkInterface, VDS>> { + public static class ByInterfaceName implements Comparator<PairQueryable<VdsNetworkInterface, VDS>> { - private LexoNumericComparator lexoNumeric = new LexoNumericComparator(); + InterfaceComparator.ByInterfaceName<VdsNetworkInterface> interfaceComparator = + new InterfaceComparator.ByInterfaceName<VdsNetworkInterface>(); @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); + return interfaceComparator.compare(arg0, arg1); } } @@ -92,29 +91,23 @@ public static class ByRxRate implements Comparator<PairQueryable<VdsNetworkInterface, VDS>> { + InterfaceComparator.ByRxRate<VdsNetworkInterface> interfaceComparator = + new InterfaceComparator.ByRxRate<VdsNetworkInterface>(); + @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); + return interfaceComparator.compare(arg0, arg1); } } public static class ByTxRate implements Comparator<PairQueryable<VdsNetworkInterface, VDS>> { + InterfaceComparator.ByTxRate<VdsNetworkInterface> interfaceComparator = + new InterfaceComparator.ByTxRate<VdsNetworkInterface>(); + @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); + return interfaceComparator.compare(arg0, arg1); } } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/InterfaceVmComparator.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/InterfaceVmComparator.java new file mode 100644 index 0000000..fb059c4 --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/comparators/InterfaceVmComparator.java @@ -0,0 +1,117 @@ +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.core.common.businessentities.network.VmNetworkInterface; +import org.ovirt.engine.core.common.utils.PairQueryable; + +public class InterfaceVmComparator { + + public static class ByStatus implements Comparator<PairQueryable<VmNetworkInterface, VM>> { + + @Override + public int compare(PairQueryable<VmNetworkInterface, VM> arg0, PairQueryable<VmNetworkInterface, VM> arg1) { + return arg0.getSecond().getStatus().getValue() - arg1.getSecond().getStatus().getValue(); + } + } + + public static class ByName implements Comparator<PairQueryable<VmNetworkInterface, VM>> { + + private LexoNumericComparator lexoNumeric = new LexoNumericComparator(); + + @Override + public int compare(PairQueryable<VmNetworkInterface, VM> arg0, PairQueryable<VmNetworkInterface, VM> arg1) { + return lexoNumeric.compare(arg0.getSecond().getName(), arg1.getSecond().getName()); + } + } + + public static class ByDescription implements Comparator<PairQueryable<VmNetworkInterface, VM>> { + + private LexoNumericComparator lexoNumeric = new LexoNumericComparator(); + + @Override + public int compare(PairQueryable<VmNetworkInterface, VM> arg0, PairQueryable<VmNetworkInterface, VM> arg1) { + return lexoNumeric.compare(arg0.getSecond().getDescription(), arg1.getSecond().getDescription()); + } + } + + public static class ByCluster implements Comparator<PairQueryable<VmNetworkInterface, VM>> { + + private LexoNumericComparator lexoNumeric = new LexoNumericComparator(); + + @Override + public int compare(PairQueryable<VmNetworkInterface, VM> arg0, PairQueryable<VmNetworkInterface, VM> arg1) { + return lexoNumeric.compare(arg0.getSecond().getVdsGroupName(), arg1.getSecond().getVdsGroupName()); + } + } + + public static class ByIpAddress implements Comparator<PairQueryable<VmNetworkInterface, VM>> { + + private LexoNumericComparator lexoNumeric = new LexoNumericComparator(); + + @Override + public int compare(PairQueryable<VmNetworkInterface, VM> arg0, PairQueryable<VmNetworkInterface, VM> arg1) { + return lexoNumeric.compare(arg0.getSecond().getVmIp(), arg1.getSecond().getVmIp()); + } + } + + public static class ByFqdn implements Comparator<PairQueryable<VmNetworkInterface, VM>> { + + private LexoNumericComparator lexoNumeric = new LexoNumericComparator(); + + @Override + public int compare(PairQueryable<VmNetworkInterface, VM> arg0, PairQueryable<VmNetworkInterface, VM> arg1) { + return lexoNumeric.compare(arg0.getSecond().getVmFQDN(), arg1.getSecond().getVmFQDN()); + } + } + + public static class ByInterfaceStatus implements Comparator<PairQueryable<VmNetworkInterface, VM>> { + + @Override + public int compare(PairQueryable<VmNetworkInterface, VM> arg0, PairQueryable<VmNetworkInterface, VM> arg1) { + boolean isUp1 = arg0.getFirst() != null && arg0.getFirst().isLinked() && arg0.getFirst().isPlugged(); + boolean isUp2 = arg1.getFirst() != null && arg1.getFirst().isLinked() && arg1.getFirst().isPlugged(); + if (isUp1 == isUp2) { + return 0; + } else { + return isUp1 ? 1 : -1; + } + } + } + + public static class ByInterfaceName implements Comparator<PairQueryable<VmNetworkInterface, VM>> { + + InterfaceComparator.ByInterfaceName<VmNetworkInterface> interfaceComparator = + new InterfaceComparator.ByInterfaceName<VmNetworkInterface>(); + + @Override + public int compare(PairQueryable<VmNetworkInterface, VM> arg0, PairQueryable<VmNetworkInterface, VM> arg1) { + return interfaceComparator.compare(arg0, arg1); + } + } + + public static class ByRxRate implements Comparator<PairQueryable<VmNetworkInterface, VM>> { + + InterfaceComparator.ByRxRate<VmNetworkInterface> interfaceComparator = + new InterfaceComparator.ByRxRate<VmNetworkInterface>(); + + @Override + public int compare(PairQueryable<VmNetworkInterface, VM> arg0, PairQueryable<VmNetworkInterface, VM> arg1) { + return interfaceComparator.compare(arg0, arg1); + } + } + + public static class ByTxRate implements Comparator<PairQueryable<VmNetworkInterface, VM>> { + + InterfaceComparator.ByTxRate<VmNetworkInterface> interfaceComparator = + new InterfaceComparator.ByTxRate<VmNetworkInterface>(); + + @Override + public int compare(PairQueryable<VmNetworkInterface, VM> arg0, PairQueryable<VmNetworkInterface, VM> arg1) { + return interfaceComparator.compare(arg0, arg1); + } + } + +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkVmListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkVmListModel.java index 09cd0ed..c82a605 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkVmListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/networks/NetworkVmListModel.java @@ -2,9 +2,7 @@ import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.Comparator; -import java.util.List; import org.ovirt.engine.core.common.VdcActionUtils; import org.ovirt.engine.core.common.action.VdcActionType; @@ -26,7 +24,6 @@ import org.ovirt.engine.ui.uicompat.ConstantsManager; import org.ovirt.engine.ui.uicompat.PropertyChangedEventArgs; -@SuppressWarnings("unused") public class NetworkVmListModel extends SearchableListModel { private UICommand removeCommand; @@ -36,6 +33,21 @@ setTitle(ConstantsManager.getInstance().getConstants().virtualMachinesTitle()); setHelpTag(HelpTag.virtual_machines); setHashName("virtual_machines"); //$NON-NLS-1$ + setComparator(new Comparator<PairQueryable<VmNetworkInterface, VM>>() { + + @Override + public int compare(PairQueryable<VmNetworkInterface, VM> paramT1, + PairQueryable<VmNetworkInterface, VM> paramT2) { + int compareValue = + paramT1.getSecond().getVdsGroupName().compareTo(paramT2.getSecond().getVdsGroupName()); + + if (compareValue != 0) { + return compareValue; + } + + return paramT1.getSecond().getName().compareTo(paramT2.getSecond().getName()); + } + }); setRemoveCommand(new UICommand("Remove", this)); //$NON-NLS-1$ @@ -67,29 +79,6 @@ } @Override - public void setItems(Collection value) { - if (value != null) { - List<PairQueryable<VmNetworkInterface, VM>> itemList = (List<PairQueryable<VmNetworkInterface, VM>>) value; - Collections.sort(itemList, new Comparator<PairQueryable<VmNetworkInterface, VM>>() { - - @Override - public int compare(PairQueryable<VmNetworkInterface, VM> paramT1, - PairQueryable<VmNetworkInterface, VM> paramT2) { - int compareValue = - paramT1.getSecond().getVdsGroupName().compareTo(paramT2.getSecond().getVdsGroupName()); - - if (compareValue != 0) { - return compareValue; - } - - return paramT1.getSecond().getName().compareTo(paramT2.getSecond().getName()); - } - }); - } - super.setItems(value); - } - - @Override public void search() { if (getEntity() != null) { @@ -111,7 +100,7 @@ public void onSuccess(Object model, Object ReturnValue) { if (model.equals(getViewFilterType())) { - NetworkVmListModel.this.setItems((List<PairQueryable<VmNetworkInterface, VM>>) ((VdcQueryReturnValue) ReturnValue).getReturnValue()); + setItems((Collection<PairQueryable<VmNetworkInterface, VM>>) ((VdcQueryReturnValue) ReturnValue).getReturnValue()); } } }; @@ -137,7 +126,7 @@ private void updateActionAvailability() { ArrayList<VM> vms = new ArrayList<VM>(); - List<PairQueryable<VmNetworkInterface, VM>> selectedItems = + Collection<PairQueryable<VmNetworkInterface, VM>> selectedItems = getSelectedItems() != null ? getSelectedItems() : new ArrayList(); for (PairQueryable<VmNetworkInterface, VM> item : selectedItems) { @@ -151,7 +140,7 @@ } private boolean canRemoveVnics() { - List<PairQueryable<VmNetworkInterface, VM>> selectedItems = + Collection<PairQueryable<VmNetworkInterface, VM>> selectedItems = getSelectedItems() != null ? getSelectedItems() : new ArrayList(); for (PairQueryable<VmNetworkInterface, VM> pair : selectedItems) @@ -184,7 +173,7 @@ return; } - List<VmNetworkInterface> vnics = new ArrayList<VmNetworkInterface>(); + ArrayList<VmNetworkInterface> vnics = new ArrayList<VmNetworkInterface>(); for (Object item : getSelectedItems()) { PairQueryable<VmNetworkInterface, VM> pair = (PairQueryable<VmNetworkInterface, VM>) item; 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 157e57f..fdac731 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 @@ -224,7 +224,7 @@ clusterColumn.makeSortable(new InterfaceHostComparator.ByCluster()); dcColumn.makeSortable(new InterfaceHostComparator.ByDataCenter()); nicStatusColumn.makeSortable(new InterfaceHostComparator.ByInterfaceStatus()); - nicColumn.makeSortable(new InterfaceHostComparator.ByInterface()); + nicColumn.makeSortable(new InterfaceHostComparator.ByInterfaceName()); 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/section/main/view/tab/network/SubTabNetworkVmView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkVmView.java index 5a10550..5edd105 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkVmView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/network/SubTabNetworkVmView.java @@ -15,6 +15,7 @@ import org.ovirt.engine.ui.common.widget.table.column.RxTxRateColumn; import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip; import org.ovirt.engine.ui.uicommonweb.UICommand; +import org.ovirt.engine.ui.uicommonweb.comparators.InterfaceVmComparator; import org.ovirt.engine.ui.uicommonweb.models.networks.NetworkListModel; import org.ovirt.engine.ui.uicommonweb.models.networks.NetworkVmFilter; import org.ovirt.engine.ui.uicommonweb.models.networks.NetworkVmListModel; @@ -188,6 +189,7 @@ getTable().enableColumnResizing(); initTableOverhead(); handleRadioButtonClick(null); + initComparators(); getTable().addActionButton(new WebAdminButtonDefinition<PairQueryable<VmNetworkInterface, VM>>(constants.removeInterface()) { @Override @@ -198,5 +200,18 @@ } + private void initComparators() { + vmStatusColumn.makeSortable(new InterfaceVmComparator.ByStatus()); + nameColumn.makeSortable(new InterfaceVmComparator.ByName()); + clusterColumn.makeSortable(new InterfaceVmComparator.ByCluster()); + ipColumn.makeSortable(new InterfaceVmComparator.ByIpAddress()); + fqdnColumn.makeSortable(new InterfaceVmComparator.ByFqdn()); + nicActivateStatusColumn.makeSortable(new InterfaceVmComparator.ByInterfaceStatus()); + vnicNameColumn.makeSortable(new InterfaceVmComparator.ByInterfaceName()); + rxColumn.makeSortable(new InterfaceVmComparator.ByRxRate()); + txColumn.makeSortable(new InterfaceVmComparator.ByTxRate()); + descriptionColumn.makeSortable(new InterfaceVmComparator.ByDescription()); + } + } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VmStatusColumn.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VmStatusColumn.java index 8c130b0..130191e 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VmStatusColumn.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/VmStatusColumn.java @@ -3,7 +3,6 @@ import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; import org.ovirt.engine.core.common.utils.PairQueryable; - import org.ovirt.engine.ui.common.widget.table.column.SortableColumn; /** -- To view, visit http://gerrit.ovirt.org/28544 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I57be4c2b99a081c60a2175d7c15cbacbc40663af Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Lior Vernia <lver...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches