Vojtech Szocs has uploaded a new change for review. Change subject: userportal: VM/Pool handling refactored ......................................................................
userportal: VM/Pool handling refactored 1. Removed IVmPoolResolutionService interface and its usage, as the 'ResolveVmPoolById' logic isn't used in client code. 2. Common VM/Pool handling code moved to IUserPortalListModel, eliminating duplicate code in both subclasses, including: - OnVmAndPoolLoad(), except 'canConnectAutomatically' part - SyncSearch() + AsyncSearch() Change-Id: Ifaefb2cffa5fa13bc04cf702abfcc96e485dfad4 Signed-off-by: Vojtech Szocs <vsz...@redhat.com> --- M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/IUserPortalListModel.java D frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/IVmPoolResolutionService.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalBasicListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalItemModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java 5 files changed, 156 insertions(+), 314 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/40/10740/1 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 d0f40fa..2f82b4d 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 @@ -10,13 +10,23 @@ import org.ovirt.engine.core.common.businessentities.VMStatus; import org.ovirt.engine.core.common.businessentities.VmOsType; import org.ovirt.engine.core.common.businessentities.vm_pools; +import org.ovirt.engine.core.common.queries.VdcQueryParametersBase; +import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; +import org.ovirt.engine.core.common.queries.VdcQueryType; +import org.ovirt.engine.core.compat.Event; +import org.ovirt.engine.core.compat.EventArgs; +import org.ovirt.engine.core.compat.EventDefinition; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.PropertyChangedEventArgs; import org.ovirt.engine.core.compat.StringHelper; +import org.ovirt.engine.ui.frontend.AsyncQuery; import org.ovirt.engine.ui.frontend.Frontend; +import org.ovirt.engine.ui.frontend.INewAsyncCallback; +import org.ovirt.engine.ui.uicommonweb.Linq; import org.ovirt.engine.ui.uicommonweb.UICommand; import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; import org.ovirt.engine.ui.uicommonweb.models.ListWithDetailsModel; +import org.ovirt.engine.ui.uicommonweb.models.Model; import org.ovirt.engine.ui.uicommonweb.models.vms.ConsoleModel; import org.ovirt.engine.ui.uicommonweb.models.vms.ConsoleSelectionContext; import org.ovirt.engine.ui.uicommonweb.models.vms.RdpConsoleModel; @@ -26,6 +36,43 @@ public abstract class IUserPortalListModel extends ListWithDetailsModel implements UserSelectedDisplayProtocolManager { + + public static EventDefinition SearchCompletedEventDefinition; + private Event privateSearchCompletedEvent; + + public Event getSearchCompletedEvent() + { + return privateSearchCompletedEvent; + } + + private void setSearchCompletedEvent(Event value) + { + privateSearchCompletedEvent = value; + } + + private ArrayList<VM> privatevms; + + public ArrayList<VM> getvms() + { + return privatevms; + } + + public void setvms(ArrayList<VM> value) + { + privatevms = value; + } + + private ArrayList<vm_pools> privatepools; + + public ArrayList<vm_pools> getpools() + { + return privatepools; + } + + public void setpools(ArrayList<vm_pools> value) + { + privatepools = value; + } private boolean canConnectAutomatically; @@ -42,6 +89,7 @@ VmOsType.Windows2012x64); public IUserPortalListModel() { + setSearchCompletedEvent(new Event(SearchCompletedEventDefinition)); cachedConsoleModels = new HashMap<Guid, ArrayList<ConsoleModel>>(); setEditConsoleCommand(new UICommand("NewServer", this)); //$NON-NLS-1$ } @@ -66,15 +114,6 @@ private void setEditConsoleCommand(UICommand editConsoleCommand) { this.editConsoleCommand = editConsoleCommand; - } - - public abstract void OnVmAndPoolLoad(); - - protected HashMap<Guid, vm_pools> poolMap; - - public vm_pools ResolveVmPoolById(Guid id) - { - return poolMap.get(id); } // Return a list of VMs with status 'UP' @@ -303,4 +342,100 @@ return null; } + + @Override + protected void SyncSearch() + { + super.SyncSearch(); + Frontend.RunQuery(VdcQueryType.GetAllVmsAndVmPools, + new VdcQueryParametersBase(), + new AsyncQuery(this, new INewAsyncCallback() { + @Override + public void OnSuccess(Object model, Object returnValue) { + IUserPortalListModel userPortalListModel = (IUserPortalListModel) model; + ArrayList<VM> vms = new ArrayList<VM>(); + ArrayList<vm_pools> pools = new ArrayList<vm_pools>(); + + VdcQueryReturnValue retValue = (VdcQueryReturnValue) returnValue; + if (retValue != null && retValue.getSucceeded()) { + List<Object> list = (ArrayList<Object>) retValue.getReturnValue(); + + if (list != null) { + for (Object object : list) { + if (object instanceof VM) { + vms.add((VM) object); + } else if (object instanceof vm_pools) { + pools.add((vm_pools) object); + } + } + } + } + + userPortalListModel.setvms(vms); + userPortalListModel.setpools(pools); + userPortalListModel.OnVmAndPoolLoad(); + } + })); + } + + @Override + protected void AsyncSearch() + { + super.AsyncSearch(); + SyncSearch(); + } + + private void OnVmAndPoolLoad() + { + if (getvms() != null && getpools() != null) + { + // 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); + Linq.Sort(all, new Linq.VmAndPoolByNameComparer()); + + ArrayList<Model> items = new ArrayList<Model>(); + for (Object item : all) + { + UserPortalItemModel model = new UserPortalItemModel(this); + model.setEntity(item); + items.add(model); + + updateConsoleModel(model); + } + + setCanConnectAutomatically(canConnectAutomatically(items)); + setItems(items); + + setvms(null); + setpools(null); + + getSearchCompletedEvent().raise(this, EventArgs.Empty); + } + } + + protected abstract boolean canConnectAutomatically(ArrayList<Model> items); + } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/IVmPoolResolutionService.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/IVmPoolResolutionService.java deleted file mode 100644 index 7b03316..0000000 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/IVmPoolResolutionService.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.ovirt.engine.ui.uicommonweb.models.userportal; - -import org.ovirt.engine.core.common.businessentities.vm_pools; -import org.ovirt.engine.core.compat.Guid; - -public interface IVmPoolResolutionService -{ - vm_pools ResolveVmPoolById(Guid id); -} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalBasicListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalBasicListModel.java index fb4ae30..4ac8365 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalBasicListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalBasicListModel.java @@ -2,12 +2,10 @@ import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.businessentities.vm_pools; import org.ovirt.engine.core.common.queries.GetVmdataByPoolIdParameters; -import org.ovirt.engine.core.common.queries.VdcQueryParametersBase; import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.compat.Event; @@ -19,29 +17,14 @@ import org.ovirt.engine.ui.frontend.AsyncQuery; import org.ovirt.engine.ui.frontend.Frontend; import org.ovirt.engine.ui.frontend.INewAsyncCallback; -import org.ovirt.engine.ui.uicommonweb.Linq; import org.ovirt.engine.ui.uicommonweb.UICommand; import org.ovirt.engine.ui.uicommonweb.models.EntityModel; import org.ovirt.engine.ui.uicommonweb.models.ListModel; import org.ovirt.engine.ui.uicommonweb.models.Model; import org.ovirt.engine.ui.uicommonweb.models.vms.ConsoleModel; -@SuppressWarnings("unused") -public class UserPortalBasicListModel extends IUserPortalListModel implements IVmPoolResolutionService +public class UserPortalBasicListModel extends IUserPortalListModel { - - public static EventDefinition SearchCompletedEventDefinition; - private Event privateSearchCompletedEvent; - - public Event getSearchCompletedEvent() - { - return privateSearchCompletedEvent; - } - - private void setSearchCompletedEvent(Event value) - { - privateSearchCompletedEvent = value; - } private ListModel privatevmBasicDiskListModel; @@ -53,30 +36,6 @@ private void setvmBasicDiskListModel(ListModel value) { privatevmBasicDiskListModel = value; - } - - private ArrayList<VM> privatevms; - - public ArrayList<VM> getvms() - { - return privatevms; - } - - public void setvms(ArrayList<VM> value) - { - privatevms = value; - } - - private ArrayList<vm_pools> privatepools; - - public ArrayList<vm_pools> getpools() - { - return privatepools; - } - - public void setpools(ArrayList<vm_pools> value) - { - privatepools = value; } private EntityModel privateSelectedItemDefinedMemory; @@ -112,54 +71,10 @@ public UserPortalBasicListModel() { - setSearchCompletedEvent(new Event(SearchCompletedEventDefinition)); - setSelectedItemDefinedMemory(new EntityModel()); setSelectedItemNumOfCpuCores(new EntityModel()); cachedConsoleModels = new HashMap<Guid, ArrayList<ConsoleModel>>(); - } - - @Override - protected void SyncSearch() - { - super.SyncSearch(); - Frontend.RunQuery(VdcQueryType.GetAllVmsAndVmPools, - new VdcQueryParametersBase(), - new AsyncQuery(this, new INewAsyncCallback() { - - @Override - public void OnSuccess(Object model, Object returnValue) { - UserPortalBasicListModel userPortalBasicListModel = (UserPortalBasicListModel) model; - ArrayList<VM> vms = new ArrayList<VM>(); - ArrayList<vm_pools> pools = new ArrayList<vm_pools>(); - - VdcQueryReturnValue retValue = (VdcQueryReturnValue) returnValue; - if (retValue != null && retValue.getSucceeded()) { - List<Object> list = (ArrayList<Object>) retValue.getReturnValue(); - if (list != null) { - for (Object object : list) { - if (object instanceof VM) { - vms.add((VM) object); - } else if (object instanceof vm_pools) { - pools.add((vm_pools) object); - } - } - } - } - - userPortalBasicListModel.setvms(vms); - userPortalBasicListModel.setpools(pools); - userPortalBasicListModel.OnVmAndPoolLoad(); - } - })); - } - - @Override - protected void AsyncSearch() - { - super.AsyncSearch(); - SyncSearch(); } @Override @@ -278,63 +193,11 @@ } @Override - public void OnVmAndPoolLoad() - { - if (getvms() != null && getpools() != null) - { - // Complete search. - - // Remove pools that has provided VMs. - ArrayList<vm_pools> filteredPools = new ArrayList<vm_pools>(); - poolMap = new HashMap<Guid, vm_pools>(); - - for (vm_pools pool : getpools()) - { - // Add pool to map. - poolMap.put(pool.getvm_pool_id(), pool); - - 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); - Linq.Sort(all, new Linq.VmAndPoolByNameComparer()); - - ArrayList<Model> items = new ArrayList<Model>(); - for (Object item : all) - { - UserPortalItemModel model = new UserPortalItemModel(this, this); - model.setEntity(item); - items.add(model); - - updateConsoleModel(model); - } - - // In userportal 'Basic View': Set 'CanConnectAutomatically' to true if there's one and only one VM in - // status 'UP' and the other VMs aren't up. - setCanConnectAutomatically(GetStatusUpVms(items).size() == 1 && GetUpVms(items).size() == 1 - && GetStatusUpVms(items).get(0).getDefaultConsole().getConnectCommand().getIsExecutionAllowed()); - - setItems(items); - - setvms(null); - setpools(null); - - getSearchCompletedEvent().raise(this, EventArgs.Empty); - } + protected boolean canConnectAutomatically(ArrayList<Model> items) { + // In userportal 'Basic View': Set 'CanConnectAutomatically' to true if there's one and only one VM in + // status 'UP' and the other VMs aren't up. + return GetStatusUpVms(items).size() == 1 && GetUpVms(items).size() == 1 + && GetStatusUpVms(items).get(0).getDefaultConsole().getConnectCommand().getIsExecutionAllowed(); } @Override diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalItemModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalItemModel.java index 38dfbb4..3d65a08 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalItemModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalItemModel.java @@ -116,18 +116,6 @@ returnVmCommand = value; } - private IVmPoolResolutionService privateResolutionService; - - public IVmPoolResolutionService getResolutionService() - { - return privateResolutionService; - } - - private void setResolutionService(IVmPoolResolutionService value) - { - privateResolutionService = value; - } - private String name; public String getName() @@ -336,10 +324,9 @@ private ItemBehavior behavior; private final UserSelectedDisplayProtocolManager userSelectedDisplayProtocolManager; - public UserPortalItemModel(IVmPoolResolutionService resolutionService, UserSelectedDisplayProtocolManager userSelectedDisplayManager) + public UserPortalItemModel(UserSelectedDisplayProtocolManager userSelectedDisplayManager) { this.userSelectedDisplayProtocolManager = userSelectedDisplayManager; - setResolutionService(resolutionService); setRunCommand(new UICommand("Run", this)); //$NON-NLS-1$ setPauseCommand(new UICommand("Pause", this)); //$NON-NLS-1$ diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java index 85181fd..39aa828 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java @@ -32,10 +32,8 @@ import org.ovirt.engine.core.common.businessentities.VolumeType; import org.ovirt.engine.core.common.businessentities.storage_domains; import org.ovirt.engine.core.common.businessentities.storage_pool; -import org.ovirt.engine.core.common.businessentities.vm_pools; import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; import org.ovirt.engine.core.common.queries.IdQueryParameters; -import org.ovirt.engine.core.common.queries.VdcQueryParametersBase; import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.compat.Event; @@ -84,21 +82,8 @@ import org.ovirt.engine.ui.uicompat.IFrontendActionAsyncCallback; import org.ovirt.engine.ui.uicompat.IFrontendMultipleActionAsyncCallback; -public class UserPortalListModel extends IUserPortalListModel implements IVmPoolResolutionService +public class UserPortalListModel extends IUserPortalListModel { - - public static EventDefinition SearchCompletedEventDefinition; - private Event privateSearchCompletedEvent; - - public Event getSearchCompletedEvent() - { - return privateSearchCompletedEvent; - } - - private void setSearchCompletedEvent(Event value) - { - privateSearchCompletedEvent = value; - } private UICommand privateNewDesktopCommand; @@ -208,29 +193,6 @@ private EntityModel poolGeneralModel; private ListModel poolDiskListModel; private ListModel poolInterfaceListModel; - private ArrayList<VM> privatevms; - - public ArrayList<VM> getvms() - { - return privatevms; - } - - public void setvms(ArrayList<VM> value) - { - privatevms = value; - } - - private ArrayList<vm_pools> privatepools; - - public ArrayList<vm_pools> getpools() - { - return privatepools; - } - - public void setpools(ArrayList<vm_pools> value) - { - privatepools = value; - } private VM privatetempVm; @@ -273,8 +235,6 @@ public UserPortalListModel() { - setSearchCompletedEvent(new Event(SearchCompletedEventDefinition)); - setNewDesktopCommand(new UICommand("NewDesktop", this)); //$NON-NLS-1$ setNewServerCommand(new UICommand("NewServer", this)); //$NON-NLS-1$ setEditCommand(new UICommand("Edit", this)); //$NON-NLS-1$ @@ -336,48 +296,6 @@ } OnSelectedItemChanged(); } - } - - @Override - protected void SyncSearch() - { - super.SyncSearch(); - Frontend.RunQuery(VdcQueryType.GetAllVmsAndVmPools, - new VdcQueryParametersBase(), - new AsyncQuery(this, new INewAsyncCallback() { - - @Override - public void OnSuccess(Object model, Object returnValue) { - UserPortalListModel userPortalListModel = (UserPortalListModel) model; - ArrayList<VM> vms = new ArrayList<VM>(); - ArrayList<vm_pools> pools = new ArrayList<vm_pools>(); - - VdcQueryReturnValue retValue = (VdcQueryReturnValue) returnValue; - if (retValue != null && retValue.getSucceeded()) { - List<Object> list = (ArrayList<Object>) retValue.getReturnValue(); - if (list != null) { - for (Object object : list) { - if (object instanceof VM) { - vms.add((VM) object); - } else if (object instanceof vm_pools) { - pools.add((vm_pools) object); - } - } - } - } - - userPortalListModel.setvms(vms); - userPortalListModel.setpools(pools); - userPortalListModel.OnVmAndPoolLoad(); - } - })); - } - - @Override - protected void AsyncSearch() - { - super.AsyncSearch(); - SyncSearch(); } @Override @@ -1699,62 +1617,10 @@ } @Override - public void OnVmAndPoolLoad() - { - if (getvms() != null && getpools() != null) - { - // Complete search. - - // Remove pools that has provided VMs. - ArrayList<vm_pools> filteredPools = new ArrayList<vm_pools>(); - poolMap = new HashMap<Guid, vm_pools>(); - - for (vm_pools pool : getpools()) - { - // Add pool to map. - poolMap.put(pool.getvm_pool_id(), pool); - - 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); - Linq.Sort(all, new Linq.VmAndPoolByNameComparer()); - - ArrayList<Model> items = new ArrayList<Model>(); - for (Object item : all) - { - UserPortalItemModel model = new UserPortalItemModel(this, this); - model.setEntity(item); - items.add(model); - - updateConsoleModel(model); - } - - // In userportal 'Extended View': Set 'CanConnectAutomatically' to true if there's one and only one up VM. - setCanConnectAutomatically(GetUpVms(items).size() == 1 - && GetUpVms(items).get(0).getDefaultConsole().getConnectCommand().getIsExecutionAllowed()); - - setItems(items); - - setvms(null); - setpools(null); - - getSearchCompletedEvent().raise(this, EventArgs.Empty); - } + protected boolean canConnectAutomatically(ArrayList<Model> items) { + // In userportal 'Extended View': Set 'CanConnectAutomatically' to true if there's one and only one up VM. + return GetUpVms(items).size() == 1 + && GetUpVms(items).get(0).getDefaultConsole().getConnectCommand().getIsExecutionAllowed(); } @Override -- To view, visit http://gerrit.ovirt.org/10740 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ifaefb2cffa5fa13bc04cf702abfcc96e485dfad4 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Vojtech Szocs <vsz...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches