Jakub Niedermertl has uploaded a new change for review.

Change subject: userportal, webadmin: Latest template instace safe recognition
......................................................................

userportal, webadmin: Latest template instace safe recognition

Regular template and latest template (the one pointing to the lates
version) were recognized by matching of localized UI name.

This patch introduces frontend only class LatestVmTemplate to mark
latest templates.

Change-Id: I161f1d9603ea17ef7fc3801eb3dfa0cb924af2b4
Bug-Url: https://bugzilla.redhat.com/1166152
Signed-off-by: Jakub Niedermertl <[email protected]>
---
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolListModel.java
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/LatestVmTemplate.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.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/VmModelBehaviorBase.java
6 files changed, 76 insertions(+), 56 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/72/35472/1

diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java
index 6f34ef7..c616896 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java
@@ -1,14 +1,30 @@
 
 package org.ovirt.engine.ui.common.widget.uicommon.popup;
 
-import static 
org.ovirt.engine.ui.common.widget.uicommon.popup.vm.PopupWidgetConfig.simpleField;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.dom.client.Style.Unit;
+import com.google.gwt.editor.client.SimpleBeanEditorDriver;
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.event.logical.shared.ValueChangeEvent;
+import com.google.gwt.event.logical.shared.ValueChangeHandler;
+import com.google.gwt.event.shared.EventBus;
+import com.google.gwt.resources.client.CssResource;
+import com.google.gwt.safehtml.shared.SafeHtmlUtils;
+import com.google.gwt.text.shared.AbstractRenderer;
+import com.google.gwt.uibinder.client.UiBinder;
+import com.google.gwt.uibinder.client.UiField;
+import com.google.gwt.uibinder.client.UiHandler;
+import com.google.gwt.user.cellview.client.CellTable;
+import com.google.gwt.user.cellview.client.CellTable.Resources;
+import com.google.gwt.user.client.ui.ButtonBase;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.Panel;
+import com.google.gwt.user.client.ui.RadioButton;
+import com.google.gwt.user.client.ui.ValueLabel;
+import com.google.gwt.user.client.ui.Widget;
 import org.ovirt.engine.core.common.businessentities.BootSequence;
 import org.ovirt.engine.core.common.businessentities.Disk;
 import org.ovirt.engine.core.common.businessentities.Disk.DiskStorageType;
@@ -79,6 +95,7 @@
 import 
org.ovirt.engine.ui.common.widget.uicommon.popup.vm.SerialNumberPolicyWidget;
 import org.ovirt.engine.ui.common.widget.uicommon.popup.vm.VmPopupVmInitWidget;
 import org.ovirt.engine.ui.common.widget.uicommon.storage.DisksAllocationView;
+import org.ovirt.engine.ui.uicommonweb.models.templates.LatestVmTemplate;
 import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider;
 import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
 import org.ovirt.engine.ui.uicommonweb.models.ListModel;
@@ -88,7 +105,6 @@
 import org.ovirt.engine.ui.uicommonweb.models.vms.TimeZoneModel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.key_value.KeyValueModel;
-import org.ovirt.engine.ui.uicompat.ConstantsManager;
 import org.ovirt.engine.ui.uicompat.EnumTranslator;
 import org.ovirt.engine.ui.uicompat.Event;
 import org.ovirt.engine.ui.uicompat.EventArgs;
@@ -96,30 +112,13 @@
 import org.ovirt.engine.ui.uicompat.PropertyChangedEventArgs;
 import org.ovirt.engine.ui.uicompat.external.StringUtils;
 
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.dom.client.Style.Unit;
-import com.google.gwt.editor.client.SimpleBeanEditorDriver;
-import com.google.gwt.event.dom.client.ClickEvent;
-import com.google.gwt.event.dom.client.ClickHandler;
-import com.google.gwt.event.logical.shared.ValueChangeEvent;
-import com.google.gwt.event.logical.shared.ValueChangeHandler;
-import com.google.gwt.event.shared.EventBus;
-import com.google.gwt.resources.client.CssResource;
-import com.google.gwt.safehtml.shared.SafeHtmlUtils;
-import com.google.gwt.text.shared.AbstractRenderer;
-import com.google.gwt.uibinder.client.UiBinder;
-import com.google.gwt.uibinder.client.UiField;
-import com.google.gwt.uibinder.client.UiHandler;
-import com.google.gwt.user.cellview.client.CellTable;
-import com.google.gwt.user.cellview.client.CellTable.Resources;
-import com.google.gwt.user.client.ui.ButtonBase;
-import com.google.gwt.user.client.ui.FlowPanel;
-import com.google.gwt.user.client.ui.HorizontalPanel;
-import com.google.gwt.user.client.ui.Label;
-import com.google.gwt.user.client.ui.Panel;
-import com.google.gwt.user.client.ui.RadioButton;
-import com.google.gwt.user.client.ui.ValueLabel;
-import com.google.gwt.user.client.ui.Widget;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static 
org.ovirt.engine.ui.common.widget.uicommon.popup.vm.PopupWidgetConfig.simpleField;
 
 public abstract class AbstractVmPopupWidget extends 
