bug4100 Extracted generic code into generic settings utils

This commit is contained in:
Vladislav Chumak committed 2017-04-18 15:48:03 +02:00
1 parent c7fc81088f
commit 2017a040bd
4 files changed
+92 -73

No files matched your search

@@ -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());
}
}