Alexander Wels has uploaded a new change for review. Change subject: webadmin: Quota tab sorting ......................................................................
webadmin: Quota tab sorting - Implemented sorting on Quota main tab. - Only for name and description - Implemented sorting on Quota sub tabs. - Not implemented for VM/Template Change-Id: I2740a5a15523da95b599de5b7acf688472d6df49 Signed-off-by: Alexander Wels <[email protected]> --- M backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/QuotaConditionFieldAutoCompleter.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/TextColumnWithEditableTooltip.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/quota/QuotaListModel.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabQuotaView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/quota/SubTabQuotaClusterView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/quota/SubTabQuotaPermissionView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/quota/SubTabQuotaStorageView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/quota/SubTabQuotaUserView.java 8 files changed, 80 insertions(+), 53 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/71/30771/1 diff --git a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/QuotaConditionFieldAutoCompleter.java b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/QuotaConditionFieldAutoCompleter.java index 0133b61..8934a19 100644 --- a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/QuotaConditionFieldAutoCompleter.java +++ b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/QuotaConditionFieldAutoCompleter.java @@ -3,21 +3,21 @@ import org.ovirt.engine.core.common.businessentities.QuotaEnforcementTypeEnum; public class QuotaConditionFieldAutoCompleter extends BaseConditionFieldAutoCompleter { - private static final String name = "NAME"; - private static final String storagePoolName = "STORAGEPOOLNAME"; - private static final String description = "DESCRIPTION"; - private static final String thresholdVdsGroupPercentage = "THRESHOLDVDSGROUPPERCENTAGE"; - private static final String thresholdStoragePercentage = "THRESHOLDSTORAGEPERCENTAGE"; - private static final String graceVdsGrouPercentage = "GRACEVDSGROUPPERCENTAGE"; - private static final String graceStoragePercentage = "GRACESTORAGEPERCENTAGE"; + public static final String NAME = "NAME"; + public static final String STORAGEPOOLNAME = "STORAGEPOOLNAME"; + public static final String DESCRIPTION = "DESCRIPTION"; + public static final String thresholdVdsGroupPercentage = "THRESHOLDVDSGROUPPERCENTAGE"; + public static final String thresholdStoragePercentage = "THRESHOLDSTORAGEPERCENTAGE"; + public static final String graceVdsGrouPercentage = "GRACEVDSGROUPPERCENTAGE"; + public static final String graceStoragePercentage = "GRACESTORAGEPERCENTAGE"; private static final String enforcementType = "ENFORCEMENTTYPE"; public QuotaConditionFieldAutoCompleter() { // Building the basic verbs dict. - mVerbs.add(name); - mVerbs.add(storagePoolName); - mVerbs.add(description); + mVerbs.add(NAME); + mVerbs.add(STORAGEPOOLNAME); + mVerbs.add(DESCRIPTION); mVerbs.add(thresholdStoragePercentage); mVerbs.add(thresholdVdsGroupPercentage); mVerbs.add(graceStoragePercentage); @@ -28,9 +28,9 @@ buildCompletions(); // Building the types dict. - getTypeDictionary().put(name, String.class); - getTypeDictionary().put(storagePoolName, String.class); - getTypeDictionary().put(description, String.class); + getTypeDictionary().put(NAME, String.class); + getTypeDictionary().put(STORAGEPOOLNAME, String.class); + getTypeDictionary().put(DESCRIPTION, String.class); getTypeDictionary().put(thresholdStoragePercentage, Integer.class); getTypeDictionary().put(thresholdVdsGroupPercentage, Integer.class); getTypeDictionary().put(graceStoragePercentage, Integer.class); @@ -38,9 +38,9 @@ getTypeDictionary().put(enforcementType, QuotaEnforcementTypeEnum.class); // building the ColumnName dict. - columnNameDict.put(name, "quota_name"); - columnNameDict.put(storagePoolName, "storage_pool_name"); - columnNameDict.put(description, "description"); + columnNameDict.put(NAME, "quota_name"); + columnNameDict.put(STORAGEPOOLNAME, "storage_pool_name"); + columnNameDict.put(DESCRIPTION, "description"); columnNameDict.put(thresholdVdsGroupPercentage, "threshold_vds_group_percentage"); columnNameDict.put(thresholdStoragePercentage, "threshold_storage_percentage"); columnNameDict.put(graceStoragePercentage, "grace_storage_percentage"); diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/TextColumnWithEditableTooltip.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/TextColumnWithEditableTooltip.java index 86cea09..42838ba 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/TextColumnWithEditableTooltip.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/table/column/TextColumnWithEditableTooltip.java @@ -1,6 +1,5 @@ package org.ovirt.engine.ui.common.widget.table.column; -import com.google.gwt.user.cellview.client.Column; /** * Column for displaying text using {@link TextCellWithEditableTooltip}. @@ -8,7 +7,8 @@ * @param <T> * Table row data type. */ -public abstract class TextColumnWithEditableTooltip<T> extends Column<T, String> implements ColumnWithElementId { +public abstract class TextColumnWithEditableTooltip<T> extends SortableColumn<T, String> + implements ColumnWithElementId { public TextColumnWithEditableTooltip() { super(new TextCellWithEditableTooltip()); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/quota/QuotaListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/quota/QuotaListModel.java index 785ad18..b209bf1 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/quota/QuotaListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/quota/QuotaListModel.java @@ -131,9 +131,15 @@ @Override protected void syncSearch() { - SearchParameters tempVar = new SearchParameters(getSearchString(), SearchType.Quota, isCaseSensitiveSearch()); + SearchParameters tempVar = new SearchParameters(applySortOptions(getSearchString()), SearchType.Quota, + isCaseSensitiveSearch()); tempVar.setMaxCount(getSearchPageSize()); super.syncSearch(VdcQueryType.Search, tempVar); + } + + @Override + public boolean supportsServerSideSorting() { + return true; } private void updateActionAvailability() { @@ -145,7 +151,7 @@ getCloneCommand().setIsExecutionAllowed(items.size() == 1); } - protected void createQuota(){ + protected void createQuota() { createQuota(true); } @@ -191,8 +197,8 @@ @Override public void eventRaised(Event ev, Object sender, EventArgs args) { - StoragePool selectedDataCenter = (StoragePool) qModel.getDataCenter().getSelectedItem(); - if(selectedDataCenter == null){ + StoragePool selectedDataCenter = qModel.getDataCenter().getSelectedItem(); + if (selectedDataCenter == null) { return; } AsyncDataProvider.getClusterList(new AsyncQuery(this, new INewAsyncCallback() { @@ -271,16 +277,16 @@ return; } Quota quota = (Quota) model.getEntity(); - quota.setQuotaName((String) model.getName().getEntity()); - quota.setDescription((String) model.getDescription().getEntity()); - quota.setStoragePoolId(((StoragePool) model.getDataCenter().getSelectedItem()).getId()); + quota.setQuotaName(model.getName().getEntity()); + quota.setDescription(model.getDescription().getEntity()); + quota.setStoragePoolId(model.getDataCenter().getSelectedItem().getId()); quota.setGraceVdsGroupPercentage(model.getGraceClusterAsInteger()); quota.setGraceStoragePercentage(model.getGraceStorageAsInteger()); quota.setThresholdVdsGroupPercentage(model.getThresholdClusterAsInteger()); quota.setThresholdStoragePercentage(model.getThresholdStorageAsInteger()); - if ((Boolean) model.getGlobalClusterQuota().getEntity()) { + if (model.getGlobalClusterQuota().getEntity()) { QuotaVdsGroup quotaVdsGroup; for (QuotaVdsGroup iter : (ArrayList<QuotaVdsGroup>) model.getQuotaClusters().getItems()) { quota.setGlobalQuotaVdsGroup(new QuotaVdsGroup()); @@ -301,7 +307,7 @@ quota.setQuotaVdsGroups(quotaClusterList); } - if ((Boolean) model.getGlobalStorageQuota().getEntity()) { + if (model.getGlobalStorageQuota().getEntity()) { QuotaStorage quotaStorage; for (QuotaStorage iter : (ArrayList<QuotaStorage>) model.getQuotaStorages().getItems()) { quota.setGlobalQuotaStorage(new QuotaStorage()); @@ -325,7 +331,7 @@ QuotaCRUDParameters parameters = new QuotaCRUDParameters(quota); if (isClone) { - parameters.setCopyPermissions((Boolean) model.getCopyPermissions().getEntity()); + parameters.setCopyPermissions(model.getCopyPermissions().getEntity()); parameters.setQuotaId(quota.getId()); quota.setId(Guid.Empty); } @@ -349,7 +355,7 @@ private boolean hasUnlimitedSpecificQuota() { QuotaModel model = (QuotaModel) getWindow(); - if ((Boolean)model.getSpecificClusterQuota().getEntity()) { + if (model.getSpecificClusterQuota().getEntity()) { for (QuotaVdsGroup quotaVdsGroup : (ArrayList<QuotaVdsGroup>) model.getAllDataCenterClusters().getItems()) { if (QuotaVdsGroup.UNLIMITED_MEM.equals(quotaVdsGroup.getMemSizeMB()) || QuotaVdsGroup.UNLIMITED_VCPU.equals(quotaVdsGroup.getVirtualCpu())) { @@ -358,7 +364,7 @@ } } - if((Boolean)model.getSpecificStorageQuota().getEntity()) { + if (model.getSpecificStorageQuota().getEntity()) { for (QuotaStorage quotaStorage : (ArrayList<QuotaStorage>) model.getAllDataCenterStorages().getItems()) { if (QuotaStorage.UNLIMITED.equals(quotaStorage.getStorageSizeGB())) { return true; @@ -439,7 +445,7 @@ @Override public void eventRaised(Event ev, Object sender, EventArgs args) { - StoragePool selectedDataCenter = (StoragePool) qModel.getDataCenter().getSelectedItem(); + StoragePool selectedDataCenter = qModel.getDataCenter().getSelectedItem(); AsyncDataProvider.getClusterList(new AsyncQuery(this, new INewAsyncCallback() { @Override @@ -531,7 +537,8 @@ } qModel.stopProgress(); } - }), selectedDataCenter.getId()); + }), + selectedDataCenter.getId()); } }); diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabQuotaView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabQuotaView.java index d3ebe66..b68a5c5 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabQuotaView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/MainTabQuotaView.java @@ -4,6 +4,7 @@ import org.ovirt.engine.core.common.businessentities.QuotaStorage; import org.ovirt.engine.core.common.businessentities.QuotaVdsGroup; import org.ovirt.engine.core.common.utils.SizeConverter; +import org.ovirt.engine.core.searchbackend.QuotaConditionFieldAutoCompleter; import org.ovirt.engine.ui.common.idhandler.ElementIdHandler; import org.ovirt.engine.ui.common.uicommon.model.MainModelProvider; import org.ovirt.engine.ui.common.widget.renderer.DiskSizeRenderer; @@ -45,19 +46,23 @@ getTable().addColumn(new QuotaDcStatusColumn(), constants.empty(), "30px"); //$NON-NLS-1$ - getTable().addColumn(new TextColumnWithTooltip<Quota>() { + TextColumnWithTooltip<Quota> nameColumn = new TextColumnWithTooltip<Quota>() { @Override public String getValue(Quota object) { return object.getQuotaName() == null ? "" : object.getQuotaName(); //$NON-NLS-1$ } - }, constants.nameQuota(), "120px"); //$NON-NLS-1$ + }; + nameColumn.makeSortable(QuotaConditionFieldAutoCompleter.NAME); + getTable().addColumn(nameColumn, constants.nameQuota(), "120px"); //$NON-NLS-1$ - getTable().addColumn(new TextColumnWithTooltip<Quota>() { + TextColumnWithTooltip<Quota> descriptionColumn = new TextColumnWithTooltip<Quota>() { @Override public String getValue(Quota object) { return object.getDescription() == null ? "" : object.getDescription(); //$NON-NLS-1$ } - }, constants.descriptionQuota(), "120px"); //$NON-NLS-1$ + }; + descriptionColumn.makeSortable(QuotaConditionFieldAutoCompleter.DESCRIPTION); + getTable().addColumn(descriptionColumn, constants.descriptionQuota(), "120px"); //$NON-NLS-1$ getTable().addColumn(new QuotaPercentColumn<Quota>() { @Override diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/quota/SubTabQuotaClusterView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/quota/SubTabQuotaClusterView.java index 8c94774..dee2b9b 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/quota/SubTabQuotaClusterView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/quota/SubTabQuotaClusterView.java @@ -35,17 +35,17 @@ private void initTable(final ApplicationConstants constants, final ApplicationMessages messages) { getTable().enableColumnResizing(); - getTable().addColumn(new TextColumnWithTooltip<QuotaVdsGroup>() { + TextColumnWithTooltip<QuotaVdsGroup> nameColumn = new TextColumnWithTooltip<QuotaVdsGroup>() { @Override public String getValue(QuotaVdsGroup object) { return object.getVdsGroupName() == null || object.getVdsGroupName().equals("") ? constants.ultQuotaForAllClustersQuotaPopup() : object.getVdsGroupName(); } - }, - constants.nameCluster(), - "300px"); //$NON-NLS-1$ + }; + nameColumn.makeSortable(); + getTable().addColumn(nameColumn, constants.nameCluster(), "300px"); //$NON-NLS-1$ - getTable().addColumn(new TextColumnWithTooltip<QuotaVdsGroup>() { + TextColumnWithTooltip<QuotaVdsGroup> usedMemColumn = new TextColumnWithTooltip<QuotaVdsGroup>() { @Override public String getValue(QuotaVdsGroup object) { if (object.getMemSizeMB() == null) { @@ -56,10 +56,11 @@ return messages.limitedMemConsumption(object.getMemSizeMBUsage(), object.getMemSizeMB()); } } - }, - constants.usedMemoryTotalCluster(), "300px"); //$NON-NLS-1$ + }; + usedMemColumn.makeSortable(); + getTable().addColumn(usedMemColumn, constants.usedMemoryTotalCluster(), "300px"); //$NON-NLS-1$ - getTable().addColumn(new TextColumnWithTooltip<QuotaVdsGroup>() { + TextColumnWithTooltip<QuotaVdsGroup> virtualCpuColumn = new TextColumnWithTooltip<QuotaVdsGroup>() { @Override public String getValue(QuotaVdsGroup object) { if (object.getVirtualCpu() == null) { @@ -70,8 +71,9 @@ return messages.limitedVcpuConsumption(object.getVirtualCpuUsage(), object.getVirtualCpu()); } } - }, - constants.runningCpuTotalCluster(), "300px"); //$NON-NLS-1$ + }; + virtualCpuColumn.makeSortable(); + getTable().addColumn(virtualCpuColumn, constants.runningCpuTotalCluster(), "300px"); //$NON-NLS-1$ } } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/quota/SubTabQuotaPermissionView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/quota/SubTabQuotaPermissionView.java index 38e3686..2afd005 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/quota/SubTabQuotaPermissionView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/quota/SubTabQuotaPermissionView.java @@ -43,6 +43,7 @@ return object.getOwnerName(); } }; + userColumn.makeSortable(); getTable().addColumn(userColumn, constants.userPermission()); TextColumnWithTooltip<Permissions> roleColumn = new TextColumnWithTooltip<Permissions>() { @@ -51,6 +52,7 @@ return object.getRoleName(); } }; + roleColumn.makeSortable(); getTable().addColumn(roleColumn, constants.rolePermission()); TextColumnWithTooltip<Permissions> permissionColumn = new ObjectNameColumn<Permissions>() { @@ -61,6 +63,7 @@ }; } }; + permissionColumn.makeSortable(); getTable().addColumn(permissionColumn, constants.inheretedFromPermission()); getTable().addActionButton(new WebAdminButtonDefinition<Permissions>(constants.addPermission()) { diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/quota/SubTabQuotaStorageView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/quota/SubTabQuotaStorageView.java index 0b7fc56..7c4e765 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/quota/SubTabQuotaStorageView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/quota/SubTabQuotaStorageView.java @@ -1,5 +1,7 @@ package org.ovirt.engine.ui.webadmin.section.main.view.tab.quota; +import java.util.Comparator; + import javax.inject.Inject; import org.ovirt.engine.core.common.businessentities.Quota; @@ -42,17 +44,17 @@ private void initTable(final ApplicationConstants constants, final ApplicationMessages messages) { getTable().enableColumnResizing(); - getTable().addColumn(new TextColumnWithTooltip<QuotaStorage>() { + TextColumnWithTooltip<QuotaStorage> nameColumn = new TextColumnWithTooltip<QuotaStorage>() { @Override public String getValue(QuotaStorage object) { return object.getStorageName() == null || object.getStorageName().equals("") ? constants.utlQuotaAllStoragesQuotaPopup() : object.getStorageName(); } - }, - constants.nameQuotaStorage(), - "400px"); //$NON-NLS-1$ + }; + nameColumn.makeSortable(); + getTable().addColumn(nameColumn, constants.nameQuotaStorage(), "400px"); //$NON-NLS-1$ - getTable().addColumn(new TextColumnWithEditableTooltip<QuotaStorage>() { + TextColumnWithEditableTooltip<QuotaStorage> usedColumn = new TextColumnWithEditableTooltip<QuotaStorage>() { @Override public String getValue(QuotaStorage object) { if (object.getStorageSizeGB() == null) { @@ -75,7 +77,13 @@ textCellWithEditableTooltip.setTitle(constants.quotaCalculationsMessage()); return textCellWithEditableTooltip; } - }, - constants.usedStorageTotalQuotaStorage(), "400px"); //$NON-NLS-1$ + }; + usedColumn.makeSortable(new Comparator<QuotaStorage>() { + @Override + public int compare(QuotaStorage quotaStorage1, QuotaStorage quotaStorage2) { + return quotaStorage1.getStorageSizeGBUsage().compareTo(quotaStorage2.getStorageSizeGBUsage()); + } + }); + getTable().addColumn(usedColumn, constants.usedStorageTotalQuotaStorage(), "400px"); //$NON-NLS-1$ } } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/quota/SubTabQuotaUserView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/quota/SubTabQuotaUserView.java index c29b672..afbdf7c 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/quota/SubTabQuotaUserView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/quota/SubTabQuotaUserView.java @@ -45,6 +45,7 @@ return object.getOwnerName(); } }; + userColumn.makeSortable(); getTable().addColumn(userColumn, constants.userUser(), "400px"); //$NON-NLS-1$ TextColumnWithTooltip<Permissions> permissionColumn = new ObjectNameColumn<Permissions>() { @@ -55,6 +56,7 @@ }; } }; + permissionColumn.makeSortable(); getTable().addColumn(permissionColumn, constants.inheritedFromUser(), "400px"); //$NON-NLS-1$ getTable().addActionButton(new WebAdminButtonDefinition<Permissions>(constants.addUser()) { -- To view, visit http://gerrit.ovirt.org/30771 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I2740a5a15523da95b599de5b7acf688472d6df49 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.5 Gerrit-Owner: Alexander Wels <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
