Skip to content

Commit 82dff1c

Browse files
Merge pull request #489 from com-pas/develop
Release 0.2.39
2 parents ed853ab + 546b8c1 commit 82dff1c

28 files changed

+616
-427
lines changed

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

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import org.lfenergy.compas.scl2007b4.model.SCL;
1111
import org.lfenergy.compas.sct.commons.*;
1212
import org.lfenergy.compas.sct.commons.api.ControlBlockEditor;
13+
import org.lfenergy.compas.sct.commons.api.DataTypeTemplateReader;
1314
import org.lfenergy.compas.sct.commons.api.SclEditor;
1415
import org.lfenergy.compas.sct.commons.api.SubstationEditor;
1516
import org.lfenergy.compas.sct.commons.dto.HeaderDTO;
@@ -29,9 +30,14 @@
2930

3031
class SclAutomationServiceIntegrationTest {
3132

32-
private SclAutomationService sclAutomationService ;
33-
private static final SclEditor sclEditor = new SclService() ;
34-
private static final SubstationEditor substationEditor = new SubstationService(new VoltageLevelService()) ;
33+
private SclAutomationService sclAutomationService;
34+
private static final IedService iedService = new IedService();
35+
private static final LnService lnService = new LnService();
36+
private static final ExtRefReaderService extRefReaderService = new ExtRefReaderService();
37+
private static final DataTypeTemplateReader dataTypeTemplatesService = new DataTypeTemplatesService() ;
38+
private static final LdeviceService ldeviceService = new LdeviceService(lnService);
39+
private static final SclEditor sclEditor = new SclService(iedService, ldeviceService, lnService, extRefReaderService, dataTypeTemplatesService) ;
40+
private static final SubstationEditor substationEditor = new SubstationService(new VoltageLevelService());
3541
private static final ControlBlockEditor controlBlockEditor = new ControlBlockEditorService(new ControlService(), new LdeviceService(new LnService()), new ConnectedAPService(), new SubNetworkService());
3642

3743
private HeaderDTO headerDTO;
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
// SPDX-FileCopyrightText: 2024 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.TDA;
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 DaService {
15+
16+
public Stream<TDA> getDAs(TDOType tdoType) {
17+
return tdoType.getSDOOrDA().stream()
18+
.filter(tUnNaming -> tUnNaming.getClass().equals(TDA.class))
19+
.map(TDA.class::cast);
20+
}
21+
22+
public Stream<TDA> getFilteredDAs(TDOType tdoType, Predicate<TDA> tdaPredicate) {
23+
return getDAs(tdoType).filter(tdaPredicate);
24+
}
25+
26+
public Optional<TDA> findDA(TDOType tdoType, Predicate<TDA> tdaPredicate) {
27+
return getFilteredDAs(tdoType, tdaPredicate).findFirst();
28+
}
29+
30+
public Optional<TDA> findDA(TDOType tdoType, String daName) {
31+
return getFilteredDAs(tdoType, tda -> tda.getName().equals(daName)).findFirst();
32+
}
33+
34+
}

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

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ public class DataTypeTemplatesService implements DataTypeTemplateReader {
2727
final DoTypeService doTypeService = new DoTypeService();
2828
final DaTypeService daTypeService = new DaTypeService();
2929
final DoService doService = new DoService();
30-
final SDOOrDAService sdoOrDAService = new SDOOrDAService();
30+
final DaService daService = new DaService();
31+
final SdoService sdoService = new SdoService();
3132
final BDAService bdaService = new BDAService();
3233

3334
/**
@@ -48,10 +49,10 @@ public class DataTypeTemplatesService implements DataTypeTemplateReader {
4849
* @return true if the Data Object (Mod) and Data attribute (stVal) present, false otherwise
4950
*/
5051
public boolean isDoModAndDaStValExist(TDataTypeTemplates dtt, String lNodeTypeId) {
51-
return lnodeTypeService.findLnodeType(dtt, lNodeType -> lNodeTypeId.equals(lNodeType.getId()))
52-
.flatMap(lNodeType -> doService.findDo(lNodeType, tdo -> MOD_DO_NAME.equals(tdo.getName()))
53-
.flatMap(tdo -> doTypeService.findDoType(dtt, doType -> tdo.getType().equals(doType.getId()))
54-
.map(doType -> sdoOrDAService.findDA(doType, tda -> STVAL_DA_NAME.equals(tda.getName())).isPresent())))
52+
return lnodeTypeService.findLnodeType(dtt, lNodeTypeId)
53+
.flatMap(lNodeType -> doService.findDo(lNodeType, MOD_DO_NAME)
54+
.flatMap(tdo -> doTypeService.findDoType(dtt, tdo.getType())
55+
.map(doType -> daService.findDA(doType, STVAL_DA_NAME).isPresent())))
5556
.orElse(false);
5657
}
5758

@@ -62,7 +63,7 @@ public Stream<DoLinkedToDa> getAllDoLinkedToDa(TDataTypeTemplates dtt) {
6263
DoLinkedToDa doLinkedToDa = new DoLinkedToDa(new DataObject(), new DataAttribute());
6364
return tlNodeType.getDO()
6465
.stream()
65-
.map(tdo -> doTypeService.findDoType(dtt, tdoType -> tdoType.getId().equals(tdo.getType()))
66+
.map(tdo -> doTypeService.findDoType(dtt, tdo.getType())
6667
.map(doType -> {
6768
doLinkedToDa.dataObject().setDoName(tdo.getName());
6869
return doTypeService.getAllSDOLinkedToDa(dtt, doType, doLinkedToDa).stream();
@@ -74,15 +75,15 @@ public Stream<DoLinkedToDa> getAllDoLinkedToDa(TDataTypeTemplates dtt) {
7475

7576
@Override
7677
public Stream<DoLinkedToDa> getFilteredDoLinkedToDa(TDataTypeTemplates dtt, String lNodeTypeId, DoLinkedToDaFilter doLinkedToDaFilter) {
77-
return lnodeTypeService.findLnodeType(dtt, tlNodeType -> tlNodeType.getId().equals(lNodeTypeId))
78+
return lnodeTypeService.findLnodeType(dtt, lNodeTypeId)
7879
.stream()
7980
.flatMap(tlNodeType -> doService.getFilteredDos(tlNodeType, tdo -> StringUtils.isBlank(doLinkedToDaFilter.doName())
8081
|| doLinkedToDaFilter.doName().equals(tdo.getName()))
8182
.flatMap(tdo -> {
8283
DataObject dataObject = new DataObject();
8384
dataObject.setDoName(tdo.getName());
8485
DoLinkedToDa doLinkedToDa = new DoLinkedToDa(dataObject, new DataAttribute());
85-
return doTypeService.findDoType(dtt, tdoType -> tdoType.getId().equals(tdo.getType()))
86+
return doTypeService.findDoType(dtt, tdo.getType())
8687
.stream()
8788
.flatMap(tdoType -> {
8889
doLinkedToDa.dataObject().setCdc(tdoType.getCdc());
@@ -99,17 +100,17 @@ public Optional<DoLinkedToDa> findDoLinkedToDa(TDataTypeTemplates dtt, String lN
99100
List<String> dataRefList = new ArrayList<>(doLinkedToDaFilter.sdoNames());
100101
dataRefList.addAll(doLinkedToDaFilter.bdaNames());
101102

102-
return lnodeTypeService.findLnodeType(dtt, lNodeType -> lNodeTypeId.equals(lNodeType.getId()))
103-
.flatMap(lNodeType -> doService.findDo(lNodeType, tdo -> tdo.getName().equals(doLinkedToDaFilter.doName()))
103+
return lnodeTypeService.findLnodeType(dtt, lNodeTypeId)
104+
.flatMap(lNodeType -> doService.findDo(lNodeType, doLinkedToDaFilter.doName())
104105
// Search DoType for each DO
105-
.flatMap(tdo -> doTypeService.findDoType(dtt, doType -> doType.getId().equals(tdo.getType()))
106+
.flatMap(tdo -> doTypeService.findDoType(dtt, tdo.getType())
106107
.flatMap(tdoType -> {
107108
// Search last DoType from DOType (SDO) > DOType (SDO)
108109
TDOType lastDoType = findDOTypeBySdoName(dtt, tdoType, dataRefList);
109110
// Prepare DataObject
110111
DataObject dataObject = new DataObject(tdo.getName(), tdoType.getCdc(), doLinkedToDaFilter.sdoNames());
111112
// Search first DA from last DoType
112-
return sdoOrDAService.findDA(lastDoType, tda -> tda.getName().equals(doLinkedToDaFilter.daName()))
113+
return daService.findDA(lastDoType, doLinkedToDaFilter.daName())
113114
.flatMap(tda -> {
114115
// Prepare DataAttribute
115116
DataAttribute dataAttribute = new DataAttribute();
@@ -165,14 +166,14 @@ public Stream<String> getEnumValues(TDataTypeTemplates dataTypeTemplates, String
165166
}
166167

167168
private Optional<TDAType> getDATypeByDaName(TDataTypeTemplates dtt, TDOType tdoType, String daName) {
168-
return sdoOrDAService.findDA(tdoType, tda -> tda.getName().equals(daName))
169+
return daService.findDA(tdoType, daName)
169170
.flatMap(tda -> daTypeService.findDaType(dtt, tda.getType()));
170171
}
171172

172173
private TDOType findDOTypeBySdoName(TDataTypeTemplates dtt, TDOType tdoType, List<String> sdoNames) {
173174
if (sdoNames.isEmpty()) return tdoType;
174-
return sdoOrDAService.findSDO(tdoType, tsdo -> tsdo.getName().equals(sdoNames.getFirst()))
175-
.flatMap(tsdo -> doTypeService.findDoType(dtt, tdoType2 -> tdoType2.getId().equals(tsdo.getType())))
175+
return sdoService.findSDO(tdoType, sdoNames.getFirst())
176+
.flatMap(tsdo -> doTypeService.findDoType(dtt, tsdo.getType()))
176177
.map(tdoType2 -> {
177178
sdoNames.removeFirst();
178179
return findDOTypeBySdoName(dtt, tdoType2, sdoNames);

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,8 @@ public Optional<TDO> findDo(TLNodeType tlNodeType, Predicate<TDO> tdoPredicate)
2525
return getFilteredDos(tlNodeType, tdoPredicate).findFirst();
2626
}
2727

28+
public Optional<TDO> findDo(TLNodeType tlNodeType, String doName) {
29+
return getFilteredDos(tlNodeType, tdo -> tdo.getName().equals(doName)).findFirst();
30+
}
31+
2832
}

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

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@
1717
public class DoTypeService {
1818

1919
final DaTypeService daTypeService = new DaTypeService();
20-
final SDOOrDAService sdoOrDAService = new SDOOrDAService();
20+
final DaService daService = new DaService();
21+
final SdoService sdoService = new SdoService();
2122
final BDAService bdaService = new BDAService();
2223

2324
public Stream<TDOType> getDoTypes(TDataTypeTemplates tDataTypeTemplates) {
@@ -32,10 +33,14 @@ public Optional<TDOType> findDoType(TDataTypeTemplates tDataTypeTemplates, Predi
3233
return getFilteredDoTypes(tDataTypeTemplates, tdoTypePredicate).findFirst();
3334
}
3435

36+
public Optional<TDOType> findDoType(TDataTypeTemplates tDataTypeTemplates, String doTypeId) {
37+
return getFilteredDoTypes(tDataTypeTemplates, tdoType -> tdoType.getId().equals(doTypeId)).findFirst();
38+
}
39+
3540
public List<DoLinkedToDa> getAllSDOLinkedToDa(TDataTypeTemplates dtt, TDOType tdoType, DoLinkedToDa doLinkedToDaTemplate) {
3641
List<DoLinkedToDa> result = new ArrayList<>();
3742
// DA -> BDA -> BDA..
38-
sdoOrDAService.getDAs(tdoType).forEach(tda -> {
43+
daService.getDAs(tdoType).forEach(tda -> {
3944
DoLinkedToDa doLinkedToDa = doLinkedToDaTemplate.deepCopy();
4045
doLinkedToDa.dataAttribute().setDaName(tda.getName());
4146
if (tda.isSetFc()) {
@@ -52,10 +57,10 @@ public List<DoLinkedToDa> getAllSDOLinkedToDa(TDataTypeTemplates dtt, TDOType td
5257
}
5358
});
5459
// SDO -> SDO -> SDO..
55-
sdoOrDAService.getSDOs(tdoType)
60+
sdoService.getSDOs(tdoType)
5661
.forEach(tsdo -> {
5762
if (tsdo.isSetType()) {
58-
findDoType(dtt, tdoType1 -> tdoType1.getId().equals(tsdo.getType()))
63+
findDoType(dtt, tsdo.getType())
5964
.ifPresent(nextDoType -> {
6065
DoLinkedToDa newDoLinkedToDa = doLinkedToDaTemplate.deepCopy();
6166
newDoLinkedToDa.dataObject().getSdoNames().add(tsdo.getName());

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

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,7 @@
44

55
package org.lfenergy.compas.sct.commons;
66

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;
7+
import org.lfenergy.compas.scl2007b4.model.*;
118
import org.lfenergy.compas.sct.commons.api.ExtRefReader;
129

1310
import java.util.stream.Stream;

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,8 @@ public Optional<TLNodeType> findLnodeType(TDataTypeTemplates tDataTypeTemplates,
2525
return getFilteredLnodeTypes(tDataTypeTemplates, tlNodeTypePredicate).findFirst();
2626
}
2727

28+
public Optional<TLNodeType> findLnodeType(TDataTypeTemplates tDataTypeTemplates, String lNodeTypeId) {
29+
return getFilteredLnodeTypes(tDataTypeTemplates, tlNodeType -> tlNodeType.getId().equals(lNodeTypeId)).findFirst();
30+
}
31+
2832
}

0 commit comments

Comments
 (0)