Skip to content

Commit 0d76544

Browse files
committed
feat(#341): COmpas Services creation
- DataSetService - DoService - DoTypeService - ExtRefReaderService - IedService - LdeviceService - LnService - LnodeTypeService - rename LdeviceStatus into ActiveStatus Signed-off-by: gleizesDor <[email protected]>
1 parent 7a7f543 commit 0d76544

File tree

79 files changed

+2670
-793
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

79 files changed

+2670
-793
lines changed

pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@
134134
<configuration>
135135
<source>${java.version}</source>
136136
<target>${java.version}</target>
137+
<compilerArgs>--enable-preview</compilerArgs>
137138
</configuration>
138139
</plugin>
139140
<plugin>
@@ -145,6 +146,11 @@
145146
<groupId>org.apache.maven.plugins</groupId>
146147
<artifactId>maven-surefire-plugin</artifactId>
147148
<version>2.22.2</version>
149+
<configuration>
150+
<!--keep the existing values using @{argLine} syntax-->
151+
<!-- https://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html#argLine -->
152+
<argLine>@{argLine} --enable-preview</argLine>
153+
</configuration>
148154
</plugin>
149155
<plugin>
150156
<groupId>org.apache.maven.plugins</groupId>

sct-app/src/test/java/org.lfenergy.compas.sct.app/SclAutomationServiceIntegrationTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import org.lfenergy.compas.sct.commons.exception.ScdException;
1919
import org.lfenergy.compas.sct.commons.scl.SclElementAdapter;
2020
import org.lfenergy.compas.sct.commons.scl.SclRootAdapter;
21-
import org.lfenergy.compas.sct.commons.scl.ied.LDeviceAdapter;
21+
import org.lfenergy.compas.sct.commons.scl.ldevice.LDeviceAdapter;
2222
import org.lfenergy.compas.sct.commons.testhelpers.SclTestMarshaller;
2323

2424
import java.util.Arrays;

sct-commons/src/main/java/org/lfenergy/compas/sct/commons/ControlBlockService.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,23 @@
55
package org.lfenergy.compas.sct.commons;
66

77
import org.apache.commons.lang3.StringUtils;
8-
import org.lfenergy.compas.scl2007b4.model.*;
8+
import org.lfenergy.compas.scl2007b4.model.SCL;
99
import org.lfenergy.compas.sct.commons.api.ControlBlockEditor;
10-
import org.lfenergy.compas.sct.commons.dto.*;
10+
import org.lfenergy.compas.sct.commons.dto.ControlBlockNetworkSettings;
1111
import org.lfenergy.compas.sct.commons.dto.ControlBlockNetworkSettings.NetworkRanges;
1212
import org.lfenergy.compas.sct.commons.dto.ControlBlockNetworkSettings.RangesPerCbType;
1313
import org.lfenergy.compas.sct.commons.dto.ControlBlockNetworkSettings.Settings;
1414
import org.lfenergy.compas.sct.commons.dto.ControlBlockNetworkSettings.SettingsOrError;
15+
import org.lfenergy.compas.sct.commons.dto.FcdaForDataSetsCreation;
16+
import org.lfenergy.compas.sct.commons.dto.SclReportItem;
1517
import org.lfenergy.compas.sct.commons.exception.ScdException;
1618
import org.lfenergy.compas.sct.commons.scl.SclRootAdapter;
17-
import org.lfenergy.compas.sct.commons.scl.ied.*;
18-
import org.lfenergy.compas.sct.commons.util.*;
19+
import org.lfenergy.compas.sct.commons.scl.ied.ControlBlockAdapter;
20+
import org.lfenergy.compas.sct.commons.scl.ied.IEDAdapter;
21+
import org.lfenergy.compas.sct.commons.scl.ldevice.LDeviceAdapter;
22+
import org.lfenergy.compas.sct.commons.scl.ln.LNAdapter;
23+
import org.lfenergy.compas.sct.commons.util.ControlBlockEnum;
24+
import org.lfenergy.compas.sct.commons.util.Utils;
1925

2026
import java.util.*;
2127
import java.util.stream.Stream;
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// SPDX-FileCopyrightText: 2022 2023 RTE FRANCE
2+
//
3+
// SPDX-License-Identifier: Apache-2.0
4+
5+
package org.lfenergy.compas.sct.commons;
6+
7+
import org.lfenergy.compas.scl2007b4.model.LN0;
8+
import org.lfenergy.compas.scl2007b4.model.TAnyLN;
9+
import org.lfenergy.compas.scl2007b4.model.TDataSet;
10+
import org.lfenergy.compas.scl2007b4.model.TLN;
11+
12+
import java.util.Optional;
13+
import java.util.function.Predicate;
14+
import java.util.stream.Stream;
15+
16+
public class DataSetService {
17+
18+
public Stream<TDataSet> getDataSets(TAnyLN tAnyLN) {
19+
return switch (tAnyLN) {
20+
case LN0 ln0 -> ln0.isSetDataSet() ? ln0.getDataSet().stream() : Stream.empty();
21+
case TLN tln -> tln.isSetDataSet() ? tln.getDataSet().stream() : Stream.empty();
22+
default -> throw new IllegalStateException("Unexpected value: " + tAnyLN);
23+
};
24+
}
25+
26+
public Stream<TDataSet> getFilteredDataSets(TAnyLN tAnyLN, Predicate<TDataSet> dataSetPredicate) {
27+
return getDataSets(tAnyLN).filter(dataSetPredicate);
28+
}
29+
30+
public Optional<TDataSet> findDataSet(TAnyLN tAnyLN, Predicate<TDataSet> dataSetPredicate) {
31+
return getFilteredDataSets(tAnyLN, dataSetPredicate).findFirst();
32+
}
33+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// SPDX-FileCopyrightText: 2023 RTE FRANCE
2+
//
3+
// SPDX-License-Identifier: Apache-2.0
4+
5+
package org.lfenergy.compas.sct.commons;
6+
7+
import org.lfenergy.compas.scl2007b4.model.TDO;
8+
import org.lfenergy.compas.scl2007b4.model.TLNodeType;
9+
10+
import java.util.Optional;
11+
import java.util.function.Predicate;
12+
import java.util.stream.Stream;
13+
14+
public class DoService {
15+
16+
public Stream<TDO> getDos(TLNodeType tlNodeType) {
17+
return tlNodeType.getDO().stream();
18+
}
19+
20+
public Stream<TDO> getFilteredDos(TLNodeType tlNodeType, Predicate<TDO> tdoPredicate) {
21+
return getDos(tlNodeType).filter(tdoPredicate);
22+
}
23+
24+
public Optional<TDO> findDo(TLNodeType tlNodeType, Predicate<TDO> tdoPredicate) {
25+
return getFilteredDos(tlNodeType, tdoPredicate).findFirst();
26+
}
27+
28+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// SPDX-FileCopyrightText: 2023 RTE FRANCE
2+
//
3+
// SPDX-License-Identifier: Apache-2.0
4+
5+
package org.lfenergy.compas.sct.commons;
6+
7+
import org.lfenergy.compas.scl2007b4.model.TDataTypeTemplates;
8+
import org.lfenergy.compas.scl2007b4.model.TDOType;
9+
10+
import java.util.Optional;
11+
import java.util.function.Predicate;
12+
import java.util.stream.Stream;
13+
14+
public class DoTypeService {
15+
16+
public Stream<TDOType> getDoTypes(TDataTypeTemplates tDataTypeTemplates) {
17+
return tDataTypeTemplates.getDOType().stream();
18+
}
19+
20+
public Stream<TDOType> getFilteredDoTypes(TDataTypeTemplates tDataTypeTemplates, Predicate<TDOType> tdoTypePredicate) {
21+
return getDoTypes(tDataTypeTemplates).filter(tdoTypePredicate);
22+
}
23+
24+
public Optional<TDOType> findDoType(TDataTypeTemplates tDataTypeTemplates, Predicate<TDOType> tdoTypePredicate) {
25+
return getFilteredDoTypes(tDataTypeTemplates, tdoTypePredicate).findFirst();
26+
}
27+
28+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
// SPDX-FileCopyrightText: 2022 2023 RTE FRANCE
2+
//
3+
// SPDX-License-Identifier: Apache-2.0
4+
5+
package org.lfenergy.compas.sct.commons;
6+
7+
import org.lfenergy.compas.scl2007b4.model.LN0;
8+
import org.lfenergy.compas.scl2007b4.model.TAnyLN;
9+
import org.lfenergy.compas.scl2007b4.model.TExtRef;
10+
import org.lfenergy.compas.scl2007b4.model.TLN;
11+
import org.lfenergy.compas.sct.commons.api.ExtRefReader;
12+
13+
import java.util.stream.Stream;
14+
15+
public class ExtRefReaderService implements ExtRefReader {
16+
17+
public Stream<TExtRef> getExtRefs(TAnyLN tAnyLN) {
18+
return switch (tAnyLN) {
19+
case LN0 ln0 -> ln0.isSetInputs() ? ln0.getInputs().getExtRef().stream() : Stream.empty();
20+
case TLN tln -> tln.isSetInputs() ? tln.getInputs().getExtRef().stream() : Stream.empty();
21+
default -> throw new IllegalStateException("Unexpected value: " + tAnyLN);
22+
};
23+
}
24+
}

sct-commons/src/main/java/org/lfenergy/compas/sct/commons/ExtRefService.java

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,27 @@
88
import org.lfenergy.compas.sct.commons.api.ExtRefEditor;
99
import org.lfenergy.compas.sct.commons.dto.*;
1010
import org.lfenergy.compas.sct.commons.exception.ScdException;
11-
import org.lfenergy.compas.sct.commons.model.epf.*;
11+
import org.lfenergy.compas.sct.commons.model.epf.EPF;
12+
import org.lfenergy.compas.sct.commons.model.epf.TCBscopeType;
13+
import org.lfenergy.compas.sct.commons.model.epf.TChannel;
14+
import org.lfenergy.compas.sct.commons.model.epf.TChannelType;
1215
import org.lfenergy.compas.sct.commons.scl.SclRootAdapter;
13-
import org.lfenergy.compas.sct.commons.scl.ied.*;
14-
import org.lfenergy.compas.sct.commons.util.*;
16+
import org.lfenergy.compas.sct.commons.scl.ied.IEDAdapter;
17+
import org.lfenergy.compas.sct.commons.scl.ldevice.LDeviceAdapter;
18+
import org.lfenergy.compas.sct.commons.scl.ln.AbstractLNAdapter;
19+
import org.lfenergy.compas.sct.commons.scl.ln.LN0Adapter;
20+
import org.lfenergy.compas.sct.commons.util.ActiveStatus;
21+
import org.lfenergy.compas.sct.commons.util.PrivateEnum;
22+
import org.lfenergy.compas.sct.commons.util.PrivateUtils;
23+
import org.lfenergy.compas.sct.commons.util.Utils;
1524

1625
import java.util.*;
1726
import java.util.function.Function;
1827
import java.util.stream.Collectors;
1928

2029
import static org.apache.commons.lang3.StringUtils.*;
2130
import static org.lfenergy.compas.sct.commons.util.CommonConstants.*;
22-
import static org.lfenergy.compas.sct.commons.util.Utils.*;
31+
import static org.lfenergy.compas.sct.commons.util.Utils.isExtRefFeedBySameControlBlock;
2332

2433
public class ExtRefService implements ExtRefEditor {
2534
private static final String INVALID_OR_MISSING_ATTRIBUTES_IN_EXT_REF_BINDING_INFO = "Invalid or missing attributes in ExtRef binding info";
@@ -217,7 +226,9 @@ private static List<TIED> getIedSources(SclRootAdapter sclRootAdapter, TCompasBa
217226
.map(lnAdapter -> isValidDataTypeTemplate(lnAdapter, channel))
218227
.orElse(false))
219228
.orElse(false))
220-
.map(IEDAdapter::getCurrentElem).limit(2).toList();
229+
.map(IEDAdapter::getCurrentElem)
230+
.limit(2)
231+
.toList();
221232
}
222233

223234
/**
@@ -259,10 +270,10 @@ private static boolean doesIcdHeaderMatchLDEPFChannel(IEDAdapter iedAdapter, TCh
259270
* @return LDeviceAdapter object that matches the EPF channel
260271
*/
261272
private static Optional<LDeviceAdapter> getActiveSourceLDeviceByLDEPFChannel(IEDAdapter iedAdapter, TChannel channel) {
262-
return iedAdapter.findLDeviceAdapterByLdInst(channel.getLDInst())
263-
.filter(lDeviceAdapter -> new Ldevice(lDeviceAdapter.getCurrentElem()).getLdeviceStatus()
264-
.map(status -> status.equals(LdeviceStatus.ON))
265-
.orElse(false));
273+
LdeviceService ldeviceService = new LdeviceService();
274+
return ldeviceService.findLdevice(iedAdapter.getCurrentElem(), tlDevice -> tlDevice.getInst().equals(channel.getLDInst()))
275+
.filter(tlDevice -> ldeviceService.getLdeviceStatus(tlDevice).map(ActiveStatus.ON::equals).orElse(false))
276+
.map(tlDevice -> new LDeviceAdapter(iedAdapter, tlDevice));
266277
}
267278

268279
/**
@@ -272,13 +283,14 @@ private static Optional<LDeviceAdapter> getActiveSourceLDeviceByLDEPFChannel(IED
272283
* @return AbstractLNAdapter object that matches the EPF channel
273284
*/
274285
private static Optional<AbstractLNAdapter<?>> getActiveLNSourceByLDEPFChannel(LDeviceAdapter lDeviceAdapter, TChannel channel) {
275-
return lDeviceAdapter.getLNAdaptersIncludingLN0().stream()
286+
return lDeviceAdapter.getLNAdaptersIncludingLN0()
287+
.stream()
276288
.filter(lnAdapter -> lnAdapter.getLNClass().equals(channel.getLNClass())
277289
&& lnAdapter.getLNInst().equals(channel.getLNInst())
278290
&& trimToEmpty(channel.getLNPrefix()).equals(trimToEmpty(lnAdapter.getPrefix())))
279291
.findFirst()
280292
.filter(lnAdapter -> lnAdapter.getDaiModStValValue()
281-
.map(status -> status.equals(LdeviceStatus.ON.getValue()))
293+
.map(status -> status.equals(ActiveStatus.ON.getValue()))
282294
.orElse(true));
283295
}
284296

@@ -308,7 +320,7 @@ private static boolean isValidDataTypeTemplate(AbstractLNAdapter<?> lnAdapter, T
308320
return lnAdapter.getDataTypeTemplateAdapter().getLNodeTypeAdapterById(lnAdapter.getLnType())
309321
.filter(lNodeTypeAdapter -> {
310322
try {
311-
lNodeTypeAdapter.check(doTypeName, daTypeName);
323+
lNodeTypeAdapter.checkDoAndDaTypeName(doTypeName, daTypeName);
312324
} catch (ScdException ex) {
313325
return false;
314326
}
@@ -358,7 +370,7 @@ private Optional<SclReportItem> updateVal(AbstractLNAdapter<?> lnAdapter, String
358370
case DU_DA_NAME -> setting.getChannelShortLabel();
359371
case SETVAL_DA_NAME ->
360372
LN_PREFIX_B.equals(lnAdapter.getPrefix()) || LN_PREFIX_A.equals(lnAdapter.getPrefix()) ? setting.getChannelLevModQ().value() : setting.getChannelLevMod().value();
361-
case STVAL_DA_NAME -> LdeviceStatus.ON.getValue();
373+
case STVAL_DA_NAME -> ActiveStatus.ON.getValue();
362374
case SETSRCREF_DA_NAME -> computeDaiValue(lnAdapter, extRef, setting.getDAName());
363375
default -> null;
364376
};
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// SPDX-FileCopyrightText: 2023 RTE FRANCE
2+
//
3+
// SPDX-License-Identifier: Apache-2.0
4+
5+
package org.lfenergy.compas.sct.commons;
6+
7+
import org.lfenergy.compas.scl2007b4.model.SCL;
8+
import org.lfenergy.compas.scl2007b4.model.TIED;
9+
10+
import java.util.Optional;
11+
import java.util.function.Predicate;
12+
import java.util.stream.Stream;
13+
14+
public class IedService {
15+
16+
public Stream<TIED> getFilteredIeds(SCL scd, Predicate<TIED> iedPredicate) {
17+
return scd.getIED().stream().filter(iedPredicate);
18+
}
19+
20+
public Optional<TIED> findIed(SCL scd, Predicate<TIED> iedPredicate) {
21+
return getFilteredIeds(scd, iedPredicate).findFirst();
22+
}
23+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
// SPDX-FileCopyrightText: 2023 RTE FRANCE
2+
//
3+
// SPDX-License-Identifier: Apache-2.0
4+
5+
package org.lfenergy.compas.sct.commons;
6+
7+
import org.lfenergy.compas.scl2007b4.model.*;
8+
import org.lfenergy.compas.sct.commons.util.ActiveStatus;
9+
10+
import java.util.Objects;
11+
import java.util.Optional;
12+
import java.util.function.Predicate;
13+
import java.util.stream.Stream;
14+
15+
public class LdeviceService {
16+
17+
public Stream<TLDevice> getLdevices(TIED tied) {
18+
if (!tied.isSetAccessPoint()) {
19+
return Stream.empty();
20+
}
21+
return tied.getAccessPoint()
22+
.stream()
23+
.map(TAccessPoint::getServer)
24+
.filter(Objects::nonNull)
25+
.filter(TServer::isSetLDevice)
26+
.flatMap(tServer -> tServer.getLDevice().stream());
27+
}
28+
29+
public Stream<TLDevice> getActiveLdevices(TIED tied) {
30+
return getLdevices(tied)
31+
.filter(ldevice -> getLdeviceStatus(ldevice).map(ActiveStatus.ON::equals).orElse(false));
32+
}
33+
34+
public Stream<TLDevice> getFilteredLdevices(TIED tied, Predicate<TLDevice> ldevicePredicate) {
35+
return getLdevices(tied).filter(ldevicePredicate);
36+
}
37+
38+
public Optional<TLDevice> findLdevice(TIED tied, Predicate<TLDevice> ldevicePredicate) {
39+
return getFilteredLdevices(tied, ldevicePredicate).findFirst();
40+
}
41+
42+
public Optional<ActiveStatus> getLdeviceStatus(TLDevice tlDevice) {
43+
LnService lnService = new LnService();
44+
return lnService.getDaiModStval(tlDevice.getLN0());
45+
}
46+
}

0 commit comments

Comments
 (0)