Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -249,8 +249,11 @@ public String generateGroovyScriptFromFilters(AbstractFilter filter) {
if (!CollectionUtils.isEmpty(hvdcLineFilter.getCountries2())) {
template.add(COUNTRIES + "2", hvdcLineFilter.getCountries2().stream().collect(joining("','", "['", "']")));
}
if (hvdcLineFilter.getNominalVoltage() != null) {
addFilterNominalVoltage(template, hvdcLineFilter.getNominalVoltage(), null);
if (hvdcLineFilter.getNominalVoltage1() != null) {
addFilterNominalVoltage(template, hvdcLineFilter.getNominalVoltage1(), "1");
}
if (hvdcLineFilter.getNominalVoltage2() != null) {
addFilterNominalVoltage(template, hvdcLineFilter.getNominalVoltage2(), "2");
}
if (!StringUtils.isEmpty(hvdcLineFilter.getSubstationName1())) {
template.add(SUBSTATION_NAME + "1", hvdcLineFilter.getSubstationName1());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ public AbstractFilter toDto(HvdcLineFilterEntity entity) {
.countries2(AbstractFilterRepositoryProxy.cloneIfNotEmptyOrNull(entity.getCountries2()))
.substationName1(entity.getSubstationName1())
.substationName2(entity.getSubstationName2())
.nominalVoltage(AbstractFilterRepositoryProxy.convert(entity.getNominalVoltage())),
.nominalVoltage1(AbstractFilterRepositoryProxy.convert(entity.getNominalVoltage1()))
.nominalVoltage2(AbstractFilterRepositoryProxy.convert(entity.getNominalVoltage2())),
entity).build();
}

Expand All @@ -57,7 +58,8 @@ public HvdcLineFilterEntity fromDto(AbstractFilter dto) {
.substationName2(hvdcLineFilter.getSubstationName2())
.countries1(AbstractFilterRepositoryProxy.cloneIfNotEmptyOrNull(hvdcLineFilter.getCountries1()))
.countries2(AbstractFilterRepositoryProxy.cloneIfNotEmptyOrNull(hvdcLineFilter.getCountries2()))
.nominalVoltage(AbstractFilterRepositoryProxy.convert(hvdcLineFilter.getNominalVoltage()));
.nominalVoltage1(AbstractFilterRepositoryProxy.convert(hvdcLineFilter.getNominalVoltage1()))
.nominalVoltage2(AbstractFilterRepositoryProxy.convert(hvdcLineFilter.getNominalVoltage2()));
buildGenericFilter(hvdcLineFilterEntityBuilder, hvdcLineFilter);
return hvdcLineFilterEntityBuilder.build();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,11 @@ public FilterType getType() {
@Schema(description = "Countries2")
private Set<String> countries2;

@Schema(description = "Nominal voltage")
private NumericalFilter nominalVoltage;
@Schema(description = "Nominal voltage 1")
private NumericalFilter nominalVoltage1;

@Schema(description = "Nominal voltage 2")
private NumericalFilter nominalVoltage2;

@Override
public boolean isEmpty() {
Expand All @@ -50,6 +53,7 @@ public boolean isEmpty() {
&& substationName2 == null
&& CollectionUtils.isEmpty(countries1)
&& CollectionUtils.isEmpty(countries2)
&& nominalVoltage == null;
&& nominalVoltage1 == null
&& nominalVoltage2 == null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,18 @@ public class HvdcLineFilterEntity extends AbstractGenericFilterEntity {
String substationName2;

@OneToOne(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
@JoinColumn(name = "numericFilterId_id",
@JoinColumn(name = "numericFilterId1_id",
referencedColumnName = "id",
foreignKey = @ForeignKey(
name = "numericFilterId_id_fk"
name = "numericFilterId_id_fk1"
), nullable = true)
NumericFilterEntity nominalVoltage;
NumericFilterEntity nominalVoltage1;

@OneToOne(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
@JoinColumn(name = "numericFilterId2_id",
referencedColumnName = "id",
foreignKey = @ForeignKey(
name = "numericFilterId_id_fk2"
), nullable = true)
NumericFilterEntity nominalVoltage2;
}
12 changes: 9 additions & 3 deletions src/main/resources/filter.sql
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,8 @@
equipmentName varchar(255),
substationName1 varchar(255),
substationName2 varchar(255),
numericFilterId_id uuid,
numericFilterId1_id uuid,
numericFilterId2_id uuid,
primary key (id)
);

Expand Down Expand Up @@ -314,8 +315,13 @@ create index twoWindingsTransformerFilterEntity_countries_idx on TwoWindingsTran
references generator_filter;

alter table if exists hvdc_line_filter
add constraint numericFilterId_id_fk
foreign key (numericFilterId_id)
add constraint numericFilterId_id_fk1
foreign key (numericFilterId1_id)
references numericFilter;

alter table if exists hvdc_line_filter
add constraint numericFilterId_id_fk2
foreign key (numericFilterId2_id)
references numericFilter;

alter table if exists HvdcLineFilterEntity_countries1
Expand Down
16 changes: 10 additions & 6 deletions src/main/resources/hvdcLine.st
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,17 @@ for (equipment in network.<collectionName>) {
<if(countries1)>FiltersUtils.isLocatedIn(<countries1>, equipment.converterStation1.terminal)<endif>
<if((equipmentId || equipmentName || countries1) && countries2)>&& <endif><\\>
<if(countries2)>FiltersUtils.isLocatedIn(<countries2>, equipment.converterStation2.terminal)<endif>
<if((equipmentId || equipmentName || countries1 || countries2) && nominalVType)>&& <endif><\\>
<if(nominalVEquality)>FiltersUtils.isEqualityNominalVoltage(equipment.nominalVoltage, <nominalV>)<endif><\\>
<if(nominalVRange)>FiltersUtils.isRangeNominalVoltage(equipment.nominalVoltage, <minNominalV>, <maxNominalV>)<endif><\\>
<if(nominalVApprox)>FiltersUtils.isApproxNominalVoltage(equipment.nominalVoltage, <nominalV>, <percentNominalV>)<endif>
<if((equipmentId || equipmentName || countries1 || countries2 || nominalVType) && substationName1)>&& <endif><\\>
<if((equipmentId || equipmentName || countries1 || countries2) && nominalV1Type)>&& <endif><\\>
<if(nominalV1Equality)>FiltersUtils.isEqualityNominalVoltage(equipment.converterStation1.terminal, <nominalV1>)<endif><\\>
<if(nominalV1Range)>FiltersUtils.isRangeNominalVoltage(equipment.converterStation1.terminal, <minNominalV1>, <maxNominalV1>)<endif><\\>
<if(nominalV1Approx)>FiltersUtils.isApproxNominalVoltage(equipment.converterStation1.terminal, <nominalV1>, <percentNominalV1>)<endif>
<if((equipmentId || equipmentName || countries1 || countries2 || nominalV1Type) && nominalV2Type)>&& <endif><\\>
<if(nominalV2Equality)>FiltersUtils.isEqualityNominalVoltage(equipment.converterStation2.terminal, <nominalV2>)<endif><\\>
<if(nominalV2Range)>FiltersUtils.isRangeNominalVoltage(equipment.converterStation2.terminal, <minNominalV2>, <maxNominalV2>)<endif><\\>
<if(nominalV2Approx)>FiltersUtils.isApproxNominalVoltage(equipment.converterStation2.terminal, <nominalV2>, <percentNominalV2>)<endif>
<if((equipmentId || equipmentName || countries1 || countries2 || nominalV1Type || nominalV2Type) && substationName1)>&& <endif><\\>
<if(substationName1)>equipment.converterStation1.terminal.voltageLevel.substation.name.equals('<substationName1>')<endif>
<if((equipmentId || equipmentName || countries1 || countries2 || nominalVType) && substationName2)>&& <endif><\\>
<if((equipmentId || equipmentName || countries1 || countries2 || nominalV1Type|| nominalV2Type) && substationName2)>&& <endif><\\>
<if(substationName2)>equipment.converterStation2.terminal.voltageLevel.substation.name.equals('<substationName2>')<endif>
<if(noEmptyFilter)>) {<endif>
filter(equipment.id) { equipments equipment.id }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -283,8 +283,18 @@ public void testVscConverterStationFilter() throws Exception {

@Test
public void testHvdcLineFilter() throws Exception {
List<RangeType> rangeTypes = new ArrayList<>();
rangeTypes.add(RangeType.EQUALITY);
rangeTypes.add(RangeType.APPROX);
List<Double> values1 = new ArrayList<>();
values1.add(225.);
values1.add(380.);
List<Double> values2 = new ArrayList<>();
values2.add(null);
values2.add(5.);

insertHvdcLineFilter(FilterType.HVDC_LINE, "testHvdcLine", UUID.fromString("77614d91-c168-4f89-8fb9-77a23729e88e"),
"hvdcId1", "hvdcName1", "s1", "s2", "descr hvdc", Set.of("FR"), Set.of("UK"), RangeType.EQUALITY, 380., null);
"hvdcId1", "hvdcName1", "s1", "s2", "descr hvdc", Set.of("FR"), Set.of("UK"), rangeTypes, values1, values2);
}

@Test
Expand Down Expand Up @@ -536,7 +546,7 @@ private void insertTransformerFilter(FilterType type, String name, UUID id, Stri

private void insertHvdcLineFilter(FilterType type, String name, UUID id, String equipmentID, String equipmentName,
String substationName1, String substationName2, String description, Set<String> countries1,
Set<String> countries2, RangeType rangeType, Double value1, Double value2) throws Exception {
Set<String> countries2, List<RangeType> rangeTypes, List<Double> values1, List<Double> values2) throws Exception {
String filter = "{" + joinWithComma(
jsonVal("name", name),
jsonVal("id", id.toString()),
Expand All @@ -557,8 +567,10 @@ private void insertHvdcLineFilter(FilterType type, String name, UUID id, String
if (description != null) {
filter += ", " + jsonVal("description", description);
}
if (rangeType != null) {
filter += ", " + numericalRange("nominalVoltage", rangeType, value1, value2);
if (rangeTypes != null) {
for (int i = 0; i < rangeTypes.size(); ++i) {
filter += ", " + numericalRange("nominalVoltage" + (i + 1), rangeTypes.get(i), values1.get(i), values2.get(i));
}
}
if (countries1 != null) {
filter += ", " + jsonSet("countries1", countries1);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -410,7 +410,8 @@ public void generateScriptHvdcLineFilterTest() {
" (FiltersUtils.matchID('hvdcId1', equipment) || FiltersUtils.matchName('hvdcName1', equipment))\n" +
" && FiltersUtils.isLocatedIn(['FR'], equipment.converterStation1.terminal)\n" +
" && FiltersUtils.isLocatedIn(['IT'], equipment.converterStation2.terminal)\n" +
" && FiltersUtils.isRangeNominalVoltage(equipment.nominalVoltage, 200.0, 400.0)\n" +
" && FiltersUtils.isRangeNominalVoltage(equipment.converterStation1.terminal, 200.0, 400.0)\n" +
" && FiltersUtils.isApproxNominalVoltage(equipment.converterStation2.terminal, 380.0, 3.0)\n" +
" && equipment.converterStation1.terminal.voltageLevel.substation.name.equals('s1')\n" +
" && equipment.converterStation2.terminal.voltageLevel.substation.name.equals('s2')\n" +
" ) {\n" +
Expand All @@ -425,7 +426,8 @@ public void generateScriptHvdcLineFilterTest() {
.substationName2("s2")
.countries1(countries1)
.countries2(countries2)
.nominalVoltage(NumericalFilter.builder().type(RangeType.RANGE).value1(200.).value2(400.).build())
.nominalVoltage1(NumericalFilter.builder().type(RangeType.RANGE).value1(200.).value2(400.).build())
.nominalVoltage2(NumericalFilter.builder().type(RangeType.APPROX).value1(380.).value2(3.).build())
.build()));
}
}