Skip to content

Commit f533287

Browse files
Merge branch 'dev' into df/#1356-validation-em
2 parents 6afd362 + 05ec099 commit f533287

File tree

7 files changed

+119
-27
lines changed

7 files changed

+119
-27
lines changed

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1111

1212
### Fixed
1313
- Fixed handling of `CongestionResult.InputModelType` in `EntityProcessor` [#1325](https://github.com/ie3-institute/PowerSystemDataModel/issues/1325)
14-
- -Fixed em fields in input models [#1331](https://github.com/ie3-institute/PowerSystemDataModel/issues/1331)
14+
- Fixed em fields in input models [#1331](https://github.com/ie3-institute/PowerSystemDataModel/issues/1331)
15+
- Fixed valid fields for `EmInput` [#1360](https://github.com/ie3-institute/PowerSystemDataModel/issues/1360)
1516

1617
### Changed
1718
- Updated dependabot workflow and added CODEOWNERS [#1328](https://github.com/ie3-institute/PowerSystemDataModel/issues/1328)

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ plugins {
44
id 'maven-publish'
55
id 'signing'
66
id 'pmd' // code check, working on source code
7-
id 'com.diffplug.spotless' version '7.0.4' //code format
7+
id 'com.diffplug.spotless' version '7.1.0' //code format
88
id 'com.github.spotbugs' version '6.2.1' // code check, working on byte code
99
id 'de.undercouch.download' version '5.6.0'
1010
id 'kr.motd.sphinx' version '2.10.1' // documentation generation

src/main/java/edu/ie3/datamodel/io/factory/input/AssetInputEntityFactory.java

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,9 @@
2424
public abstract class AssetInputEntityFactory<T extends AssetInput, D extends AssetInputEntityData>
2525
extends UniqueEntityFactory<T, D> {
2626

27-
private static final String OPERATES_FROM = "operatesFrom";
28-
private static final String OPERATES_UNTIL = "operatesUntil";
27+
protected static final String OPERATOR = "operator";
28+
protected static final String OPERATES_FROM = "operatesFrom";
29+
protected static final String OPERATES_UNTIL = "operatesUntil";
2930

3031
@SafeVarargs
3132
protected AssetInputEntityFactory(Class<? extends T>... allowedClasses) {
@@ -48,14 +49,33 @@ protected List<Set<String>> getFields(Class<?> entityClass) {
4849
Set<String> constructorParamsUntil = expandSet(constructorParamsMin, OPERATES_UNTIL);
4950
Set<String> constructorParamsBoth = expandSet(constructorParamsFrom, OPERATES_UNTIL);
5051

52+
// with operator field
53+
Set<String> constructorParamsOperator = expandSet(constructorParamsMin, OPERATOR);
54+
Set<String> constructorParamsOperatorFrom = expandSet(constructorParamsFrom, OPERATOR);
55+
Set<String> constructorParamsOperatorUntil = expandSet(constructorParamsUntil, OPERATOR);
56+
Set<String> constructorParamsOperatorBoth = expandSet(constructorParamsBoth, OPERATOR);
57+
5158
final String[] additionalFields = getAdditionalFields();
5259

5360
constructorParamsMin = expandSet(constructorParamsMin, additionalFields);
5461
constructorParamsFrom = expandSet(constructorParamsFrom, additionalFields);
5562
constructorParamsUntil = expandSet(constructorParamsUntil, additionalFields);
5663
constructorParamsBoth = expandSet(constructorParamsBoth, additionalFields);
64+
65+
constructorParamsOperator = expandSet(constructorParamsOperator, additionalFields);
66+
constructorParamsOperatorFrom = expandSet(constructorParamsOperatorFrom, additionalFields);
67+
constructorParamsOperatorUntil = expandSet(constructorParamsOperatorUntil, additionalFields);
68+
constructorParamsOperatorBoth = expandSet(constructorParamsOperatorBoth, additionalFields);
69+
5770
return Arrays.asList(
58-
constructorParamsMin, constructorParamsFrom, constructorParamsUntil, constructorParamsBoth);
71+
constructorParamsMin,
72+
constructorParamsFrom,
73+
constructorParamsUntil,
74+
constructorParamsBoth,
75+
constructorParamsOperator,
76+
constructorParamsOperatorFrom,
77+
constructorParamsOperatorUntil,
78+
constructorParamsOperatorBoth);
5979
}
6080

6181
/**

src/main/java/edu/ie3/datamodel/io/factory/input/EmInputFactory.java

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,7 @@
88
import edu.ie3.datamodel.models.OperationTime;
99
import edu.ie3.datamodel.models.input.EmInput;
1010
import edu.ie3.datamodel.models.input.OperatorInput;
11-
import java.util.ArrayList;
12-
import java.util.List;
13-
import java.util.Set;
14-
import java.util.UUID;
11+
import java.util.*;
1512

1613
public class EmInputFactory extends AssetInputEntityFactory<EmInput, EmAssetInputEntityData> {
1714

@@ -23,21 +20,9 @@ public EmInputFactory() {
2320
super(EmInput.class);
2421
}
2522

26-
@Override
27-
protected List<Set<String>> getFields(Class<?> entityClass) {
28-
List<Set<String>> fields = new ArrayList<>(super.getFields(entityClass));
29-
30-
List<Set<String>> withEm =
31-
fields.stream().map(f -> (Set<String>) expandSet(f, CONTROLLING_EM)).toList();
32-
33-
fields.addAll(withEm);
34-
35-
return fields;
36-
}
37-
3823
@Override
3924
protected String[] getAdditionalFields() {
40-
return new String[] {CONTROL_STRATEGY};
25+
return new String[] {CONTROL_STRATEGY, CONTROLLING_EM};
4126
}
4227

4328
@Override

src/test/groovy/edu/ie3/datamodel/io/factory/input/AssetInputEntityFactoryTest.groovy

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,11 @@ class AssetInputEntityFactoryTest extends Specification implements FactoryTestHe
289289
"0: [id, uuid] or [id, uuid]\n" +
290290
"1: [id, operatesFrom, uuid] or [id, operates_from, uuid]\n" +
291291
"2: [id, operatesUntil, uuid] or [id, operates_until, uuid]\n" +
292-
"3: [id, operatesFrom, operatesUntil, uuid] or [id, operates_from, operates_until, uuid]\n"
292+
"3: [id, operatesFrom, operatesUntil, uuid] or [id, operates_from, operates_until, uuid]\n" +
293+
"4: [id, operator, uuid] or [id, operator, uuid]\n" +
294+
"5: [id, operatesFrom, operator, uuid] or [id, operates_from, operator, uuid]\n" +
295+
"6: [id, operatesUntil, operator, uuid] or [id, operates_until, operator, uuid]\n" +
296+
"7: [id, operatesFrom, operatesUntil, operator, uuid] or [id, operates_from, operates_until, operator, uuid]\n"
293297
}
294298
295299
private static class TestAssetInput extends AssetInput {

src/test/groovy/edu/ie3/datamodel/io/factory/input/EmInputFactoryTest.groovy

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import edu.ie3.datamodel.utils.Try
1212
import spock.lang.Specification
1313

1414
import java.time.ZonedDateTime
15+
import java.util.stream.Collectors
1516

1617
class EmInputFactoryTest extends Specification {
1718

@@ -24,6 +25,79 @@ class EmInputFactoryTest extends Specification {
2425
inputFactory.supportedClasses == expectedClasses
2526
}
2627

28+
def "An EmInputFactory should return the valid fields correctly"() {
29+
given:
30+
def inputFactory = new EmInputFactory()
31+
def validCombinations = [
32+
[
33+
"uuid",
34+
"id",
35+
"controlStrategy",
36+
"controllingEm"
37+
],
38+
[
39+
"uuid",
40+
"id",
41+
"controlStrategy",
42+
"controllingEm",
43+
"operatesFrom"
44+
],
45+
[
46+
"uuid",
47+
"id",
48+
"controlStrategy",
49+
"controllingEm",
50+
"operatesUntil"
51+
],
52+
[
53+
"uuid",
54+
"id",
55+
"controlStrategy",
56+
"controllingEm",
57+
"operatesFrom",
58+
"operatesUntil"
59+
],
60+
[
61+
"uuid",
62+
"id",
63+
"controlStrategy",
64+
"controllingEm",
65+
"operator"
66+
],
67+
[
68+
"uuid",
69+
"id",
70+
"controlStrategy",
71+
"controllingEm",
72+
"operator",
73+
"operatesFrom"
74+
],
75+
[
76+
"uuid",
77+
"id",
78+
"controlStrategy",
79+
"controllingEm",
80+
"operator",
81+
"operatesUntil"
82+
],
83+
[
84+
"uuid",
85+
"id",
86+
"controlStrategy",
87+
"controllingEm",
88+
"operator",
89+
"operatesFrom",
90+
"operatesUntil"
91+
]
92+
].collect { it as Set }
93+
94+
when:
95+
def fieldCombinations = inputFactory.getFields(EmInput)
96+
97+
then:
98+
fieldCombinations == validCombinations
99+
}
100+
27101
def "A EmInputFactory should parse a valid EmInput with parent EM correctly"() {
28102
given:
29103
def inputFactory = new EmInputFactory()

src/test/groovy/edu/ie3/datamodel/io/factory/input/participant/FixedFeedInInputFactoryTest.groovy

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,17 @@ class FixedFeedInInputFactoryTest extends Specification implements FactoryTestHe
9292
"1: [cosPhiRated, id, operatesFrom, qCharacteristics, sRated, uuid] or [cos_phi_rated, id, operates_from, q_characteristics, s_rated, uuid]\n" +
9393
"2: [cosPhiRated, id, operatesUntil, qCharacteristics, sRated, uuid] or [cos_phi_rated, id, operates_until, q_characteristics, s_rated, uuid]\n" +
9494
"3: [cosPhiRated, id, operatesFrom, operatesUntil, qCharacteristics, sRated, uuid] or [cos_phi_rated, id, operates_from, operates_until, q_characteristics, s_rated, uuid]\n" +
95-
"4: [controllingEm, cosPhiRated, id, qCharacteristics, sRated, uuid] or [controlling_em, cos_phi_rated, id, q_characteristics, s_rated, uuid]\n" +
96-
"5: [controllingEm, cosPhiRated, id, operatesFrom, qCharacteristics, sRated, uuid] or [controlling_em, cos_phi_rated, id, operates_from, q_characteristics, s_rated, uuid]\n" +
97-
"6: [controllingEm, cosPhiRated, id, operatesUntil, qCharacteristics, sRated, uuid] or [controlling_em, cos_phi_rated, id, operates_until, q_characteristics, s_rated, uuid]\n" +
98-
"7: [controllingEm, cosPhiRated, id, operatesFrom, operatesUntil, qCharacteristics, sRated, uuid] or [controlling_em, cos_phi_rated, id, operates_from, operates_until, q_characteristics, s_rated, uuid]\n"
95+
"4: [cosPhiRated, id, operator, qCharacteristics, sRated, uuid] or [cos_phi_rated, id, operator, q_characteristics, s_rated, uuid]\n" +
96+
"5: [cosPhiRated, id, operatesFrom, operator, qCharacteristics, sRated, uuid] or [cos_phi_rated, id, operates_from, operator, q_characteristics, s_rated, uuid]\n" +
97+
"6: [cosPhiRated, id, operatesUntil, operator, qCharacteristics, sRated, uuid] or [cos_phi_rated, id, operates_until, operator, q_characteristics, s_rated, uuid]\n" +
98+
"7: [cosPhiRated, id, operatesFrom, operatesUntil, operator, qCharacteristics, sRated, uuid] or [cos_phi_rated, id, operates_from, operates_until, operator, q_characteristics, s_rated, uuid]\n" +
99+
"8: [controllingEm, cosPhiRated, id, qCharacteristics, sRated, uuid] or [controlling_em, cos_phi_rated, id, q_characteristics, s_rated, uuid]\n" +
100+
"9: [controllingEm, cosPhiRated, id, operatesFrom, qCharacteristics, sRated, uuid] or [controlling_em, cos_phi_rated, id, operates_from, q_characteristics, s_rated, uuid]\n" +
101+
"10: [controllingEm, cosPhiRated, id, operatesUntil, qCharacteristics, sRated, uuid] or [controlling_em, cos_phi_rated, id, operates_until, q_characteristics, s_rated, uuid]\n" +
102+
"11: [controllingEm, cosPhiRated, id, operatesFrom, operatesUntil, qCharacteristics, sRated, uuid] or [controlling_em, cos_phi_rated, id, operates_from, operates_until, q_characteristics, s_rated, uuid]\n" +
103+
"12: [controllingEm, cosPhiRated, id, operator, qCharacteristics, sRated, uuid] or [controlling_em, cos_phi_rated, id, operator, q_characteristics, s_rated, uuid]\n" +
104+
"13: [controllingEm, cosPhiRated, id, operatesFrom, operator, qCharacteristics, sRated, uuid] or [controlling_em, cos_phi_rated, id, operates_from, operator, q_characteristics, s_rated, uuid]\n" +
105+
"14: [controllingEm, cosPhiRated, id, operatesUntil, operator, qCharacteristics, sRated, uuid] or [controlling_em, cos_phi_rated, id, operates_until, operator, q_characteristics, s_rated, uuid]\n" +
106+
"15: [controllingEm, cosPhiRated, id, operatesFrom, operatesUntil, operator, qCharacteristics, sRated, uuid] or [controlling_em, cos_phi_rated, id, operates_from, operates_until, operator, q_characteristics, s_rated, uuid]\n"
99107
}
100108
}

0 commit comments

Comments
 (0)