Arik Hadas has uploaded a new change for review.

Change subject: webadmin: replace duplicated code with builders
......................................................................

webadmin: replace duplicated code with builders

Add a builder that maps properties in UnitVmModel to
AddVmTemplateParameters and a builder that is a composite of
KernelParamsVmBaseToVmBaseBuilder
DedicatedVmForVdsVmBaseToVmBaseBuilder
MigrationOptionsVmBaseToVmBaseBuilder
and UsbPolicyVmBaseToVmBaseBuilder.

These builders replace the duplicated code that was added when the
clone template from snapshot operation was added to the snapshots
sub-tab.

Change-Id: Ibfbc42621b15d3115fba2f1da27d8489e72281fc
Signed-off-by: Arik Hadas <aha...@redhat.com>
---
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/template/UnitToAddVmTemplateParametersBuilder.java
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/template/VmBaseToVmBaseForTemplateCompositeBaseBuilder.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java
4 files changed, 58 insertions(+), 50 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/39/41639/1

diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/template/UnitToAddVmTemplateParametersBuilder.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/template/UnitToAddVmTemplateParametersBuilder.java
new file mode 100644
index 0000000..3e9c233
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/template/UnitToAddVmTemplateParametersBuilder.java
@@ -0,0 +1,30 @@
+package org.ovirt.engine.ui.uicommonweb.builders.template;
+
+import org.ovirt.engine.core.common.action.AddVmTemplateParameters;
+import org.ovirt.engine.ui.uicommonweb.builders.BaseSyncBuilder;
+import org.ovirt.engine.ui.uicommonweb.models.templates.VmBaseListModel;
+import org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModel;
+
+public class UnitToAddVmTemplateParametersBuilder<T extends 
AddVmTemplateParameters> extends BaseSyncBuilder<UnitVmModel, T> {
+
+    @Override
+    protected void build(UnitVmModel source, T destination) {
+        destination.setPublicUse(source.getIsTemplatePublic().getEntity());
+        destination.setDiskInfoDestinationMap(
+                
source.getDisksAllocationModel().getImageToDestinationDomainMap());
+        
destination.setSoundDeviceEnabled(source.getIsSoundcardEnabled().getEntity());
+        destination.setBalloonEnabled(balloonEnabled(source));
+        
destination.setCopyVmPermissions(source.getCopyPermissions().getEntity());
+        
destination.setConsoleEnabled(source.getIsConsoleDeviceEnabled().getEntity());
+        if (source.getIsSubTemplate().getEntity()) {
+            
destination.setBaseTemplateId(source.getBaseTemplate().getSelectedItem().getId());
+            
destination.setTemplateVersionName(source.getTemplateVersionName().getEntity());
+        }
+    }
+
+    protected boolean balloonEnabled(UnitVmModel model) {
+        return model.getMemoryBalloonDeviceEnabled().getEntity()
+                && 
model.getSelectedCluster().getCompatibilityVersion().compareTo(VmBaseListModel.BALLOON_DEVICE_MIN_VERSION)
 >= 0;
+    }
+
+}
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/template/VmBaseToVmBaseForTemplateCompositeBaseBuilder.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/template/VmBaseToVmBaseForTemplateCompositeBaseBuilder.java
new file mode 100644
index 0000000..be7b395
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/template/VmBaseToVmBaseForTemplateCompositeBaseBuilder.java
@@ -0,0 +1,20 @@
+package org.ovirt.engine.ui.uicommonweb.builders.template;
+
+import org.ovirt.engine.core.common.businessentities.VmBase;
+import org.ovirt.engine.ui.uicommonweb.builders.CompositeSyncBuilder;
+import 
org.ovirt.engine.ui.uicommonweb.builders.vm.DedicatedVmForVdsVmBaseToVmBaseBuilder;
+import 
org.ovirt.engine.ui.uicommonweb.builders.vm.KernelParamsVmBaseToVmBaseBuilder;
+import 
org.ovirt.engine.ui.uicommonweb.builders.vm.MigrationOptionsVmBaseToVmBaseBuilder;
+import 
org.ovirt.engine.ui.uicommonweb.builders.vm.UsbPolicyVmBaseToVmBaseBuilder;
+
+public class VmBaseToVmBaseForTemplateCompositeBaseBuilder extends 
CompositeSyncBuilder<VmBase, VmBase> {
+
+    public VmBaseToVmBaseForTemplateCompositeBaseBuilder() {
+        super(
+                new KernelParamsVmBaseToVmBaseBuilder(),
+                new DedicatedVmForVdsVmBaseToVmBaseBuilder(),
+                new MigrationOptionsVmBaseToVmBaseBuilder(),
+                new UsbPolicyVmBaseToVmBaseBuilder()
+        );
+    }
+}
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 f51be8b..9c1406c 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
@@ -62,12 +62,10 @@
 import org.ovirt.engine.ui.uicommonweb.TypeResolver;
 import org.ovirt.engine.ui.uicommonweb.UICommand;
 import org.ovirt.engine.ui.uicommonweb.builders.BuilderExecutor;
