Vojtech Szocs has uploaded a new change for review. Change subject: engine,userportal: Move pool filter logic to GetAllVmsAndVmPoolsQuery ......................................................................
engine,userportal: Move pool filter logic to GetAllVmsAndVmPoolsQuery Filter logic for removing pools that have provided VMs moved from client code (UiCommon) to server code (GetAllVmsAndVmPoolsQuery). Change-Id: I5c1b61d6fd2ab0e79338332d5937fdd45080ff1d Signed-off-by: Vojtech Szocs <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAllVmsAndVmPoolsQuery.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/IUserPortalListModel.java 2 files changed, 52 insertions(+), 42 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/41/10741/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAllVmsAndVmPoolsQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAllVmsAndVmPoolsQuery.java index 42de86c..02d1c77 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAllVmsAndVmPoolsQuery.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAllVmsAndVmPoolsQuery.java @@ -11,35 +11,66 @@ import org.ovirt.engine.core.common.queries.VdcQueryType; public class GetAllVmsAndVmPoolsQuery<P extends VdcQueryParametersBase> extends QueriesCommandBase<P> { + public GetAllVmsAndVmPoolsQuery(P parameters) { super(parameters); } @Override protected void executeQueryCommand() { - boolean isSucceeded = true; - List<Object> retValList = new ArrayList<Object>(); - VdcQueryReturnValue queryResult = Backend.getInstance().runInternalQuery(VdcQueryType.GetAllVms, getParameters()); - if (queryResult != null && queryResult.getSucceeded()) { - retValList.addAll((List<VM>) queryResult.getReturnValue()); - } else { - isSucceeded = false; - } + List<VM> vms = getVms(); + List<vm_pools> pools = getPools(); + + boolean isSucceeded = vms != null && pools != null; + getQueryReturnValue().setSucceeded(isSucceeded); + if (isSucceeded) { - queryResult = - Backend.getInstance().runInternalQuery(VdcQueryType.GetAllVmPoolsAttachedToUser, - new GetAllVmPoolsAttachedToUserParameters(getUserID())); - if (queryResult != null && queryResult.getSucceeded()) { - retValList.addAll((List<vm_pools>) queryResult.getReturnValue()); - } else { - isSucceeded = false; + // Remove pools that have provided VMs + pools = filterPoolsWithProvidedVms(vms, pools); + + List<Object> retValList = new ArrayList<Object>(); + retValList.addAll(vms); + retValList.addAll(pools); + + getQueryReturnValue().setReturnValue(retValList); + } + } + + List<VM> getVms() { + VdcQueryReturnValue result = Backend.getInstance().runInternalQuery( + VdcQueryType.GetAllVms, getParameters()); + return result != null && result.getSucceeded() ? (List<VM>) result.getReturnValue() : null; + } + + List<vm_pools> getPools() { + VdcQueryReturnValue result = Backend.getInstance().runInternalQuery( + VdcQueryType.GetAllVmPoolsAttachedToUser, + new GetAllVmPoolsAttachedToUserParameters(getUserID())); + return result != null && result.getSucceeded() ? (List<vm_pools>) result.getReturnValue() : null; + } + + /** + * Returns {@code allPools} minus pools that have provided VMs, based on {@code allVms}. + */ + List<vm_pools> filterPoolsWithProvidedVms(List<VM> allVms, List<vm_pools> allPools) { + List<vm_pools> filteredPools = new ArrayList<vm_pools>(allPools.size()); + + for (vm_pools pool : allPools) { + boolean found = false; + + for (VM vm : allVms) { + if (vm.getVmPoolId() != null && vm.getVmPoolId().equals(pool.getvm_pool_id())) { + found = true; + break; + } + } + + if (!found) { + filteredPools.add(pool); } } - if (!isSucceeded) { - getQueryReturnValue().setSucceeded(false); - return; - } - getQueryReturnValue().setReturnValue(retValList); + return filteredPools; } + } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/IUserPortalListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/IUserPortalListModel.java index 2f82b4d..cee7164 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/IUserPortalListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/IUserPortalListModel.java @@ -391,29 +391,8 @@ { // Complete search. - // Remove pools that has provided VMs. - ArrayList<vm_pools> filteredPools = new ArrayList<vm_pools>(); - - for (vm_pools pool : getpools()) - { - boolean found = false; - for (VM vm : getvms()) - { - if (vm.getVmPoolId() != null && vm.getVmPoolId().equals(pool.getvm_pool_id())) - { - found = true; - break; - } - } - - if (!found) - { - filteredPools.add(pool); - } - } - // Merge VMs and Pools, and create item models. - List all = Linq.Concat(getvms(), filteredPools); + List all = Linq.Concat(getvms(), getpools()); Linq.Sort(all, new Linq.VmAndPoolByNameComparer()); ArrayList<Model> items = new ArrayList<Model>(); -- To view, visit http://gerrit.ovirt.org/10741 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I5c1b61d6fd2ab0e79338332d5937fdd45080ff1d Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Vojtech Szocs <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
