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