+import 
org.ovirt.engine.ui.uicommonweb.builders.template.UnitToAddVmTemplateParametersBuilder;
+import 
org.ovirt.engine.ui.uicommonweb.builders.template.VmBaseToVmBaseForTemplateCompositeBaseBuilder;
 import org.ovirt.engine.ui.uicommonweb.builders.vm.CommonUnitToVmBaseBuilder;
-import 
org.ovirt.engine.ui.uicommonweb.builders.vm.DedicatedVmForVdsVmBaseToVmBaseBuilder;
-import 
org.ovirt.engine.ui.uicommonweb.builders.vm.KernelParamsVmBaseToVmBaseBuilder;
-import 
org.ovirt.engine.ui.uicommonweb.builders.vm.MigrationOptionsVmBaseToVmBaseBuilder;
 import 
org.ovirt.engine.ui.uicommonweb.builders.vm.UnitToGraphicsDeviceParamsBuilder;
-import 
org.ovirt.engine.ui.uicommonweb.builders.vm.UsbPolicyVmBaseToVmBaseBuilder;
 import 
org.ovirt.engine.ui.uicommonweb.builders.vm.VmIconUnitAndVmToParameterBuilder;
 import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider;
 import org.ovirt.engine.ui.uicommonweb.help.HelpTag;
@@ -1364,20 +1362,8 @@
                 new AddVmTemplateParameters(newVm,
                         model.getName().getEntity(),
                         model.getDescription().getEntity());
-        
addVmTemplateParameters.setPublicUse(model.getIsTemplatePublic().getEntity());
-
-        addVmTemplateParameters.setDiskInfoDestinationMap(
-                
model.getDisksAllocationModel().getImageToDestinationDomainMap());
-        
addVmTemplateParameters.setSoundDeviceEnabled(model.getIsSoundcardEnabled().getEntity());
-        addVmTemplateParameters.setBalloonEnabled(balloonEnabled(model));
-        
addVmTemplateParameters.setCopyVmPermissions(model.getCopyPermissions().getEntity());
+        BuilderExecutor.build(model, addVmTemplateParameters, new 
UnitToAddVmTemplateParametersBuilder());
         model.startProgress(null);
