[AB-163] fixing printing all possible feature modes in case an unknown one was provided for enableMode/disableMode

This commit is contained in:
Sheldan
2021-09-10 00:21:30 +02:00
parent db856f2647
commit 0646efe33d
7 changed files with 31 additions and 15 deletions

View File

@@ -45,7 +45,7 @@ public class DisableMode extends AbstractConditionableCommand {
String featureName = (String) commandContext.getParameters().getParameters().get(0);
String modeName = (String) commandContext.getParameters().getParameters().get(1);
FeatureDefinition featureDefinition = featureConfigService.getFeatureEnum(featureName);
FeatureMode featureMode = featureModeService.getFeatureModeForKey(modeName);
FeatureMode featureMode = featureModeService.getFeatureModeForKey(featureName, modeName);
AServer server = serverManagementService.loadServer(commandContext.getGuild());
featureModeService.disableFeatureModeForFeature(featureDefinition, server, featureMode);
return CommandResult.fromSuccess();

View File

@@ -45,7 +45,7 @@ public class EnableMode extends AbstractConditionableCommand {
String featureName = (String) commandContext.getParameters().getParameters().get(0);
String modeName = (String) commandContext.getParameters().getParameters().get(1);
FeatureDefinition featureDefinition = featureConfigService.getFeatureEnum(featureName);
FeatureMode featureMode = featureModeService.getFeatureModeForKey(modeName);
FeatureMode featureMode = featureModeService.getFeatureModeForKey(featureName, modeName);
AServer server = serverManagementService.loadServer(commandContext.getGuild().getIdLong());
featureModeService.enableFeatureModeForFeature(featureDefinition, server, featureMode);
return CommandResult.fromSuccess();

View File

@@ -18,6 +18,7 @@ import net.dv8tion.jda.api.entities.Guild;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.*;
import java.util.function.Consumer;
import java.util.stream.Collectors;
@@ -46,6 +47,8 @@ public class FeatureModeServiceBean implements FeatureModeService {
@Autowired
private ServerManagementService serverManagementService;
private HashMap<String, List<String>> featureModes = new HashMap<>();
@Override
public void enableFeatureModeForFeature(FeatureDefinition featureDefinition, AServer server, FeatureMode mode) {
setOrCreateFeatureMode(featureDefinition, server, mode, true);
@@ -107,19 +110,23 @@ public class FeatureModeServiceBean implements FeatureModeService {
}
@Override
public FeatureMode getFeatureModeForKey(String key) {
return getAllAvailableFeatureModes().stream().filter(mode -> mode.getKey().equalsIgnoreCase(key)).findAny().orElseThrow(() -> new FeatureModeNotFoundException(key, getFeatureModesAsStrings()));
public FeatureMode getFeatureModeForKey(String featureKey, String featureModeKey) {
return getAllAvailableFeatureModes()
.stream()
.filter(mode -> mode.getKey().equalsIgnoreCase(featureModeKey))
.findAny()
.orElseThrow(() -> new FeatureModeNotFoundException(featureModeKey, getFeatureModesAsStrings(featureKey)));
}
@Override
public List<FeatureMode> getAllAvailableFeatureModes() {
List<FeatureMode> featureModes = new ArrayList<>();
featureConfigService.getAllFeatureConfigs().forEach(featureConfig -> featureModes.addAll(featureConfig.getAvailableModes()));
return featureModes;
List<FeatureMode> fullFeatureModes = new ArrayList<>();
featureConfigService.getAllFeatureConfigs().forEach(featureConfig -> fullFeatureModes.addAll(featureConfig.getAvailableModes()));
return fullFeatureModes;
}
private List<String> getFeatureModesAsStrings() {
return getAllAvailableFeatureModes().stream().map(FeatureMode::getKey).collect(Collectors.toList());
private List<String> getFeatureModesAsStrings(String featureKey) {
return featureModes.get(featureKey);
}
@Override
@@ -199,4 +206,13 @@ public class FeatureModeServiceBean implements FeatureModeService {
}
@PostConstruct
public void postConstruct() {
featureConfigService.getAllFeatureConfigs().forEach(featureConfig -> {
List<String> modes = new ArrayList<>();
featureConfig.getAvailableModes().forEach(featureMode -> modes.add(featureMode.getKey()));
featureModes.put(featureConfig.getFeature().getKey(), modes);
});
}
}