Arik Hadas has uploaded a new change for review.

Change subject: frontend: refactor VmListModel#onSave method
......................................................................

frontend: refactor VmListModel#onSave method

Extract code from VmListModel#onSave to two separate methods:
- saveNewVm which adds VM as new entity
- updateExistingVm which updates existing VM entity

It makes the code more maintainable, as the onSave method was too long
and had too many responsibilities.

Change-Id: I90a0164146fd17eb2dced71699bbf3d8ac489004
Signed-off-by: Arik Hadas <[email protected]>
---
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java
1 file changed, 185 insertions(+), 183 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/57/27557/1

diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java
index e37ce1f..460f8df 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java
@@ -420,6 +420,22 @@
 
     private ErrorPopupManager errorPopupManager;
 
+    VmInterfaceCreatingManager defaultNetworkCreatingManager =
+            new VmInterfaceCreatingManager(new 
VmInterfaceCreatingManager.PostVnicCreatedCallback() {
+                @Override
+                public void vnicCreated(Guid vmId) {
+                    getWindow().stopProgress();
+                    cancel();
+                    updateActionAvailability();
+                }
+
+                @Override
+                public void queryFailed() {
+                    getWindow().stopProgress();
+                    cancel();
+                }
+            });
+
     public VmListModel()
     {
         
setTitle(ConstantsManager.getInstance().getConstants().virtualMachinesTitle());
@@ -787,14 +803,13 @@
         switchModeCommand.init(model);
         model.getCommands().add(switchModeCommand);
 
-        UICommand tempVar = new UICommand("OnSave", this); //$NON-NLS-1$
-        tempVar.setTitle(ConstantsManager.getInstance().getConstants().ok());
-        tempVar.setIsDefault(true);
-        model.getCommands().add(tempVar);
-        UICommand tempVar2 = new UICommand("Cancel", this); //$NON-NLS-1$
-        
tempVar2.setTitle(ConstantsManager.getInstance().getConstants().cancel());
-        tempVar2.setIsCancel(true);
-        model.getCommands().add(tempVar2);
+        model.getCommands().add(new UICommand("OnSave", this) //$NON-NLS-1$
+          .setTitle(ConstantsManager.getInstance().getConstants().ok())
+          .setIsDefault(true));
+
+        model.getCommands().add(new UICommand("Cancel", this) //$NON-NLS-1$
+          .setTitle(ConstantsManager.getInstance().getConstants().cancel())
+          .setIsCancel(true));
     }
 
     private Map<Guid, EntityModel> vmsRemoveMap;