-        
addVmTemplateParameters.setConsoleEnabled(model.getIsConsoleDeviceEnabled().getEntity());
-        if (model.getIsSubTemplate().getEntity()) {
-            
addVmTemplateParameters.setBaseTemplateId(model.getBaseTemplate().getSelectedItem().getId());
-            
addVmTemplateParameters.setTemplateVersionName(model.getTemplateVersionName().getEntity());
-        }
-
         Frontend.getInstance().runAction(VdcActionType.AddVmTemplate, 
addVmTemplateParameters,
                 new IFrontendActionAsyncCallback() {
                     @Override
@@ -1398,11 +1384,7 @@
         VM resultVm = new VM();
         resultVm.setId(vm.getId());
         BuilderExecutor.build(model, resultVm.getStaticData(), new 
CommonUnitToVmBaseBuilder());
-        BuilderExecutor.build(vm.getStaticData(), resultVm.getStaticData(),
-                new KernelParamsVmBaseToVmBaseBuilder(),
-                new DedicatedVmForVdsVmBaseToVmBaseBuilder(),
-                new MigrationOptionsVmBaseToVmBaseBuilder(),
-                new UsbPolicyVmBaseToVmBaseBuilder());
+        BuilderExecutor.build(vm.getStaticData(), resultVm.getStaticData(), 
new VmBaseToVmBaseForTemplateCompositeBaseBuilder());
         return resultVm;
     }
 
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java
index c6a4dba..49eca5c 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java
@@ -37,13 +37,11 @@
 import org.ovirt.engine.ui.uicommonweb.Linq.SnapshotByCreationDateCommparer;
 import org.ovirt.engine.ui.uicommonweb.UICommand;
 import org.ovirt.engine.ui.uicommonweb.builders.BuilderExecutor;
+import 
org.ovirt.engine.ui.uicommonweb.builders.template.UnitToAddVmTemplateParametersBuilder;
+import 
org.ovirt.engine.ui.uicommonweb.builders.template.VmBaseToVmBaseForTemplateCompositeBaseBuilder;
 import org.ovirt.engine.ui.uicommonweb.builders.vm.CommonUnitToVmBaseBuilder;
-import 
org.ovirt.engine.ui.uicommonweb.builders.vm.DedicatedVmForVdsVmBaseToVmBaseBuilder;
 import org.ovirt.engine.ui.uicommonweb.builders.vm.FullUnitToVmBaseBuilder;
-import 
org.ovirt.engine.ui.uicommonweb.builders.vm.KernelParamsVmBaseToVmBaseBuilder;
-import 
org.ovirt.engine.ui.uicommonweb.builders.vm.MigrationOptionsVmBaseToVmBaseBuilder;
 import 
org.ovirt.engine.ui.uicommonweb.builders.vm.UnitToGraphicsDeviceParamsBuilder;
-import 
org.ovirt.engine.ui.uicommonweb.builders.vm.UsbPolicyVmBaseToVmBaseBuilder;
 import org.ovirt.engine.ui.uicommonweb.builders.vm.VmSpecificUnitToVmBuilder;
 import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider;
 import org.ovirt.engine.ui.uicommonweb.help.HelpTag;
@@ -52,7 +50,6 @@
 import org.ovirt.engine.ui.uicommonweb.models.Model;
 import org.ovirt.engine.ui.uicommonweb.models.SearchableListModel;
 import org.ovirt.engine.ui.uicommonweb.models.SystemTreeItemModel;
-import org.ovirt.engine.ui.uicommonweb.models.templates.VmBaseListModel;
 import org.ovirt.engine.ui.uicompat.ConstantsManager;
 import org.ovirt.engine.ui.uicompat.FrontendActionAsyncResult;
 import org.ovirt.engine.ui.uicompat.IFrontendActionAsyncCallback;
@@ -748,20 +745,8 @@
                         model.getName().getEntity(),
                         model.getDescription().getEntity(),
                         getSelectedItem().getId());
-        parameters.setPublicUse(model.getIsTemplatePublic().getEntity());
-
-        parameters.setDiskInfoDestinationMap(
-                
model.getDisksAllocationModel().getImageToDestinationDomainMap());
-        
parameters.setSoundDeviceEnabled(model.getIsSoundcardEnabled().getEntity());
-        parameters.setBalloonEnabled(balloonEnabled(model));
-        
parameters.setCopyVmPermissions(model.getCopyPermissions().getEntity());
+        BuilderExecutor.build(model, parameters, new 
UnitToAddVmTemplateParametersBuilder());
         model.startProgress(null);
-        
parameters.setConsoleEnabled(model.getIsConsoleDeviceEnabled().getEntity());
-        if (model.getIsSubTemplate().getEntity()) {
-            
parameters.setBaseTemplateId(model.getBaseTemplate().getSelectedItem().getId());
-            
parameters.setTemplateVersionName(model.getTemplateVersionName().getEntity());
-        }
-
         
Frontend.getInstance().runAction(VdcActionType.AddVmTemplateFromSnapshot,
                 parameters,
                 new IFrontendActionAsyncCallback() {
@@ -783,17 +768,8 @@
         VM resultVm = new VM();
         resultVm.setId(vm.getId());
         BuilderExecutor.build(model, resultVm.getStaticData(), new 
CommonUnitToVmBaseBuilder());
-        BuilderExecutor.build(vm.getStaticData(), resultVm.getStaticData(),
-                new KernelParamsVmBaseToVmBaseBuilder(),
-                new DedicatedVmForVdsVmBaseToVmBaseBuilder(),
-                new MigrationOptionsVmBaseToVmBaseBuilder(),
-                new UsbPolicyVmBaseToVmBaseBuilder());
+        BuilderExecutor.build(vm.getStaticData(), resultVm.getStaticData(), 
new VmBaseToVmBaseForTemplateCompositeBaseBuilder());
         return resultVm;
-    }
-
-    protected boolean balloonEnabled(UnitVmModel model) {
-        return model.getMemoryBalloonDeviceEnabled().getEntity()
-                && 
model.getSelectedCluster().getCompatibilityVersion().compareTo(VmBaseListModel.BALLOON_DEVICE_MIN_VERSION)
 >= 0;
     }
 
     private void cloneVM()


-- 
To view, visit https://gerrit.ovirt.org/41639
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ibfbc42621b15d3115fba2f1da27d8489e72281fc
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Arik Hadas <aha...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to