mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-03-24 13:44:33 +00:00
added setMode to documentation, added error handling with templated exception for set mode and refactored some feature config related methods (changed the equal to be case insensitive)
This commit is contained in:
@@ -13,6 +13,7 @@ import dev.sheldan.abstracto.core.config.FeatureEnum;
|
||||
import dev.sheldan.abstracto.core.service.FeatureConfigService;
|
||||
import dev.sheldan.abstracto.core.service.FeatureModeService;
|
||||
import dev.sheldan.abstracto.core.service.management.FeatureFlagManagementService;
|
||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -34,20 +35,15 @@ public class SetMode extends AbstractConditionableCommand {
|
||||
@Autowired
|
||||
private FeatureFlagManagementService featureFlagManagementService;
|
||||
|
||||
@Autowired
|
||||
private TemplateService templateService;
|
||||
|
||||
@Override
|
||||
public CommandResult execute(CommandContext commandContext) {
|
||||
String featureName = (String) commandContext.getParameters().getParameters().get(0);
|
||||
String modeName = (String) commandContext.getParameters().getParameters().get(1);
|
||||
|
||||
if(featureConfigService.doesFeatureExist(featureName)) {
|
||||
if(featureConfigService.isModeValid(featureName, modeName)) {
|
||||
featureModeService.setModeForFeatureTo(featureName, commandContext.getUserInitiatedContext().getServer(), modeName);
|
||||
} else {
|
||||
return CommandResult.fromError("Mode not available");
|
||||
}
|
||||
} else {
|
||||
return CommandResult.fromError("Feature does not exist");
|
||||
}
|
||||
featureModeService.setModeForFeatureTo(featureName, commandContext.getUserInitiatedContext().getServer(), modeName);
|
||||
return CommandResult.fromSuccess();
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,8 @@ import dev.sheldan.abstracto.core.config.FeatureEnum;
|
||||
import dev.sheldan.abstracto.core.config.FeatureMode;
|
||||
import dev.sheldan.abstracto.core.config.PostTargetEnum;
|
||||
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
|
||||
import dev.sheldan.abstracto.core.exception.FeatureModeNotFoundException;
|
||||
import dev.sheldan.abstracto.core.exception.FeatureNotFoundException;
|
||||
import dev.sheldan.abstracto.core.models.FeatureValidationResult;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -43,7 +45,7 @@ public class FeatureConfigServiceBean implements FeatureConfigService {
|
||||
if(any.isPresent()) {
|
||||
return any.get();
|
||||
}
|
||||
throw new AbstractoRunTimeException(String.format("Feature %s not found in configuration", featureEnum.getKey()));
|
||||
throw new FeatureNotFoundException("", featureEnum.getKey(), getFeaturesAsList());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -64,23 +66,29 @@ public class FeatureConfigServiceBean implements FeatureConfigService {
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getFeatureModesFromFeatureAsString(String featureName) {
|
||||
FeatureConfig featureConfig = getFeatureDisplayForFeature(featureName);
|
||||
return featureConfig.getAvailableModes().stream().map(FeatureMode::getKey).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean doesFeatureExist(String name) {
|
||||
return availableFeatures.stream().anyMatch(featureDisplay -> featureDisplay.getFeature().getKey().equals(name));
|
||||
return availableFeatures.stream().anyMatch(featureDisplay -> featureDisplay.getFeature().getKey().equalsIgnoreCase(name));
|
||||
}
|
||||
|
||||
@Override
|
||||
public FeatureEnum getFeatureEnum(String key) {
|
||||
Optional<FeatureConfig> foundFeature = availableFeatures.stream().filter(featureDisplay -> featureDisplay.getFeature().getKey().equals(key)).findAny();
|
||||
Optional<FeatureConfig> foundFeature = availableFeatures.stream().filter(featureDisplay -> featureDisplay.getFeature().getKey().equalsIgnoreCase(key)).findAny();
|
||||
if(foundFeature.isPresent()) {
|
||||
return foundFeature.get().getFeature();
|
||||
}
|
||||
throw new AbstractoRunTimeException(String.format("Feature %s not found.", key));
|
||||
throw new FeatureNotFoundException("", key, getFeaturesAsList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public PostTargetEnum getPostTargetEnumByKey(String key) {
|
||||
Predicate<PostTargetEnum> postTargetComparison = postTargetEnum -> postTargetEnum.getKey().equals(key);
|
||||
Predicate<PostTargetEnum> postTargetComparison = postTargetEnum -> postTargetEnum.getKey().equalsIgnoreCase(key);
|
||||
Optional<FeatureConfig> foundFeature = availableFeatures.stream().filter(featureDisplay -> featureDisplay.getRequiredPostTargets().stream().anyMatch(postTargetComparison)).findAny();
|
||||
if(foundFeature.isPresent()) {
|
||||
return foundFeature.get().getRequiredPostTargets().stream().filter(postTargetComparison).findAny().get();
|
||||
@@ -107,24 +115,23 @@ public class FeatureConfigServiceBean implements FeatureConfigService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public FeatureMode getFeatureModeByKey(String key) {
|
||||
Predicate<FeatureMode> postTargetComparison = postTargetEnum -> postTargetEnum.getKey().equals(key);
|
||||
Optional<FeatureConfig> foundFeature = availableFeatures.stream().filter(featureDisplay -> featureDisplay.getAvailableModes().stream().anyMatch(postTargetComparison)).findAny();
|
||||
public FeatureMode getFeatureModeByKey(FeatureConfig featureConfig, String key) {
|
||||
Optional<FeatureMode> foundFeature = featureConfig.getAvailableModes().stream().filter(featureMode -> featureMode.getKey().equalsIgnoreCase(key)).findAny();
|
||||
if(foundFeature.isPresent()) {
|
||||
return foundFeature.get().getAvailableModes().stream().filter(postTargetComparison).findAny().get();
|
||||
return foundFeature.get();
|
||||
}
|
||||
throw new AbstractoRunTimeException(String.format("Feature mode %s not found.", key));
|
||||
throw new FeatureModeNotFoundException("", key, getFeatureModesFromFeatureAsString(featureConfig.getFeature().getKey()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isModeValid(String featureName, String modeName) {
|
||||
return availableFeatures
|
||||
.stream()
|
||||
.filter(featureConfig -> featureConfig.getFeature().getKey().equals(featureName))
|
||||
.filter(featureConfig -> featureConfig.getFeature().getKey().equalsIgnoreCase(featureName))
|
||||
.map(FeatureConfig::getAvailableModes)
|
||||
.anyMatch(featureModes -> featureModes
|
||||
.stream()
|
||||
.anyMatch(featureMode -> featureMode.getKey().equals(modeName))
|
||||
.anyMatch(featureMode -> featureMode.getKey().equalsIgnoreCase(modeName))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.service.management.FeatureManagementService;
|
||||
import dev.sheldan.abstracto.core.config.FeatureConfig;
|
||||
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
||||
import dev.sheldan.abstracto.core.config.FeatureMode;
|
||||
import dev.sheldan.abstracto.core.models.database.AFeature;
|
||||
@@ -35,19 +36,22 @@ public class FeatureModeServiceBean implements FeatureModeService {
|
||||
|
||||
@Override
|
||||
public AFeatureMode setModeForFeatureTo(AFeatureFlag flag, String newMode) {
|
||||
FeatureMode featureMode = featureConfigService.getFeatureModeByKey(newMode);
|
||||
FeatureConfig featureConfig = featureConfigService.getFeatureDisplayForFeature(flag.getFeature().getKey());
|
||||
FeatureMode featureMode = featureConfigService.getFeatureModeByKey(featureConfig, newMode);
|
||||
return setModeForFeatureTo(flag, featureMode);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AFeatureMode setModeForFeatureTo(FeatureEnum featureEnum, AServer server, String newMode) {
|
||||
FeatureMode featureMode = featureConfigService.getFeatureModeByKey(newMode);
|
||||
FeatureConfig featureConfig = featureConfigService.getFeatureDisplayForFeature(featureEnum);
|
||||
FeatureMode featureMode = featureConfigService.getFeatureModeByKey(featureConfig, newMode);
|
||||
return setModeForFeatureTo(featureEnum, server, featureMode);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AFeatureMode setModeForFeatureTo(AFeature feature, AServer server, String newMode) {
|
||||
FeatureMode featureMode = featureConfigService.getFeatureModeByKey(newMode);
|
||||
FeatureConfig featureConfig = featureConfigService.getFeatureDisplayForFeature(feature.getKey());
|
||||
FeatureMode featureMode = featureConfigService.getFeatureModeByKey(featureConfig, newMode);
|
||||
return setModeForFeatureTo(feature, server, featureMode);
|
||||
}
|
||||
|
||||
@@ -77,19 +81,22 @@ public class FeatureModeServiceBean implements FeatureModeService {
|
||||
|
||||
@Override
|
||||
public AFeatureMode createMode(AFeatureFlag flag, String newMode) {
|
||||
FeatureMode featureMode = featureConfigService.getFeatureModeByKey(newMode);
|
||||
FeatureConfig featureConfig = featureConfigService.getFeatureDisplayForFeature(flag.getFeature().getKey());
|
||||
FeatureMode featureMode = featureConfigService.getFeatureModeByKey(featureConfig, newMode);
|
||||
return createMode(flag, featureMode);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AFeatureMode createMode(FeatureEnum featureEnum, AServer server, String newMode) {
|
||||
FeatureMode featureMode = featureConfigService.getFeatureModeByKey(newMode);
|
||||
FeatureConfig featureConfig = featureConfigService.getFeatureDisplayForFeature(featureEnum);
|
||||
FeatureMode featureMode = featureConfigService.getFeatureModeByKey(featureConfig, newMode);
|
||||
return createMode(featureEnum, server, featureMode);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AFeatureMode createMode(AFeature feature, AServer server, String newMode) {
|
||||
FeatureMode featureMode = featureConfigService.getFeatureModeByKey(newMode);
|
||||
FeatureConfig featureConfig = featureConfigService.getFeatureDisplayForFeature(feature.getKey());
|
||||
FeatureMode featureMode = featureConfigService.getFeatureModeByKey(featureConfig, newMode);
|
||||
return createMode(feature, server, featureMode);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
<#assign availableModes>${availableModes?join(", ")}</#assign><#include "feature_mode_not_found_text">
|
||||
Reference in New Issue
Block a user