Skip to content

Commit 03bb6f0

Browse files
committed
add method to get optional property from an optional module
Signed-off-by: Samir Romdhani <[email protected]> WIP WIP add methods to get optional property from an optional module Signed-off-by: Samir Romdhani <[email protected]>
1 parent 8462d87 commit 03bb6f0

File tree

7 files changed

+75
-63
lines changed

7 files changed

+75
-63
lines changed

commons/src/main/java/com/powsybl/commons/config/ModuleConfigUtil.java

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
package com.powsybl.commons.config;
99

1010
import java.util.*;
11+
import java.util.function.BiFunction;
1112
import java.util.function.Function;
1213
import java.util.function.Predicate;
1314
import java.util.function.Supplier;
@@ -20,38 +21,43 @@ public final class ModuleConfigUtil {
2021
private ModuleConfigUtil() {
2122
}
2223

23-
public static Optional<Boolean> getOptionalBooleanProperty(ModuleConfig moduleConfig, List<String> names) {
24-
return getOptionalProperty(moduleConfig, names, moduleConfig::getOptionalBooleanProperty);
24+
public static Optional<Boolean> getOptionalBooleanProperty(ModuleConfig moduleConfig, List<String> propertyNames) {
25+
return getOptionalProperty(moduleConfig, propertyNames, moduleConfig::getOptionalBooleanProperty);
2526
}
2627

27-
public static Optional<String> getOptionalStringProperty(ModuleConfig moduleConfig, List<String> names) {
28-
return getOptionalProperty(moduleConfig, names, moduleConfig::getOptionalStringProperty);
28+
public static Optional<String> getOptionalStringProperty(ModuleConfig moduleConfig, List<String> propertyNames) {
29+
return getOptionalProperty(moduleConfig, propertyNames, moduleConfig::getOptionalStringProperty);
2930
}
3031

31-
public static Optional<List<String>> getOptionalStringListProperty(ModuleConfig moduleConfig, List<String> names) {
32-
return getOptionalProperty(moduleConfig, names, moduleConfig::getOptionalStringListProperty);
32+
public static Optional<List<String>> getOptionalStringListProperty(ModuleConfig moduleConfig, List<String> propertyNames) {
33+
return getOptionalProperty(moduleConfig, propertyNames, moduleConfig::getOptionalStringListProperty);
3334
}
3435

35-
public static OptionalDouble getOptionalDoubleProperty(ModuleConfig moduleConfig, List<String> names) {
36-
return getOptionalProperty(moduleConfig, names, moduleConfig::getOptionalDoubleProperty, OptionalDouble::empty, OptionalDouble::isPresent);
36+
public static OptionalDouble getOptionalDoubleProperty(ModuleConfig moduleConfig, List<String> propertyNames) {
37+
return getOptionalProperty(moduleConfig, propertyNames, moduleConfig::getOptionalDoubleProperty, OptionalDouble::empty, OptionalDouble::isPresent);
3738
}
3839

39-
public static OptionalInt getOptionalIntProperty(ModuleConfig moduleConfig, List<String> names) {
40-
return getOptionalProperty(moduleConfig, names, moduleConfig::getOptionalIntProperty, OptionalInt::empty, OptionalInt::isPresent);
40+
public static OptionalInt getOptionalIntProperty(ModuleConfig moduleConfig, List<String> propertyNames) {
41+
return getOptionalProperty(moduleConfig, propertyNames, moduleConfig::getOptionalIntProperty, OptionalInt::empty, OptionalInt::isPresent);
4142
}
4243

43-
private static <T> Optional<T> getOptionalProperty(ModuleConfig moduleConfig, List<String> names, Function<String, Optional<T>> supplier) {
44-
return getOptionalProperty(moduleConfig, names, supplier, Optional::empty, Optional::isPresent);
44+
private static <T> Optional<T> getOptionalProperty(ModuleConfig moduleConfig, List<String> propertyNames, Function<String, Optional<T>> supplier) {
45+
return getOptionalProperty(moduleConfig, propertyNames, supplier, Optional::empty, Optional::isPresent);
4546
}
4647

47-
private static <T> T getOptionalProperty(ModuleConfig moduleConfig, List<String> names, Function<String, T> supplier, Supplier<T> factory, Predicate<T> isPresent) {
48+
private static <T> T getOptionalProperty(ModuleConfig moduleConfig, List<String> propertyNames, Function<String, T> supplier, Supplier<T> factory, Predicate<T> isPresent) {
4849
Objects.requireNonNull(moduleConfig);
49-
Objects.requireNonNull(names);
50+
Objects.requireNonNull(propertyNames);
5051
T res = factory.get();
51-
Iterator<String> it = names.iterator();
52+
Iterator<String> it = propertyNames.iterator();
5253
while (!isPresent.test(res) && it.hasNext()) {
5354
res = supplier.apply(it.next());
5455
}
5556
return res;
5657
}
58+
59+
public static <T> T getProperty(ModuleConfig moduleConfig, String propertyName, T defaultValue, BiFunction<ModuleConfig, String, Optional<T>> function) {
60+
return function.apply(moduleConfig, propertyName).orElse(defaultValue);
61+
}
62+
5763
}

commons/src/main/java/com/powsybl/commons/config/PlatformConfig.java

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,11 @@
1515

1616
import java.nio.file.Files;
1717
import java.nio.file.Path;
18-
import java.util.List;
19-
import java.util.Objects;
20-
import java.util.Optional;
21-
import java.util.ServiceLoader;
18+
import java.util.*;
2219
import java.util.function.Supplier;
2320

21+
import static com.powsybl.commons.config.ModuleConfigUtil.getProperty;
22+
2423
/**
2524
*
2625
* @author Geoffroy Jamgotchian {@literal <geoffroy.jamgotchian at rte-france.com>}
@@ -97,6 +96,30 @@ public Optional<ModuleConfig> getOptionalModuleConfig(String name) {
9796
return getRepository().getModuleConfig(name);
9897
}
9998

99+
public Integer getIntProperty(String moduleName, String propertyName, int defaultValue) {
100+
return getOptionalModuleConfig(moduleName)
101+
.map(moduleConfig -> moduleConfig.getIntProperty(propertyName, defaultValue))
102+
.orElse(null);
103+
}
104+
105+
public String getStringProperty(String moduleName, String propertyName, String defaultValue) {
106+
return getOptionalModuleConfig(moduleName)
107+
.map(moduleConfig -> getProperty(moduleConfig, propertyName, defaultValue, ModuleConfig::getOptionalStringProperty))
108+
.orElse(null);
109+
}
110+
111+
public Boolean getBooleanProperty(String moduleName, String propertyName, boolean defaultValue) {
112+
return getOptionalModuleConfig(moduleName)
113+
.map(moduleConfig -> getProperty(moduleConfig, propertyName, defaultValue, ModuleConfig::getOptionalBooleanProperty))
114+
.orElse(null);
115+
}
116+
117+
public <E extends Enum<E>> E getEnumProperty(String moduleName, String propertyName, E defaultValue, Class<E> clazz) {
118+
return getOptionalModuleConfig(moduleName)
119+
.map(moduleConfig -> moduleConfig.getEnumProperty(propertyName, clazz, defaultValue))
120+
.orElse(null);
121+
}
122+
100123
private static final class EmptyModuleConfigRepository implements ModuleConfigRepository {
101124
@Override
102125
public Optional<ModuleConfig> getModuleConfig(String name) {

commons/src/main/java/com/powsybl/commons/config/PlatformConfigNamedProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
import java.util.function.Function;
1616

1717
/**
18-
* A provider that can be loaded by by Java's ServiceLoader based on its name
18+
* A provider that can be loaded by Java's ServiceLoader based on its name
1919
* present in an entry in the PlatformConfig.
2020
*
2121
* @author Jon Harper {@literal <jon.harper at rte-france.com>}

commons/src/main/java/com/powsybl/commons/io/table/TableFormatterConfig.java

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,10 @@
77
*/
88
package com.powsybl.commons.io.table;
99

10-
import com.powsybl.commons.config.ModuleConfig;
1110
import com.powsybl.commons.config.PlatformConfig;
1211

1312
import java.util.Locale;
1413
import java.util.Objects;
15-
import java.util.Optional;
1614

1715
/**
1816
@@ -38,13 +36,11 @@ public static TableFormatterConfig load() {
3836
}
3937

4038
public static TableFormatterConfig load(PlatformConfig platformConfig) {
41-
Optional<ModuleConfig> config = platformConfig.getOptionalModuleConfig(CONFIG_MODULE_NAME);
42-
String language = config.flatMap(c -> c.getOptionalStringProperty("language")).orElse(DEFAULT_LANGUAGE);
43-
String separator = config.flatMap(c -> c.getOptionalStringProperty("separator")).orElse(Character.toString(DEFAULT_CSV_SEPARATOR));
44-
String invalidString = config.flatMap(c -> c.getOptionalStringProperty("invalid-string")).orElse(DEFAULT_INVALID_STRING);
45-
boolean printHeader = config.flatMap(c -> c.getOptionalBooleanProperty("print-header")).orElse(DEFAULT_PRINT_HEADER);
46-
boolean printTitle = config.flatMap(c -> c.getOptionalBooleanProperty("print-title")).orElse(DEFAULT_PRINT_TITLE);
47-
39+
String language = platformConfig.getStringProperty(CONFIG_MODULE_NAME, "language", DEFAULT_LANGUAGE);
40+
String separator = platformConfig.getStringProperty(CONFIG_MODULE_NAME, "separator", Character.toString(DEFAULT_CSV_SEPARATOR));
41+
String invalidString = platformConfig.getStringProperty(CONFIG_MODULE_NAME, "invalid-string", DEFAULT_INVALID_STRING);
42+
boolean printHeader = platformConfig.getBooleanProperty(CONFIG_MODULE_NAME, "print-header", DEFAULT_PRINT_HEADER);
43+
boolean printTitle = platformConfig.getBooleanProperty(CONFIG_MODULE_NAME, "print-header", DEFAULT_PRINT_TITLE);
4844
Locale locale = Locale.forLanguageTag(language);
4945
return new TableFormatterConfig(locale, separator.charAt(0), invalidString, printHeader, printTitle);
5046
}

commons/src/main/java/com/powsybl/commons/parameters/Parameter.java

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -133,24 +133,18 @@ private static Object checkDefaultValue(ParameterType type, Object defaultValue)
133133

134134
public static Object read(String prefix, Properties parameters, Parameter configuredParameter, ParameterDefaultValueConfig defaultValueConfig) {
135135
Objects.requireNonNull(configuredParameter);
136-
switch (configuredParameter.getType()) {
137-
case BOOLEAN:
138-
return readBoolean(prefix, parameters, configuredParameter, defaultValueConfig);
139-
case STRING:
140-
return readString(prefix, parameters, configuredParameter, defaultValueConfig);
141-
case STRING_LIST:
142-
return readStringList(prefix, parameters, configuredParameter, defaultValueConfig);
143-
case DOUBLE:
144-
return readDouble(prefix, parameters, configuredParameter, defaultValueConfig);
145-
case INTEGER:
146-
return readInteger(prefix, parameters, configuredParameter, defaultValueConfig);
147-
default:
148-
throw new IllegalStateException("Unknown parameter type: " + configuredParameter.getType());
149-
}
150-
}
151-
152-
public static Object read(String prefix, Properties paramaters, Parameter configuredParameter) {
153-
return read(prefix, paramaters, configuredParameter, ParameterDefaultValueConfig.INSTANCE);
136+
return switch (configuredParameter.getType()) {
137+
case BOOLEAN -> readBoolean(prefix, parameters, configuredParameter, defaultValueConfig);
138+
case STRING -> readString(prefix, parameters, configuredParameter, defaultValueConfig);
139+
case STRING_LIST -> readStringList(prefix, parameters, configuredParameter, defaultValueConfig);
140+
case DOUBLE -> readDouble(prefix, parameters, configuredParameter, defaultValueConfig);
141+
case INTEGER -> readInteger(prefix, parameters, configuredParameter, defaultValueConfig);
142+
default -> throw new IllegalStateException("Unknown parameter type: " + configuredParameter.getType());
143+
};
144+
}
145+
146+
public static Object read(String prefix, Properties parameters, Parameter configuredParameter) {
147+
return read(prefix, parameters, configuredParameter, ParameterDefaultValueConfig.INSTANCE);
154148
}
155149

156150
public static boolean readBoolean(String prefix, Properties parameters, Parameter configuredParameter, ParameterDefaultValueConfig defaultValueConfig) {

commons/src/main/java/com/powsybl/commons/parameters/ParameterDefaultValueConfig.java

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -53,20 +53,14 @@ private synchronized ModuleConfig getModuleConfig() {
5353

5454
public Object getValue(String prefix, Parameter parameter) {
5555
Objects.requireNonNull(parameter);
56-
switch (parameter.getType()) {
57-
case BOOLEAN:
58-
return getBooleanValue(prefix, parameter);
59-
case STRING:
60-
return getStringValue(prefix, parameter);
61-
case STRING_LIST:
62-
return getStringListValue(prefix, parameter);
63-
case DOUBLE:
64-
return getDoubleValue(prefix, parameter);
65-
case INTEGER:
66-
return getIntegerValue(prefix, parameter);
67-
default:
68-
throw new IllegalStateException("Unsupported parameter type: " + parameter.getType());
69-
}
56+
return switch (parameter.getType()) {
57+
case BOOLEAN -> getBooleanValue(prefix, parameter);
58+
case STRING -> getStringValue(prefix, parameter);
59+
case STRING_LIST -> getStringListValue(prefix, parameter);
60+
case DOUBLE -> getDoubleValue(prefix, parameter);
61+
case INTEGER -> getIntegerValue(prefix, parameter);
62+
default -> throw new IllegalStateException("Unsupported parameter type: " + parameter.getType());
63+
};
7064
}
7165

7266
public boolean getBooleanValue(String prefix, Parameter parameter) {

computation-local/src/main/java/com/powsybl/computation/local/LocalComputationConfig.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,8 @@ public static LocalComputationConfig load(PlatformConfig platformConfig, FileSys
6767
Path localDir = config.flatMap(c -> getTmpDir(c, "tmp-dir").or(() -> getTmpDir(c, "tmpDir")))
6868
.orElse(getDefaultLocalDir(fileSystem));
6969
int availableCore = config.map(c -> c.getOptionalIntProperty("available-core")
70-
.orElse(c.getOptionalIntProperty("availableCore").orElse(DEFAULT_AVAILABLE_CORE)))
70+
.orElse(c.getOptionalIntProperty("availableCore").orElse(DEFAULT_AVAILABLE_CORE)))
7171
.orElse(DEFAULT_AVAILABLE_CORE);
72-
7372
if (availableCore <= 0) {
7473
availableCore = Runtime.getRuntime().availableProcessors();
7574
}

0 commit comments

Comments
 (0)