Skip to content
This repository was archived by the owner on May 5, 2021. It is now read-only.

Commit 7ece677

Browse files
author
Stefan Kock
committed
SORMAS-Foundation#4140 Unify serverFeature config query, filter to type.isServerFeature()
1 parent fb91bf2 commit 7ece677

1 file changed

Lines changed: 17 additions & 12 deletions

File tree

sormas-backend/src/main/java/de/symeda/sormas/backend/feature/FeatureConfigurationService.java

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -124,12 +124,9 @@ public Predicate createUserFilter(CriteriaBuilder cb, CriteriaQuery cq, From<?,
124124

125125
public void createMissingFeatureConfigurations() {
126126

127-
List<FeatureConfiguration> featureConfigurations = getAll();
128-
Map<FeatureType, FeatureConfiguration> existingListOfConfigurations =
129-
featureConfigurations.stream().collect(Collectors.toMap(FeatureConfiguration::getFeatureType, Function.identity(), (e1, e2) -> e2));
130-
127+
Map<FeatureType, FeatureConfiguration> configs = getServerFeatureConfigurations();
131128
FeatureType.getAllServerFeatures().forEach(featureType -> {
132-
FeatureConfiguration savedConfiguration = existingListOfConfigurations.get(featureType);
129+
FeatureConfiguration savedConfiguration = configs.get(featureType);
133130
if (savedConfiguration == null) {
134131
FeatureConfiguration configuration = FeatureConfiguration.build(featureType, featureType.isEnabledDefault());
135132
ensurePersisted(configuration);
@@ -139,23 +136,31 @@ public void createMissingFeatureConfigurations() {
139136

140137
public void updateFeatureConfigurations() {
141138

142-
List<FeatureConfiguration> featureConfigurations = getAll();
143-
Map<FeatureType, FeatureConfiguration> featureConfigurationMap =
144-
featureConfigurations.stream().collect(Collectors.toMap(FeatureConfiguration::getFeatureType, Function.identity(), (e1, e2) -> e2));
145-
139+
Map<FeatureType, FeatureConfiguration> configs = getServerFeatureConfigurations();
146140
FeatureType.getAllServerFeatures().forEach(featureType -> {
147141
if (featureType.isDependent()) {
148-
boolean hasEnabledDependentFeature = hasEnabledDependentFeature(featureType, featureConfigurationMap);
149-
142+
boolean hasEnabledDependentFeature = hasEnabledDependentFeature(featureType, configs);
150143
if (!hasEnabledDependentFeature) {
151-
FeatureConfiguration configuration = featureConfigurationMap.get(featureType);
144+
FeatureConfiguration configuration = configs.get(featureType);
152145
configuration.setEnabled(false);
153146
ensurePersisted(configuration);
154147
}
155148
}
156149
});
157150
}
158151

152+
private Map<FeatureType, FeatureConfiguration> getServerFeatureConfigurations() {
153+
154+
List<FeatureConfiguration> featureConfigurations = getAll();
155+
Map<FeatureType, FeatureConfiguration> configurationsMap =
156+
featureConfigurations.stream()
157+
.filter(e -> e.getFeatureType().isServerFeature())
158+
// In case a serverFeature happens not to be unique in the database, take the last one
159+
.collect(Collectors.toMap(FeatureConfiguration::getFeatureType, Function.identity(), (e1, e2) -> e2));
160+
161+
return configurationsMap;
162+
}
163+
159164
private boolean hasEnabledDependentFeature(FeatureType featureType, Map<FeatureType, FeatureConfiguration> featureConfigurationMap) {
160165

161166
for (FeatureType dependentFeatureType : featureType.getDependentFeatures()) {

0 commit comments

Comments
 (0)