@@ -1960,24 +1975,7 @@
     }
 
     private void onSave() {
-        final VmInterfaceCreatingManager defaultNetworkCreatingManager =
-                new VmInterfaceCreatingManager(new 
VmInterfaceCreatingManager.PostVnicCreatedCallback() {
-                    @Override
-                    public void vnicCreated(Guid vmId) {
-                        getWindow().stopProgress();
-                        cancel();
-                        updateActionAvailability();
-                    }
-
-                    @Override
-                    public void queryFailed() {
-                        getWindow().stopProgress();
-                        cancel();
-                    }
-                });
-
         final UnitVmModel model = (UnitVmModel) getWindow();
-        VM selectedItem = (VM) getSelectedItem();
 
         // Save changes.
         buildVmOnSave(model, getcurrentVm());
@@ -1996,173 +1994,173 @@
 
         if (model.getIsNew())
         {
-            if (getcurrentVm().getVmtGuid().equals(Guid.Empty))
-            {
-                if (model.getProgress() != null)
-                {
-                    return;
-                }
-
-                VmInterfaceCreatingManager addVmFromScratchNetworkManager =
-                        new VmInterfaceCreatingManager(new 
VmInterfaceCreatingManager.PostVnicCreatedCallback() {
-                            @Override
-                            public void vnicCreated(Guid vmId) {
-                                // do nothing
-                            }
-
-                            @Override
-                            public void queryFailed() {
-                                // do nothing
-                            }
-                        });
-
-                model.startProgress(null);
-
-                AddVmFromScratchParameters parameters = new 
AddVmFromScratchParameters(getcurrentVm(),
-                        new ArrayList<DiskImage>(),
-                        Guid.Empty);
-                
parameters.setSoundDeviceEnabled(model.getIsSoundcardEnabled().getEntity());
-                
parameters.setConsoleEnabled(model.getIsConsoleDeviceEnabled().getEntity());
-                
parameters.setVirtioScsiEnabled(model.getIsVirtioScsiEnabled().getEntity());
-                parameters.setBalloonEnabled(balloonEnabled(model));
-
-                setVmWatchdogToParams(model, parameters);
-
-                
Frontend.getInstance().runAction(VdcActionType.AddVmFromScratch,
-                        parameters,
-                        new UnitVmModelNetworkAsyncCallback(model, 
addVmFromScratchNetworkManager) {
-                    @Override
-                    public void executed(FrontendActionAsyncResult result) {
-                        getWindow().stopProgress();
-                        VdcReturnValueBase returnValue = 
result.getReturnValue();
-                        if (returnValue != null && returnValue.getSucceeded()) 
{
-                            setWindow(null);
-                            
setGuideContext(returnValue.getActionReturnValue());
-                            updateActionAvailability();
-                            getGuideCommand().execute();
-                        } else {
-                            cancel();
-                        }
-                        super.executed(result);
-                    }
-                }, this);
-            }
-            else
-            {
-                if (model.getProgress() != null)
-                {
-                    return;
-                }
-
-                if (model.getProvisioning().getEntity())
-                {
-                    model.startProgress(null);
-
-                    AsyncQuery _asyncQuery = new AsyncQuery();
-                    _asyncQuery.setModel(this);
-                    _asyncQuery.asyncCallback = new INewAsyncCallback() {
-                        @Override
-                        public void onSuccess(Object model1, Object result1)
-                        {
-                            VmListModel vmListModel = (VmListModel) model1;
-                            UnitVmModel unitVmModel = (UnitVmModel) 
vmListModel.getWindow();
-
-                            VM vm = vmListModel.getcurrentVm();
-                            
vm.setUseLatestVersion(constants.latestTemplateVersionName().equals(unitVmModel.getTemplate().getSelectedItem().getTemplateVersionName()));
-
-                            AddVmFromTemplateParameters param = new 
AddVmFromTemplateParameters(vm,
-                                    
unitVmModel.getDisksAllocationModel().getImageToDestinationDomainMap(),
-                                    Guid.Empty);
-                            
param.setSoundDeviceEnabled(model.getIsSoundcardEnabled().getEntity());
-                            
param.setVirtioScsiEnabled(model.getIsVirtioScsiEnabled().getEntity());
-                            
param.setConsoleEnabled(model.getIsConsoleDeviceEnabled().getEntity());
-                            param.setBalloonEnabled(balloonEnabled(model));
-                            
param.setCopyTemplatePermissions(model.getCopyPermissions().getEntity());
-
-                            
Frontend.getInstance().runAction(VdcActionType.AddVmFromTemplate, param, new 
UnitVmModelNetworkAsyncCallback(model, defaultNetworkCreatingManager), 
vmListModel);
-                        }
-                    };
-                    AsyncDataProvider.getTemplateDiskList(_asyncQuery, 
getcurrentVm().getVmtGuid());
-                }
-                else
-                {
-                    if (model.getProgress() != null)
-                    {
-                        return;
-                    }
-
-                    model.startProgress(null);
-
-                    VM vm = getcurrentVm();
-                    
vm.setUseLatestVersion(constants.latestTemplateVersionName().equals(model.getTemplate().getSelectedItem().getTemplateVersionName()));
-
-                    VmManagementParametersBase params = new 
VmManagementParametersBase(vm);
-                    
params.setDiskInfoDestinationMap(model.getDisksAllocationModel().getImageToDestinationDomainMap());
-                    
params.setConsoleEnabled(model.getIsConsoleDeviceEnabled().getEntity());
-                    params.setBalloonEnabled(balloonEnabled(model));
-                    
params.setCopyTemplatePermissions(model.getCopyPermissions().getEntity());
-
-                    ArrayList<VdcActionParametersBase> parameters = new 
ArrayList<VdcActionParametersBase>();
-                    parameters.add(params);
-                    
params.setSoundDeviceEnabled(model.getIsSoundcardEnabled().getEntity());
-                    
params.setVirtioScsiEnabled(model.getIsVirtioScsiEnabled().getEntity());
-                    setVmWatchdogToParams(model, params);
-
-                    Frontend.getInstance().runAction(VdcActionType.AddVm, 
params, new UnitVmModelNetworkAsyncCallback(model, 
defaultNetworkCreatingManager), this);
-                }
-            }
+            saveNewVm(model);
         }
         else // Update existing VM -> consists of editing VM cluster, and if 
succeeds - editing VM:
+        {
+            VM selectedItem = (VM) getSelectedItem();
+            // explicitly pass non-editable field from the original VM
+            
getcurrentVm().setCreatedByUserId(selectedItem.getCreatedByUserId());
+            
getcurrentVm().setUseLatestVersion(constants.latestTemplateVersionName().equals(model.getTemplate().getSelectedItem().getTemplateVersionName()));
+
+            updateExistingVm(model);
+        }
+    }
+
+    private void updateExistingVm(final UnitVmModel model) {
+        if (model.getProgress() != null)
+        {
+            return;
+        }
+
+        // runEditVM: should be true if Cluster hasn't changed or if
+        // Cluster has changed and Editing it in the Backend has succeeded:
+        VM selectedItem = (VM) getSelectedItem();
+        Guid oldClusterID = selectedItem.getVdsGroupId();
+        Guid newClusterID = model.getSelectedCluster().getId();
+        if (oldClusterID.equals(newClusterID) == false)
+        {
+            ChangeVMClusterParameters parameters =
+                    new ChangeVMClusterParameters(newClusterID, 
getcurrentVm().getId());
+
+            model.startProgress(null);
+
+            Frontend.getInstance().runAction(VdcActionType.ChangeVMCluster, 
parameters,
+                    new IFrontendActionAsyncCallback() {
+                        @Override
+                        public void executed(FrontendActionAsyncResult result) 
{
+
+                            final VmListModel vmListModel = (VmListModel) 
result.getState();
+                            VdcReturnValueBase returnValueBase = 
result.getReturnValue();
+                            if (returnValueBase != null && 
returnValueBase.getSucceeded())
+                            {
+                                VM vm = vmListModel.getcurrentVm();
+
+                                VmManagementParametersBase updateVmParams = 
new VmManagementParametersBase(vm);
+                                setVmWatchdogToParams(model, updateVmParams);
+                                
updateVmParams.setSoundDeviceEnabled(model.getIsSoundcardEnabled()
+                                        .getEntity());
+                                
updateVmParams.setBalloonEnabled(balloonEnabled(model));
+                                
updateVmParams.setVirtioScsiEnabled(model.getIsVirtioScsiEnabled().getEntity());
+
+                                
Frontend.getInstance().runAction(VdcActionType.UpdateVm,
+                                        updateVmParams, new 
UnitVmModelNetworkAsyncCallback(model, defaultNetworkCreatingManager, 
vm.getId()), vmListModel);
+                            }
+                            else
+                            {
+                                vmListModel.getWindow().stopProgress();
+                            }
+
+                        }
+                    },
+                    this);
+        }
+        else
+        {
+            model.startProgress(null);
+
+            VM vm = getcurrentVm();
+
+            VmManagementParametersBase updateVmParams = new 
VmManagementParametersBase(vm);
+
+            setVmWatchdogToParams(model, updateVmParams);
+            
updateVmParams.setSoundDeviceEnabled(model.getIsSoundcardEnabled().getEntity());
+            
updateVmParams.setConsoleEnabled(model.getIsConsoleDeviceEnabled().getEntity());
+            updateVmParams.setBalloonEnabled(balloonEnabled(model));
+            
updateVmParams.setVirtioScsiEnabled(model.getIsVirtioScsiEnabled().getEntity());
+
+            Frontend.getInstance().runAction(VdcActionType.UpdateVm, 
updateVmParams, new UnitVmModelNetworkAsyncCallback(model, 
defaultNetworkCreatingManager, getcurrentVm().getId()), this);
+        }
+    }
+
+    private void saveNewVm(final UnitVmModel model) {
+        if (getcurrentVm().getVmtGuid().equals(Guid.Empty))
         {
             if (model.getProgress() != null)
             {
                 return;
             }
 
-            // explicitly pass non-editable field from the original VM
-            
getcurrentVm().setCreatedByUserId(selectedItem.getCreatedByUserId());
+            VmInterfaceCreatingManager addVmFromScratchNetworkManager =
+                    new VmInterfaceCreatingManager(new 
VmInterfaceCreatingManager.PostVnicCreatedCallback() {
+                        @Override
+                        public void vnicCreated(Guid vmId) {
+                            // do nothing
+                        }
 
-            // runEditVM: should be true if Cluster hasn't changed or if
-            // Cluster has changed and Editing it in the Backend has succeeded:
-            Guid oldClusterID = selectedItem.getVdsGroupId();
-            Guid newClusterID = model.getSelectedCluster().getId();
-            if (oldClusterID.equals(newClusterID) == false)
+                        @Override
+                        public void queryFailed() {
+                            // do nothing
+                        }
+                    });
+
+            model.startProgress(null);
+
+            AddVmFromScratchParameters parameters = new 
AddVmFromScratchParameters(getcurrentVm(),
+                    new ArrayList<DiskImage>(),
+                    Guid.Empty);
+            
parameters.setSoundDeviceEnabled(model.getIsSoundcardEnabled().getEntity());
+            
parameters.setConsoleEnabled(model.getIsConsoleDeviceEnabled().getEntity());
+            
parameters.setVirtioScsiEnabled(model.getIsVirtioScsiEnabled().getEntity());
+            parameters.setBalloonEnabled(balloonEnabled(model));
+
+            setVmWatchdogToParams(model, parameters);
+
+            Frontend.getInstance().runAction(VdcActionType.AddVmFromScratch,
+                    parameters,
+                    new UnitVmModelNetworkAsyncCallback(model, 
addVmFromScratchNetworkManager) {
+                @Override
+                public void executed(FrontendActionAsyncResult result) {
+                    getWindow().stopProgress();
+                    VdcReturnValueBase returnValue = result.getReturnValue();
+                    if (returnValue != null && returnValue.getSucceeded()) {
+                        setWindow(null);
+                        setGuideContext(returnValue.getActionReturnValue());
+                        updateActionAvailability();
+                        getGuideCommand().execute();
+                    } else {
+                        cancel();
+                    }
+                    super.executed(result);
+                }
+            }, this);
+        }
+        else
+        {
+            if (model.getProgress() != null)
             {
-                ChangeVMClusterParameters parameters =
-                        new ChangeVMClusterParameters(newClusterID, 
getcurrentVm().getId());
+                return;
+            }
 
+            if (model.getProvisioning().getEntity())
+            {
                 model.startProgress(null);
 
-                
Frontend.getInstance().runAction(VdcActionType.ChangeVMCluster, parameters,
-                        new IFrontendActionAsyncCallback() {
-                            @Override
-                            public void executed(FrontendActionAsyncResult 
result) {
+                AsyncQuery _asyncQuery = new AsyncQuery();
+                _asyncQuery.setModel(this);
+                _asyncQuery.asyncCallback = new INewAsyncCallback() {
+                    @Override
+                    public void onSuccess(Object model1, Object result1)
+                    {
+                        VmListModel vmListModel = (VmListModel) model1;
+                        UnitVmModel unitVmModel = (UnitVmModel) 
vmListModel.getWindow();
 
-                                final VmListModel vmListModel = (VmListModel) 
result.getState();
-                                VdcReturnValueBase returnValueBase = 
result.getReturnValue();
-                                if (returnValueBase != null && 
returnValueBase.getSucceeded())
-                                {
-                                    VM vm = vmListModel.getcurrentVm();
-                                    
vm.setUseLatestVersion(constants.latestTemplateVersionName().equals(model.getTemplate().getSelectedItem().getTemplateVersionName()));
+                        VM vm = vmListModel.getcurrentVm();
+                        
vm.setUseLatestVersion(constants.latestTemplateVersionName().equals(unitVmModel.getTemplate().getSelectedItem().getTemplateVersionName()));
 
-                                    VmManagementParametersBase updateVmParams 
= new VmManagementParametersBase(vm);
-                                    setVmWatchdogToParams(model, 
updateVmParams);
-                                    
updateVmParams.setSoundDeviceEnabled(model.getIsSoundcardEnabled()
-                                            .getEntity());
-                                    
updateVmParams.setBalloonEnabled(balloonEnabled(model));
-                                    
updateVmParams.setVirtioScsiEnabled(model.getIsVirtioScsiEnabled().getEntity());
+                        AddVmFromTemplateParameters param = new 
AddVmFromTemplateParameters(vm,
+                                
unitVmModel.getDisksAllocationModel().getImageToDestinationDomainMap(),
+                                Guid.Empty);
+                        
param.setSoundDeviceEnabled(model.getIsSoundcardEnabled().getEntity());
+                        
param.setVirtioScsiEnabled(model.getIsVirtioScsiEnabled().getEntity());
+                        
param.setConsoleEnabled(model.getIsConsoleDeviceEnabled().getEntity());
+                        param.setBalloonEnabled(balloonEnabled(model));
+                        
param.setCopyTemplatePermissions(model.getCopyPermissions().getEntity());
 
-                                    
Frontend.getInstance().runAction(VdcActionType.UpdateVm,
-                                            updateVmParams, new 
UnitVmModelNetworkAsyncCallback(model, defaultNetworkCreatingManager, 
vm.getId()), vmListModel);
-                                }
-                                else
-                                {
-                                    vmListModel.getWindow().stopProgress();
-                                }
-
-                            }
-                        },
-                        this);
+                        
Frontend.getInstance().runAction(VdcActionType.AddVmFromTemplate, param, new 
UnitVmModelNetworkAsyncCallback(model, defaultNetworkCreatingManager), 
vmListModel);
+                    }
+                };
+                AsyncDataProvider.getTemplateDiskList(_asyncQuery, 
getcurrentVm().getVmtGuid());
             }
             else
             {
@@ -2176,15 +2174,19 @@
                 VM vm = getcurrentVm();
                 
vm.setUseLatestVersion(constants.latestTemplateVersionName().equals(model.getTemplate().getSelectedItem().getTemplateVersionName()));
 
-                VmManagementParametersBase updateVmParams = new 
VmManagementParametersBase(vm);
+                VmManagementParametersBase params = new 
VmManagementParametersBase(vm);
+                
params.setDiskInfoDestinationMap(model.getDisksAllocationModel().getImageToDestinationDomainMap());
+                
params.setConsoleEnabled(model.getIsConsoleDeviceEnabled().getEntity());
+                params.setBalloonEnabled(balloonEnabled(model));
+                
params.setCopyTemplatePermissions(model.getCopyPermissions().getEntity());
 
-                setVmWatchdogToParams(model, updateVmParams);
-                
updateVmParams.setSoundDeviceEnabled(model.getIsSoundcardEnabled().getEntity());
-                
updateVmParams.setConsoleEnabled(model.getIsConsoleDeviceEnabled().getEntity());
-                updateVmParams.setBalloonEnabled(balloonEnabled(model));
-                
updateVmParams.setVirtioScsiEnabled(model.getIsVirtioScsiEnabled().getEntity());
+                ArrayList<VdcActionParametersBase> parameters = new 
ArrayList<VdcActionParametersBase>();
+                parameters.add(params);
+                
params.setSoundDeviceEnabled(model.getIsSoundcardEnabled().getEntity());
+                
params.setVirtioScsiEnabled(model.getIsVirtioScsiEnabled().getEntity());
+                setVmWatchdogToParams(model, params);
 
-                Frontend.getInstance().runAction(VdcActionType.UpdateVm, 
updateVmParams, new UnitVmModelNetworkAsyncCallback(model, 
defaultNetworkCreatingManager, getcurrentVm().getId()), this);
+                Frontend.getInstance().runAction(VdcActionType.AddVm, params, 
new UnitVmModelNetworkAsyncCallback(model, defaultNetworkCreatingManager), 
this);
             }
         }
     }


-- 
To view, visit http://gerrit.ovirt.org/27557
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I90a0164146fd17eb2dced71699bbf3d8ac489004
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Arik Hadas <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to