Martin Beták has uploaded a new change for review. Change subject: webadmin: Correct timezone default in New/Edit VM dialog ......................................................................
webadmin: Correct timezone default in New/Edit VM dialog Correct setting of default timezone for windows type OSs with vdc_option DefaultTimeZone. Removed the empty line entry in the timezone listbox introduced in da2e04242d5d7bae0e0905f20e64fe1bebfde219 as it used underneath the deprecated TimeZoneInfo. Now the appropriate default is selected instead of the confusing empty line. Also added new vdc_option DefaultGeneralTimeZone for default value of timezone for general OSs (non-windows) using standard java timezone format. Change-Id: Iaccb31f5634c16583004a79b9b47b83ff994088a Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=873795 Signed-off-by: Martin Betak <mbe...@redhat.com> --- M backend/manager/dbscripts/upgrade/pre_upgrade/0000_config.sql M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetDefualtTimeZoneQuery.java M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/GetDefualtTimeZoneQueryTest.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java 11 files changed, 69 insertions(+), 77 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/48/14248/1 diff --git a/backend/manager/dbscripts/upgrade/pre_upgrade/0000_config.sql b/backend/manager/dbscripts/upgrade/pre_upgrade/0000_config.sql index 61a8b46..428375d 100644 --- a/backend/manager/dbscripts/upgrade/pre_upgrade/0000_config.sql +++ b/backend/manager/dbscripts/upgrade/pre_upgrade/0000_config.sql @@ -84,6 +84,7 @@ select fn_db_add_config_value('DefaultMaxThreadPoolSize','500','general'); select fn_db_add_config_value('DefaultMinThreadPoolSize','50','general'); select fn_db_add_config_value('DefaultTimeZone','(GMT) GMT Standard Time','general'); +select fn_db_add_config_value('DefaultGeneralTimeZone','Etc/GMT','general'); --Handling Default Workgroup select fn_db_add_config_value('DefaultWorkgroup','WORKGROUP','general'); select fn_db_add_config_value('DesktopAudioDeviceType','WindowsXP,ac97,RHEL4,ac97,RHEL3,ac97,Windows2003x64,ac97,RHEL4x64,ac97,RHEL3x64,ac97,OtherLinux,ac97,Other,ac97,default,ich6','3.0'); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetDefualtTimeZoneQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetDefualtTimeZoneQuery.java index 15d35a4..e72f518 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetDefualtTimeZoneQuery.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetDefualtTimeZoneQuery.java @@ -1,20 +1,29 @@ package org.ovirt.engine.core.bll; +import java.util.TimeZone; + import org.ovirt.engine.core.common.config.Config; import org.ovirt.engine.core.common.config.ConfigValues; -import org.ovirt.engine.core.common.queries.VdcQueryParametersBase; +import org.ovirt.engine.core.common.queries.TimeZoneQueryParams; import org.ovirt.engine.core.compat.KeyValuePairCompat; import org.ovirt.engine.core.vdsbroker.vdsbroker.SysprepHandler; -public class GetDefualtTimeZoneQuery<P extends VdcQueryParametersBase> extends QueriesCommandBase<P> { +public class GetDefualtTimeZoneQuery<P extends TimeZoneQueryParams> extends QueriesCommandBase<P> { public GetDefualtTimeZoneQuery(P parameters) { super(parameters); } @Override protected void executeQueryCommand() { - String timezone = Config.<String> GetValue(ConfigValues.DefaultTimeZone); - getQueryReturnValue().setReturnValue(new KeyValuePairCompat<String, String>(SysprepHandler.getTimezoneKey(timezone), - timezone)); + ConfigValues defaultTimeZoneConfigKey = getParameters().isWindowsOS() ? ConfigValues.DefaultTimeZone : ConfigValues.DefaultGeneralTimeZone; + String timezone = Config.<String> GetValue(defaultTimeZoneConfigKey); + KeyValuePairCompat<String, String> returnValue; + if (getParameters().isWindowsOS()) { + returnValue = new KeyValuePairCompat<String, String>(SysprepHandler.getTimezoneKey(timezone), timezone); + } else { + // DefaultGeneralTimeZone is already stored as key + returnValue = new KeyValuePairCompat<String, String>(timezone, TimeZone.getTimeZone(timezone).getDisplayName()); + } + getQueryReturnValue().setReturnValue(returnValue); } } diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/GetDefualtTimeZoneQueryTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/GetDefualtTimeZoneQueryTest.java index e3c4faa..5d34900 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/GetDefualtTimeZoneQueryTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/GetDefualtTimeZoneQueryTest.java @@ -1,20 +1,23 @@ package org.ovirt.engine.core.bll; import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.when; import org.junit.Test; import org.ovirt.engine.core.common.config.ConfigValues; -import org.ovirt.engine.core.common.queries.VdcQueryParametersBase; +import org.ovirt.engine.core.common.queries.TimeZoneQueryParams; import org.ovirt.engine.core.compat.KeyValuePairCompat; -public class GetDefualtTimeZoneQueryTest extends AbstractSysprepQueryTest<VdcQueryParametersBase, GetDefualtTimeZoneQuery<VdcQueryParametersBase>> { +public class GetDefualtTimeZoneQueryTest extends AbstractSysprepQueryTest<TimeZoneQueryParams, GetDefualtTimeZoneQuery<TimeZoneQueryParams>> { /** The default time zone for the test */ private static final String DEFAULT_TIME_ZONE = "Israel Standard Time"; + private static final String DEFAULT_GENERAL_TIME_ZONE_KEY = "Etc/GMT"; @Test - public void testExecuteQueryCommand() { + public void testQueryDefaultWindowsTimeZone() { mcr.mockConfigValue(ConfigValues.DefaultTimeZone, DEFAULT_TIME_ZONE); + when(getQueryParameters().isWindowsOS()).thenReturn(true); getQuery().executeQueryCommand(); @SuppressWarnings("unchecked") @@ -23,4 +26,17 @@ assertTrue("Wrong default time zone", result.getValue().equals(DEFAULT_TIME_ZONE)); } + + @Test + public void testQueryDefaultGeneralTimeZone() { + mcr.mockConfigValue(ConfigValues.DefaultGeneralTimeZone, DEFAULT_GENERAL_TIME_ZONE_KEY); + when(getQueryParameters().isWindowsOS()).thenReturn(false); + getQuery().executeQueryCommand(); + + @SuppressWarnings("unchecked") + KeyValuePairCompat<String, String> result = + (KeyValuePairCompat<String, String>) getQuery().getQueryReturnValue().getReturnValue(); + + assertTrue("Wrong default time zone: " + result.getKey(), result.getKey().equals(DEFAULT_GENERAL_TIME_ZONE_KEY)); + } } diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java index 20346a2..fa280b9 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java @@ -627,6 +627,10 @@ @DefaultValueAttribute("(GMT) GMT Standard Time") DefaultTimeZone(260), + @TypeConverterAttribute(String.class) + @DefaultValueAttribute("Etc/GMT") + DefaultGeneralTimeZone(261), + @TypeConverterAttribute(Integer.class) @DefaultValueAttribute("389") LDAPServerPort(263), diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java index 2dc547f..c726bef 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java @@ -797,7 +797,10 @@ return ""; //$NON-NLS-1$ } }; - Frontend.RunQuery(VdcQueryType.GetDefualtTimeZone, new VdcQueryParametersBase(), aQuery); + + TimeZoneQueryParams params = new TimeZoneQueryParams(); + params.setWindowsOS(((VmModelBehaviorBase) aQuery.getModel()).getModel().getIsWindowsOS()); + Frontend.RunQuery(VdcQueryType.GetDefualtTimeZone, params, aQuery); } public static void GetHostById(AsyncQuery aQuery, Guid id) { diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java index 3e17798..5e28e31 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java @@ -209,7 +209,7 @@ } else { - UpdateDefaultTimeZone(); + updateDefaultTimeZone(); } // Update domain list diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java index db41012..57cc1b4 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java @@ -121,7 +121,7 @@ } else { - UpdateDefaultTimeZone(); + updateDefaultTimeZone(); } // Update domain list diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java index 3defc53..96df49c 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java @@ -137,7 +137,7 @@ } else { - UpdateDefaultTimeZone(); + updateDefaultTimeZone(); } // Update domain list diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java index 3e56362..042fb1e 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java @@ -164,7 +164,7 @@ } else { - UpdateDefaultTimeZone(); + updateDefaultTimeZone(); } // Update domain list diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java index 70671b2..4c09de6 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java @@ -7,7 +7,6 @@ import java.util.Date; import java.util.HashMap; import java.util.List; -import java.util.Map.Entry; import org.ovirt.engine.core.common.businessentities.BootSequence; import org.ovirt.engine.core.common.businessentities.DisplayType; @@ -1197,19 +1196,6 @@ setCpuPinning(new NotChangableForVmInPoolEntityModel()); getCpuPinning().setEntity(""); getCpuPinning().setIsChangable(false); - - initTimeZones(); - } - - private void initTimeZones() { - getOSType().getSelectedItemChangedEvent().addListener(new IEventListener() { - - @Override - public void eventRaised(Event ev, Object sender, EventArgs args) { - getBehavior().updateTimeZone(); - } - }); - } public void Initialize(SystemTreeItemModel SystemTreeSelectedItem) @@ -1623,12 +1609,8 @@ getKernel_parameters().setIsAvailable(getIsLinuxOS()); getDomain().setIsChangable(getIsWindowsOS()); - if (getTimeZone().getSelectedItem() == null) { - getBehavior().updateTimeZone(); - } else { - getBehavior().updateTimeZone(((Entry<String, String>)getTimeZone().getSelectedItem()).getKey()); - } + getBehavior().updateDefaultTimeZone(); } private void FirstBootDevice_SelectedItemChanged(Object sender, EventArgs args) 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 f686369..aeee862 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 @@ -146,6 +146,7 @@ } private final Map<TimezoneType, Iterable<Entry<String, String>>> cachedTimeZones = new HashMap<VmModelBehaviorBase.TimezoneType, Iterable<Entry<String,String>>>(); + private final Map<TimezoneType, String> cachedDefaultTimeZoneKeys = new HashMap<TimezoneType, String>(); private enum TimezoneType { WINDOWS_TIMEZONE, @@ -156,17 +157,9 @@ } } - private boolean lastIsWinOS = false; - private String winTimezoneString; - private String generalTimezonesString; - - protected void updateTimeZone() { - updateTimeZone(null); - } - protected void updateTimeZone(final String selectedTimeZone) { - final TimezoneType timezoneType = TimezoneType.getTimezoneByOs(getModel().getIsWindowsOS()); + final TimezoneType timezoneType = getTimeZoneType(); if (cachedTimeZones.get(timezoneType) == null) { @@ -176,42 +169,22 @@ public void onSuccess(Object target, Object returnValue) { VmModelBehaviorBase behavior = (VmModelBehaviorBase) target; Map<String, String> timezones = (Map<String, String>) returnValue; - // empty entry for default timezone - timezones.put(null, ""); //$NON-NLS-1$ cachedTimeZones.put(timezoneType, timezones.entrySet()); - behavior.PostUpdateTimeZone(selectedTimeZone); + behavior.postUpdateTimeZone(selectedTimeZone); } }, getModel().getHash())); } else { - PostUpdateTimeZone(selectedTimeZone); + postUpdateTimeZone(selectedTimeZone); } } - private void PostUpdateTimeZone(String selectedTimeZone) + private void postUpdateTimeZone(String selectedTimeZone) { - if (getModel().getIsWindowsOS() != lastIsWinOS) { - lastIsWinOS = getModel().getIsWindowsOS(); - if (selectedTimeZone != null) { - if (getModel().getIsWindowsOS()) { - generalTimezonesString = selectedTimeZone; - } else { - winTimezoneString = selectedTimeZone; - } - } - selectedTimeZone = getModel().getIsWindowsOS() ? winTimezoneString : generalTimezonesString; - } else { - if (selectedTimeZone != null) { - if (getModel().getIsWindowsOS()) { - winTimezoneString = selectedTimeZone; - } else { - generalTimezonesString = selectedTimeZone; - } - } - } - final TimezoneType timezoneType = TimezoneType.getTimezoneByOs(getModel().getIsWindowsOS()); + final TimezoneType timezoneType = getTimeZoneType(); getModel().getTimeZone().setItems(cachedTimeZones.get(timezoneType)); + // If there was some time zone selected before, try select it again. Entry<String, String> selectedTimeZoneEntry = @@ -219,8 +192,8 @@ Map.Entry<String, String> selectedItem = selectedTimeZoneEntry != null ? selectedTimeZoneEntry : (Map.Entry<String, String>) getModel().getTimeZone().getSelectedItem(); - getModel().getTimeZone().setSelectedItem(selectedItem == null ? null : - Linq.FirstOrDefault(cachedTimeZones.get(timezoneType), new Linq.TimeZonePredicate(selectedItem.getKey()))); + getModel().getTimeZone().setSelectedItem( + Linq.FirstOrDefault(cachedTimeZones.get(timezoneType), new Linq.TimeZonePredicate(selectedItem.getKey()))); } private Entry<String, String> getTimezoneEntryByKey(String key, Iterable<Entry<String, String>> timeZones) { @@ -233,11 +206,11 @@ return null; } - private String cachedDefaultTimeZoneKey; - - protected void UpdateDefaultTimeZone() + protected void updateDefaultTimeZone() { - if (cachedDefaultTimeZoneKey == null) + final TimezoneType timezoneType = getTimeZoneType(); + + if (cachedDefaultTimeZoneKeys.get(timezoneType) == null) { AsyncDataProvider.GetDefaultTimeZone(new AsyncQuery(this, new INewAsyncCallback() { @@ -245,21 +218,25 @@ public void onSuccess(Object target, Object returnValue) { VmModelBehaviorBase behavior = (VmModelBehaviorBase) target; - cachedDefaultTimeZoneKey = (String) returnValue; - behavior.PostUpdateDefaultTimeZone(); + cachedDefaultTimeZoneKeys.put(timezoneType, (String) returnValue); + behavior.postUpdateDefaultTimeZone(); } }, getModel().getHash())); } else { - PostUpdateDefaultTimeZone(); + postUpdateDefaultTimeZone(); } } - public void PostUpdateDefaultTimeZone() + public void postUpdateDefaultTimeZone() { - updateTimeZone(cachedDefaultTimeZoneKey); + updateTimeZone(cachedDefaultTimeZoneKeys.get(getTimeZoneType())); + } + + public TimezoneType getTimeZoneType() { + return TimezoneType.getTimezoneByOs(getModel().getIsWindowsOS()); } protected void UpdateDomain() -- To view, visit http://gerrit.ovirt.org/14248 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iaccb31f5634c16583004a79b9b47b83ff994088a Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Martin Beták <mbe...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches