mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-14 22:43:57 +00:00
bug4100 Extracted generic code into generic settings utils
This commit is contained in:
1 parent
c7fc81088f
commit
2017a040bd
4 files changed
+92
-73
No files matched your search
+5
-73
@@ -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<String, Setting> 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<T> void applyPatchToSetting(ValueCollectionSetting<?> setting, ValueCollectionSetting<T> settingToPatch) {
|
||||
for (Object value : setting.getValues()) {
|
||||
if(!Util.contains(settingToPatch.getValues(), value)) {
|
||||
settingToPatch.addValue((T) value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private static<T> void applyPatchToSetting(ValueSetting<?> setting, ValueSetting<T> settingToPatch) {
|
||||
settingToPatch.setValue((T) setting.getValue());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static class ModeStoringSettingsPatch<CS extends GenericSerializableSettings> implements SettingsPatch<CS> {
|
||||
@@ -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<String, Setting> 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<T> void applyDefaults(ValueCollectionSetting<?> defaultSetting, ValueCollectionSetting<T> settingToPatch) {
|
||||
Iterable<T> originalValues = settingToPatch.getValues();
|
||||
settingToPatch.setDefaultValues((Iterable<T>) defaultSetting.getValues());
|
||||
settingToPatch.setValues(originalValues);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private static<T> void applyDefaults(ValueSetting<?> defaultSetting, ValueSetting<T> settingToPatch) {
|
||||
T originalValue = settingToPatch.getValue();
|
||||
settingToPatch.setDefaultValue((T) defaultSetting.getValue());
|
||||
settingToPatch.setValue(originalValue);
|
||||
DefaultValuesUtils.setDefaults(contextSpecificDefaults, settingsToPatch);
|
||||
return settingsToPatch;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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<String, Setting> 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<T> void setDefaults(ValueCollectionSetting<?> defaultSetting, ValueCollectionSetting<T> settingToPatch) {
|
||||
Iterable<T> originalValues = settingToPatch.getValues();
|
||||
settingToPatch.setDefaultValues((Iterable<T>) defaultSetting.getValues());
|
||||
settingToPatch.setValues(originalValues);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private static<T> void setDefaults(ValueSetting<?> defaultSetting, ValueSetting<T> settingToPatch) {
|
||||
T originalValue = settingToPatch.getValue();
|
||||
settingToPatch.setDefaultValue((T) defaultSetting.getValue());
|
||||
settingToPatch.setValue(originalValue);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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<String, Setting> 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<T> void mergeSettings(ValueCollectionSetting<?> setting, ValueCollectionSetting<T> settingToPatch) {
|
||||
for (Object value : setting.getValues()) {
|
||||
if(!Util.contains(settingToPatch.getValues(), value)) {
|
||||
settingToPatch.addValue((T) value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private static<T> void mergeSettings(ValueSetting<?> setting, ValueSetting<T> settingToPatch) {
|
||||
settingToPatch.setValue((T) setting.getValue());
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user