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