AbstractModeSwitchingPopupWidget<UnitVmModel>
     implements TabbedView {
@@ -1154,12 +1153,11 @@
                     }
 
                     private String 
getDisplayableTemplateVersionName(VmTemplate template) {
-                        String versionName = template.getTemplateVersionName();
-                        if 
(ConstantsManager.getInstance().getConstants().latestTemplateVersionName().equals(versionName))
 {
+                        if (template instanceof LatestVmTemplate) {
                             return constants.latest();
                         }
 
-                        versionName = 
template.getId().equals(template.getBaseTemplateId()) ?
+                        String versionName = 
template.getId().equals(template.getBaseTemplateId()) ?
                                 constants.baseTemplate() : 
template.getTemplateVersionName();
 
                         return (versionName == null ? "" : versionName) 
//$NON-NLS-1$
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolListModel.java
index 846aa0e..2e2a98a 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolListModel.java
@@ -27,6 +27,7 @@
 import org.ovirt.engine.ui.frontend.Frontend;
 import org.ovirt.engine.ui.frontend.INewAsyncCallback;
 import org.ovirt.engine.ui.uicommonweb.Cloner;
+import org.ovirt.engine.ui.uicommonweb.models.templates.LatestVmTemplate;
 import org.ovirt.engine.ui.uicommonweb.Linq;
 import org.ovirt.engine.ui.uicommonweb.UICommand;
 import org.ovirt.engine.ui.uicommonweb.builders.BuilderExecutor;
@@ -456,7 +457,7 @@
                         
vm.setVmInit(model.getVmInitModel().buildCloudInitParameters(model));
                         
vm.setBalloonEnabled(model.getMemoryBalloonDeviceEnabled().getEntity());
 
-                        
vm.setUseLatestVersion(constants.latestTemplateVersionName().equals(model.getTemplate().getSelectedItem().getTemplateVersionName()));
+                        
vm.setUseLatestVersion(model.getTemplate().getSelectedItem() instanceof 
LatestVmTemplate);
                         vm.setStateless(false);
                         
vm.setInstanceTypeId(model.getInstanceTypes().getSelectedItem().getId());
 
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/LatestVmTemplate.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/LatestVmTemplate.java
new file mode 100644
index 0000000..fe73015
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/LatestVmTemplate.java
@@ -0,0 +1,31 @@
+package org.ovirt.engine.ui.uicommonweb.models.templates;
+
+import org.ovirt.engine.core.common.businessentities.VmTemplate;
+import org.ovirt.engine.ui.uicompat.ConstantsManager;
+import org.ovirt.engine.ui.uicompat.UIConstants;
+
+/**
+ * It allows for frontend to distinguish between regular template and latest 
template.
+ */
+public class LatestVmTemplate extends VmTemplate {
+
+    public LatestVmTemplate(VmTemplate template) {
+        super(template);
+
+        setNaming();
+    }
+
+    /**
+     * Just because serializable classes require non-parametric constructor.
+     */
+    public LatestVmTemplate() {
+        super();
+        setNaming();
+    }
+
+    private void setNaming() {
+        final UIConstants constants = 
ConstantsManager.getInstance().getConstants();
+        this.setTemplateVersionName(constants.latestTemplateVersionName());
+        this.setDescription(constants.latestTemplateVersionDescription());
+    }
+}
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 d91d995..e4e1f98 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
@@ -38,6 +38,7 @@
 import org.ovirt.engine.ui.frontend.INewAsyncCallback;
 import org.ovirt.engine.ui.uicommonweb.Cloner;
 import 
org.ovirt.engine.ui.uicommonweb.ConsoleOptionsFrontendPersister.ConsoleContext;
+import org.ovirt.engine.ui.uicommonweb.models.templates.LatestVmTemplate;
 import org.ovirt.engine.ui.uicommonweb.Linq;
 import org.ovirt.engine.ui.uicommonweb.UICommand;
 import org.ovirt.engine.ui.uicommonweb.builders.BuilderExecutor;
@@ -1082,7 +1083,7 @@
         else
         {
             final VM selectedItem = (VM) ((UserPortalItemModel) 
userPortalListModel.getSelectedItem()).getEntity();
-            
gettempVm().setUseLatestVersion(constants.latestTemplateVersionName().equals(model.getTemplate().getSelectedItem().getTemplateVersionName()));
+            
gettempVm().setUseLatestVersion(model.getTemplate().getSelectedItem() 
instanceof LatestVmTemplate);
 
             if (selectedItem.isRunningOrPaused()) {
                 
AsyncDataProvider.getInstance().getVmChangedFieldsForNextRun(editedVm, 
gettempVm(), getUpdateVmParameters(false), new AsyncQuery(this,
@@ -1124,7 +1125,7 @@
         setstorageDomain(model.getStorageDomain().getSelectedItem());
 
         VM vm = gettempVm();
-        
vm.setUseLatestVersion(constants.latestTemplateVersionName().equals(model.getTemplate().getSelectedItem().getTemplateVersionName()));
+        vm.setUseLatestVersion(model.getTemplate().getSelectedItem() 
instanceof LatestVmTemplate);
 
         AddVmParameters parameters = new AddVmParameters(vm);
         
parameters.setDiskInfoDestinationMap(model.getDisksAllocationModel().getImageToDestinationDomainMap());
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 49697e8..e83635c 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
@@ -58,6 +58,7 @@
 import org.ovirt.engine.ui.uicommonweb.Cloner;
 import 
org.ovirt.engine.ui.uicommonweb.ConsoleOptionsFrontendPersister.ConsoleContext;
 import org.ovirt.engine.ui.uicommonweb.ErrorPopupManager;
+import org.ovirt.engine.ui.uicommonweb.models.templates.LatestVmTemplate;
 import org.ovirt.engine.ui.uicommonweb.Linq;
 import org.ovirt.engine.ui.uicommonweb.TagsEqualityComparer;
 import org.ovirt.engine.ui.uicommonweb.TypeResolver;
@@ -1964,7 +1965,7 @@
             final 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()));
+            
getcurrentVm().setUseLatestVersion(model.getTemplate().getSelectedItem() 
instanceof LatestVmTemplate);
 
             if (selectedItem.isRunningOrPaused()) {
                 
AsyncDataProvider.getInstance().getVmChangedFieldsForNextRun(editedVm, 
getcurrentVm(), getUpdateVmParameters(false), new AsyncQuery(this,
@@ -2082,7 +2083,7 @@
         model.startProgress(null);
 
         VM vm = getcurrentVm();
-        
vm.setUseLatestVersion(constants.latestTemplateVersionName().equals(model.getTemplate().getSelectedItem().getTemplateVersionName()));
+        vm.setUseLatestVersion(model.getTemplate().getSelectedItem() 
instanceof LatestVmTemplate);
 
         AddVmParameters parameters = new AddVmParameters(vm);
         
parameters.setDiskInfoDestinationMap(model.getDisksAllocationModel().getImageToDestinationDomainMap());
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java
index 5c197cc..7ebb562 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java
@@ -42,6 +42,7 @@
 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.models.templates.LatestVmTemplate;
 import org.ovirt.engine.ui.uicommonweb.Linq;
 import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider;
 import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
@@ -241,23 +242,10 @@
         }
 
         for (List<VmTemplate> subversions : 
baseTemplateToSubTemplates.values()) {
-            subversions.add(0, createLatestTemplate(subversions.get(0)));
+            subversions.add(0, new LatestVmTemplate(subversions.get(0)));
         }
 
         return baseTemplates;
-    }
-
-    /**
-     *
-     * @param template - the template that the latest template should be based 
on
-     * @return template representing the latest template
-     */
-    private VmTemplate createLatestTemplate(VmTemplate template) {
-        VmTemplate latestTemplate = new VmTemplate(template);
-        
latestTemplate.setTemplateVersionName(constants.latestTemplateVersionName());
-        
latestTemplate.setDescription(constants.latestTemplateVersionDescription());
-
-        return latestTemplate;
     }
 
     protected void baseTemplateSelectedItemChanged() {
@@ -761,7 +749,7 @@
                                 VmTemplate template = (VmTemplate) returnValue;
 
                                 if (useLatest) {
-                                    template = createLatestTemplate(template);
+                                    template = new LatestVmTemplate(template);
                                 }
 
                                 
setupBaseTemplate(template.getBaseTemplateId());


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

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

Reply via email to