From 2017a040bd580c57d50d40007d57bdebb211c5bf Mon Sep 17 00:00:00 2001 From: Vladislav Chumak Date: Tue, 18 Apr 2017 15:48:03 +0200 Subject: [PATCH] bug4100 Extracted generic code into generic settings utils --- .../raceboard/RaceBoardComponentContext.java | 78 ++----------------- java/com.sap.sse.common/META-INF/MANIFEST.MF | 1 + .../settings/util/DefaultValuesUtils.java | 42 ++++++++++ .../settings/util/SettingsMergeUtils.java | 44 +++++++++++ 4 files changed, 92 insertions(+), 73 deletions(-) create mode 100644 java/com.sap.sse.common/src/com/sap/sse/common/settings/util/DefaultValuesUtils.java create mode 100644 java/com.sap.sse.common/src/com/sap/sse/common/settings/util/SettingsMergeUtils.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardComponentContext.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardComponentContext.java index 880ca86998d..94531570f17 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardComponentContext.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardComponentContext.java @@ -1,14 +1,10 @@ package com.sap.sailing.gwt.ui.raceboard; -import java.util.Map; - import com.sap.sailing.gwt.settings.client.raceboard.RaceBoardPerspectiveOwnSettings; -import com.sap.sse.common.Util; import com.sap.sse.common.settings.Settings; import com.sap.sse.common.settings.generic.GenericSerializableSettings; -import com.sap.sse.common.settings.generic.Setting; -import com.sap.sse.common.settings.generic.ValueCollectionSetting; -import com.sap.sse.common.settings.generic.ValueSetting; +import com.sap.sse.common.settings.util.DefaultValuesUtils; +import com.sap.sse.common.settings.util.SettingsMergeUtils; import com.sap.sse.gwt.client.shared.components.Component; import com.sap.sse.gwt.client.shared.perspective.OnSettingsLoadedCallback; import com.sap.sse.gwt.client.shared.perspective.PerspectiveCompositeSettings; @@ -56,43 +52,10 @@ public class RaceBoardComponentContext extends ComponentContextWithSettingsStora @Override public CS patchSettings(CS settingsToPatch) { - applyPatchToSetting(additiveSettings, settingsToPatch); + SettingsMergeUtils.mergeSettings(additiveSettings, settingsToPatch); return settingsToPatch; } - //TODO think about extracting of the following additive/merging functionality for settings to an external class - private static void applyPatchToSetting(GenericSerializableSettings additiveSettings, GenericSerializableSettings settingsToPatch) { - for (Map.Entry entry : additiveSettings.getChildSettings().entrySet()) { - Setting setting = entry.getValue(); - Setting settingToPatch = settingsToPatch.getChildSettings().get(entry.getKey()); - if (!setting.isDefaultValue()) { - if (setting instanceof ValueSetting) { - applyPatchToSetting((ValueSetting) setting, (ValueSetting) settingToPatch); - } else if (setting instanceof ValueCollectionSetting) { - applyPatchToSetting((ValueCollectionSetting) setting, (ValueCollectionSetting) settingToPatch); - } else if (setting instanceof GenericSerializableSettings) { - applyPatchToSetting((GenericSerializableSettings) setting, (GenericSerializableSettings) settingToPatch); - } else { - throw new IllegalStateException("Unknown Setting type"); - } - } - } - } - - @SuppressWarnings("unchecked") - private static void applyPatchToSetting(ValueCollectionSetting setting, ValueCollectionSetting settingToPatch) { - for (Object value : setting.getValues()) { - if(!Util.contains(settingToPatch.getValues(), value)) { - settingToPatch.addValue((T) value); - } - } - } - - @SuppressWarnings("unchecked") - private static void applyPatchToSetting(ValueSetting setting, ValueSetting settingToPatch) { - settingToPatch.setValue((T) setting.getValue()); - } - } private static class ModeStoringSettingsPatch implements SettingsPatch { @@ -105,39 +68,8 @@ public class RaceBoardComponentContext extends ComponentContextWithSettingsStora @Override public CS patchSettings(CS settingsToPatch) { - applyDefaults(contextSpecificDefaults, settingsToPatch); - return null; - } - - //TODO think about extracting of the following default value adapting functionality for settings to an external class - private static void applyDefaults(GenericSerializableSettings defaultSettings, GenericSerializableSettings settingsToPatch) { - for (Map.Entry entry : defaultSettings.getChildSettings().entrySet()) { - Setting defaultSetting = entry.getValue(); - Setting settingToPatch = settingsToPatch.getChildSettings().get(entry.getKey()); - if (defaultSetting instanceof ValueSetting) { - applyDefaults((ValueSetting) defaultSetting, (ValueSetting) settingToPatch); - } else if (defaultSetting instanceof ValueCollectionSetting) { - applyDefaults((ValueCollectionSetting) defaultSetting, (ValueCollectionSetting) settingToPatch); - } else if (defaultSetting instanceof GenericSerializableSettings) { - applyDefaults((GenericSerializableSettings) defaultSetting, (GenericSerializableSettings) settingToPatch); - } else { - throw new IllegalStateException("Unknown Setting type"); - } - } - } - - @SuppressWarnings("unchecked") - private static void applyDefaults(ValueCollectionSetting defaultSetting, ValueCollectionSetting settingToPatch) { - Iterable originalValues = settingToPatch.getValues(); - settingToPatch.setDefaultValues((Iterable) defaultSetting.getValues()); - settingToPatch.setValues(originalValues); - } - - @SuppressWarnings("unchecked") - private static void applyDefaults(ValueSetting defaultSetting, ValueSetting settingToPatch) { - T originalValue = settingToPatch.getValue(); - settingToPatch.setDefaultValue((T) defaultSetting.getValue()); - settingToPatch.setValue(originalValue); + DefaultValuesUtils.setDefaults(contextSpecificDefaults, settingsToPatch); + return settingsToPatch; } } diff --git a/java/com.sap.sse.common/META-INF/MANIFEST.MF b/java/com.sap.sse.common/META-INF/MANIFEST.MF index 290b7f09b55..2582dcf9a21 100644 --- a/java/com.sap.sse.common/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.common/META-INF/MANIFEST.MF @@ -17,6 +17,7 @@ Export-Package: com.sap.sse.common, com.sap.sse.common.settings.generic.base, com.sap.sse.common.settings.generic.converter, com.sap.sse.common.settings.serializer, + com.sap.sse.common.settings.util, com.sap.sse.common.settings.value, com.sap.sse.common.util Require-Bundle: com.sap.sse.datamining.annotations diff --git a/java/com.sap.sse.common/src/com/sap/sse/common/settings/util/DefaultValuesUtils.java b/java/com.sap.sse.common/src/com/sap/sse/common/settings/util/DefaultValuesUtils.java new file mode 100644 index 00000000000..69b47aa25bd --- /dev/null +++ b/java/com.sap.sse.common/src/com/sap/sse/common/settings/util/DefaultValuesUtils.java @@ -0,0 +1,42 @@ +package com.sap.sse.common.settings.util; + +import java.util.Map; + +import com.sap.sse.common.settings.generic.GenericSerializableSettings; +import com.sap.sse.common.settings.generic.Setting; +import com.sap.sse.common.settings.generic.ValueCollectionSetting; +import com.sap.sse.common.settings.generic.ValueSetting; + +public class DefaultValuesUtils { + + public static void setDefaults(GenericSerializableSettings defaultSettings, GenericSerializableSettings settingsToPatch) { + for (Map.Entry entry : defaultSettings.getChildSettings().entrySet()) { + Setting defaultSetting = entry.getValue(); + Setting settingToPatch = settingsToPatch.getChildSettings().get(entry.getKey()); + if (defaultSetting instanceof ValueSetting) { + setDefaults((ValueSetting) defaultSetting, (ValueSetting) settingToPatch); + } else if (defaultSetting instanceof ValueCollectionSetting) { + setDefaults((ValueCollectionSetting) defaultSetting, (ValueCollectionSetting) settingToPatch); + } else if (defaultSetting instanceof GenericSerializableSettings) { + setDefaults((GenericSerializableSettings) defaultSetting, (GenericSerializableSettings) settingToPatch); + } else { + throw new IllegalStateException("Unknown Setting type"); + } + } + } + + @SuppressWarnings("unchecked") + private static void setDefaults(ValueCollectionSetting defaultSetting, ValueCollectionSetting settingToPatch) { + Iterable originalValues = settingToPatch.getValues(); + settingToPatch.setDefaultValues((Iterable) defaultSetting.getValues()); + settingToPatch.setValues(originalValues); + } + + @SuppressWarnings("unchecked") + private static void setDefaults(ValueSetting defaultSetting, ValueSetting settingToPatch) { + T originalValue = settingToPatch.getValue(); + settingToPatch.setDefaultValue((T) defaultSetting.getValue()); + settingToPatch.setValue(originalValue); + } + +} diff --git a/java/com.sap.sse.common/src/com/sap/sse/common/settings/util/SettingsMergeUtils.java b/java/com.sap.sse.common/src/com/sap/sse/common/settings/util/SettingsMergeUtils.java new file mode 100644 index 00000000000..2e848b696ab --- /dev/null +++ b/java/com.sap.sse.common/src/com/sap/sse/common/settings/util/SettingsMergeUtils.java @@ -0,0 +1,44 @@ +package com.sap.sse.common.settings.util; + +import java.util.Map; + +import com.sap.sse.common.Util; +import com.sap.sse.common.settings.generic.GenericSerializableSettings; +import com.sap.sse.common.settings.generic.Setting; +import com.sap.sse.common.settings.generic.ValueCollectionSetting; +import com.sap.sse.common.settings.generic.ValueSetting; + +public class SettingsMergeUtils { + + public static void mergeSettings(GenericSerializableSettings additiveSettings, GenericSerializableSettings settingsToPatch) { + for (Map.Entry entry : additiveSettings.getChildSettings().entrySet()) { + Setting setting = entry.getValue(); + Setting settingToPatch = settingsToPatch.getChildSettings().get(entry.getKey()); + if (!setting.isDefaultValue()) { + if (setting instanceof ValueSetting) { + mergeSettings((ValueSetting) setting, (ValueSetting) settingToPatch); + } else if (setting instanceof ValueCollectionSetting) { + mergeSettings((ValueCollectionSetting) setting, (ValueCollectionSetting) settingToPatch); + } else if (setting instanceof GenericSerializableSettings) { + mergeSettings((GenericSerializableSettings) setting, (GenericSerializableSettings) settingToPatch); + } else { + throw new IllegalStateException("Unknown Setting type"); + } + } + } + } + + @SuppressWarnings("unchecked") + private static void mergeSettings(ValueCollectionSetting setting, ValueCollectionSetting settingToPatch) { + for (Object value : setting.getValues()) { + if(!Util.contains(settingToPatch.getValues(), value)) { + settingToPatch.addValue((T) value); + } + } + } + + @SuppressWarnings("unchecked") + private static void mergeSettings(ValueSetting setting, ValueSetting settingToPatch) { + settingToPatch.setValue((T) setting.getValue()); + } +}