Skip to content

Commit d19aca3

Browse files
authored
Merge pull request #456 from com-pas/revert-448-fix/447-rsr-1116-update-ln-modstval-based-on-compas-lnodestatus
Revert "feat(#447): RSR-1116 - update LN Mod.stVal based on COMPAS-LNodeStatus"
2 parents 0b77d4b + b16c9e6 commit d19aca3

24 files changed

+536
-1129
lines changed

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

Lines changed: 33 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,7 @@
1212
import org.lfenergy.compas.sct.commons.domain.DoLinkedToDa;
1313
import org.lfenergy.compas.sct.commons.domain.DoLinkedToDaFilter;
1414

15-
import java.util.ArrayList;
16-
import java.util.List;
17-
import java.util.Optional;
15+
import java.util.*;
1816
import java.util.function.Predicate;
1917
import java.util.stream.Stream;
2018

@@ -32,19 +30,18 @@ public class DataTypeTemplatesService implements DataTypeTemplateReader {
3230

3331
/**
3432
* verify if DO(name=Mod)/DA(name=stVal) exists in DataTypeTemplate
35-
*
36-
* @param dtt TDataTypeTemplates where Data object and Data attribute exists
33+
* @param dtt TDataTypeTemplates where Data object and Data attribute exists
3734
* @param lNodeTypeId LNode Type ID where Data object exists
38-
* DataTypeTemplates model :
39-
* <DataTypeTemplates>
40-
* <LNodeType lnClass="LNodeTypeClass" id="LNodeTypeID">
41-
* <DO name="Mod" type="DOModTypeID" ../>
42-
* </LNodeType>
43-
* ...
44-
* <DOType cdc="DOTypeCDC" id="DOModTypeID">
45-
* <DA name="stVal" ../>
46-
* </DOType>
47-
* </DataTypeTemplates>
35+
* DataTypeTemplates model :
36+
* <DataTypeTemplates>
37+
* <LNodeType lnClass="LNodeTypeClass" id="LNodeTypeID">
38+
* <DO name="Mod" type="DOModTypeID" ../>
39+
* </LNodeType>
40+
* ...
41+
* <DOType cdc="DOTypeCDC" id="DOModTypeID">
42+
* <DA name="stVal" ../>
43+
* </DOType>
44+
* </DataTypeTemplates>
4845
* @return true if the Data Object (Mod) and Data attribute (stVal) present, false otherwise
4946
*/
5047
public boolean isDoModAndDaStValExist(TDataTypeTemplates dtt, String lNodeTypeId) {
@@ -57,14 +54,16 @@ public boolean isDoModAndDaStValExist(TDataTypeTemplates dtt, String lNodeTypeId
5754

5855
@Override
5956
public Stream<DoLinkedToDa> getAllDoLinkedToDa(TDataTypeTemplates dtt) {
60-
return lnodeTypeService.getLnodeTypes(dtt)
57+
return lnodeTypeService.getLnodeTypes(dtt)
6158
.flatMap(tlNodeType -> {
62-
DoLinkedToDa doLinkedToDa = new DoLinkedToDa(new DataObject(), new DataAttribute());
59+
DoLinkedToDa doLinkedToDa = new DoLinkedToDa();
60+
doLinkedToDa.setDataObject(new DataObject());
61+
doLinkedToDa.setDataAttribute(new DataAttribute());
6362
return tlNodeType.getDO()
6463
.stream()
6564
.map(tdo -> doTypeService.findDoType(dtt, tdoType -> tdoType.getId().equals(tdo.getType()))
6665
.map(doType -> {
67-
doLinkedToDa.dataObject().setDoName(tdo.getName());
66+
doLinkedToDa.getDataObject().setDoName(tdo.getName());
6867
return doTypeService.getAllSDOLinkedToDa(dtt, doType, doLinkedToDa).stream();
6968
}))
7069
.filter(Optional::isPresent)
@@ -79,49 +78,41 @@ public Stream<DoLinkedToDa> getFilteredDoLinkedToDa(TDataTypeTemplates dtt, Stri
7978
.flatMap(tlNodeType -> doService.getFilteredDos(tlNodeType, tdo -> StringUtils.isBlank(doLinkedToDaFilter.doName())
8079
|| doLinkedToDaFilter.doName().equals(tdo.getName()))
8180
.flatMap(tdo -> {
81+
DoLinkedToDa doLinkedToDa = new DoLinkedToDa();
8282
DataObject dataObject = new DataObject();
8383
dataObject.setDoName(tdo.getName());
84-
DoLinkedToDa doLinkedToDa = new DoLinkedToDa(dataObject, new DataAttribute());
84+
doLinkedToDa.setDataObject(dataObject);
85+
doLinkedToDa.setDataAttribute(new DataAttribute());
8586
return doTypeService.findDoType(dtt, tdoType -> tdoType.getId().equals(tdo.getType()))
8687
.stream()
8788
.flatMap(tdoType -> {
88-
doLinkedToDa.dataObject().setCdc(tdoType.getCdc());
89+
doLinkedToDa.getDataObject().setCdc(tdoType.getCdc());
8990
return doTypeService.getAllSDOLinkedToDa(dtt, tdoType, doLinkedToDa).stream()
9091
.filter(doLinkedToDa1 -> StringUtils.isBlank(doLinkedToDaFilter.doName())
9192
|| (doLinkedToDa1.getDoRef().startsWith(doLinkedToDaFilter.getDoRef()) && StringUtils.isBlank(doLinkedToDaFilter.daName()))
9293
|| doLinkedToDa1.getDaRef().startsWith(doLinkedToDaFilter.getDaRef()));
9394
});
94-
}));
95+
}));
9596
}
9697

9798
@Override
98-
public Optional<DoLinkedToDa> findDoLinkedToDa(TDataTypeTemplates dtt, String lNodeTypeId, DoLinkedToDaFilter doLinkedToDaFilter) {
99-
List<String> dataRefList = new ArrayList<>(doLinkedToDaFilter.sdoNames());
100-
dataRefList.addAll(doLinkedToDaFilter.bdaNames());
99+
public Optional<DoLinkedToDa> findDoLinkedToDa(TDataTypeTemplates dtt, String lNodeTypeId, DoLinkedToDa doLinkedToDa) {
100+
List<String> dataRefList = new ArrayList<>(doLinkedToDa.getDataObject().getSdoNames());
101+
dataRefList.addAll(doLinkedToDa.getDataAttribute().getBdaNames());
101102

102103
return lnodeTypeService.findLnodeType(dtt, lNodeType -> lNodeTypeId.equals(lNodeType.getId()))
103-
.flatMap(lNodeType -> doService.findDo(lNodeType, tdo -> tdo.getName().equals(doLinkedToDaFilter.doName()))
104+
.flatMap(lNodeType -> doService.findDo(lNodeType, tdo -> tdo.getName().equals(doLinkedToDa.getDataObject().getDoName()))
104105
// Search DoType for each DO
105106
.flatMap(tdo -> doTypeService.findDoType(dtt, doType -> doType.getId().equals(tdo.getType()))
106107
.flatMap(tdoType -> {
107108
// Search last DoType from DOType (SDO) > DOType (SDO)
108109
TDOType lastDoType = findDOTypeBySdoName(dtt, tdoType, dataRefList);
109-
// Prepare DataObject
110-
DataObject dataObject = new DataObject(tdo.getName(), tdoType.getCdc(), doLinkedToDaFilter.sdoNames());
111110
// Search first DA from last DoType
112-
return sdoOrDAService.findDA(lastDoType, tda -> tda.getName().equals(doLinkedToDaFilter.daName()))
111+
return sdoOrDAService.findDA(lastDoType, tda1 -> tda1.getName().equals(doLinkedToDa.getDataAttribute().getDaName()))
113112
.flatMap(tda -> {
114-
// Prepare DataAttribute
115-
DataAttribute dataAttribute = new DataAttribute();
116-
dataAttribute.setDaName(tda.getName());
117-
dataAttribute.setFc(tda.getFc());
118113
// Check if first DA is STRUCT or not
119-
if (!tda.getBType().equals(TPredefinedBasicTypeEnum.STRUCT)) {
120-
dataAttribute.addDaVal(tda.getVal());
121-
dataAttribute.setBType(tda.getBType());
122-
dataAttribute.setType(tda.getType());
123-
dataAttribute.setValImport(tda.isValImport());
124-
return Optional.of(new DoLinkedToDa(dataObject, dataAttribute));
114+
if(!tda.getBType().equals(TPredefinedBasicTypeEnum.STRUCT)) {
115+
return Optional.of(doLinkedToDa);
125116
}
126117
// Search first DaType from DOType (from last DOType where DA is STRUCT)
127118
return getDATypeByDaName(dtt, lastDoType, tda.getName())
@@ -131,18 +122,11 @@ public Optional<DoLinkedToDa> findDoLinkedToDa(TDataTypeTemplates dtt, String lN
131122
&& tbda.getBType().equals(TPredefinedBasicTypeEnum.STRUCT), dataRefList);
132123

133124
// last DAType should contain BDA not STRUCT
134-
if (dataRefList.size() != 1) return Optional.empty();
125+
if(dataRefList.size() != 1) return Optional.empty();
135126
String lastBdaName = dataRefList.getFirst();
136127
return bdaService.findBDA(lastDAType, tbda -> tbda.getName().equals(lastBdaName)
137128
&& !tbda.getBType().equals(TPredefinedBasicTypeEnum.STRUCT))
138-
.flatMap(tbda -> {
139-
dataAttribute.getBdaNames().addAll(doLinkedToDaFilter.bdaNames());
140-
dataAttribute.setBType(tbda.getBType());
141-
dataAttribute.setType(tbda.getType());
142-
dataAttribute.setValImport(tbda.isValImport());
143-
dataAttribute.addDaVal(tbda.getVal());
144-
return Optional.of(new DoLinkedToDa(dataObject, dataAttribute));
145-
});
129+
.flatMap(tbda -> Optional.of(doLinkedToDa));
146130
});
147131
});
148132
})
@@ -155,7 +139,7 @@ private Optional<TDAType> getDATypeByDaName(TDataTypeTemplates dtt, TDOType tdoT
155139
}
156140

157141
private TDOType findDOTypeBySdoName(TDataTypeTemplates dtt, TDOType tdoType, List<String> sdoNames) {
158-
if (sdoNames.isEmpty()) return tdoType;
142+
if(sdoNames.isEmpty()) return tdoType;
159143
return sdoOrDAService.findSDO(tdoType, tsdo -> tsdo.getName().equals(sdoNames.getFirst()))
160144
.flatMap(tsdo -> doTypeService.findDoType(dtt, tdoType2 -> tdoType2.getId().equals(tsdo.getType())))
161145
.map(tdoType2 -> {
@@ -165,7 +149,7 @@ private TDOType findDOTypeBySdoName(TDataTypeTemplates dtt, TDOType tdoType, Lis
165149
}
166150

167151
private TDAType findDATypeByBdaName(TDataTypeTemplates dtt, TDAType tdaType, Predicate<TBDA> tbdaPredicate, List<String> bdaNames) {
168-
if (bdaNames.isEmpty()) return tdaType;
152+
if(bdaNames.isEmpty()) return tdaType;
169153
return bdaService.getFilteredBDAs(tdaType, tbdaPredicate)
170154
.findFirst()
171155
.flatMap(tbda -> daTypeService.findDaType(dtt, tbda.getType()))

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

Lines changed: 26 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616

1717
public class DoTypeService {
1818

19-
final DaTypeService daTypeService = new DaTypeService();
20-
final SDOOrDAService sdoOrDAService = new SDOOrDAService();
21-
final BDAService bdaService = new BDAService();
19+
final DaTypeService daTypeService = new DaTypeService();
20+
final SDOOrDAService sdoOrDAService = new SDOOrDAService();
21+
final BDAService bdaService = new BDAService();
2222

2323
public Stream<TDOType> getDoTypes(TDataTypeTemplates tDataTypeTemplates) {
2424
return tDataTypeTemplates.getDOType().stream();
@@ -37,54 +37,53 @@ public List<DoLinkedToDa> getAllSDOLinkedToDa(TDataTypeTemplates dtt, TDOType td
3737
// DA -> BDA -> BDA..
3838
sdoOrDAService.getDAs(tdoType).forEach(tda -> {
3939
DoLinkedToDa doLinkedToDa = DoLinkedToDa.copyFrom(doLinkedToDaTemplate);
40-
doLinkedToDa.dataAttribute().setDaName(tda.getName());
41-
if (tda.isSetFc()) {
42-
doLinkedToDa.dataAttribute().setFc(tda.getFc());
40+
doLinkedToDa.getDataAttribute().setDaName(tda.getName());
41+
if(tda.isSetFc()) {
42+
doLinkedToDa.getDataAttribute().setFc(tda.getFc());
4343
}
4444

4545
// STRUCT type (BType=STRUCT) refer to BDA, otherwise it is DA
46-
if (TPredefinedBasicTypeEnum.STRUCT.equals(tda.getBType())) {
46+
if(TPredefinedBasicTypeEnum.STRUCT.equals(tda.getBType())) {
4747
daTypeService.findDaType(dtt, tda.getType())
4848
.ifPresent(nextDaType -> result.addAll(getDaLinkedToBDA(dtt, nextDaType, doLinkedToDa).toList()));
4949
} else {
50-
DataAttribute dataAttribute = updateDataAttributeFromDaOrBda(tda, doLinkedToDa.dataAttribute());
51-
result.add(new DoLinkedToDa(doLinkedToDa.dataObject(), dataAttribute));
50+
doLinkedToDa.setDataAttribute(updateDataAttributeFromDaOrBda(tda, doLinkedToDa.getDataAttribute()));
51+
result.add(doLinkedToDa);
5252
}
5353
});
5454
// SDO -> SDO -> SDO..
5555
sdoOrDAService.getSDOs(tdoType)
5656
.forEach(tsdo -> {
57-
if (tsdo.isSetType()) {
58-
findDoType(dtt, tdoType1 -> tdoType1.getId().equals(tsdo.getType()))
59-
.ifPresent(nextDoType -> {
60-
DoLinkedToDa newDoLinkedToDa = DoLinkedToDa.copyFrom(doLinkedToDaTemplate);
61-
newDoLinkedToDa.dataObject().getSdoNames().add(tsdo.getName());
62-
if (nextDoType.isSetCdc()) {
63-
newDoLinkedToDa.dataObject().setCdc(nextDoType.getCdc());
64-
}
65-
result.addAll(getAllSDOLinkedToDa(dtt, nextDoType, newDoLinkedToDa));
66-
});
57+
if(tsdo.isSetType()){
58+
findDoType(dtt, tdoType1 -> tdoType1.getId().equals(tsdo.getType()))
59+
.ifPresent(nextDoType -> {
60+
DoLinkedToDa newDoLinkedToDa = DoLinkedToDa.copyFrom(doLinkedToDaTemplate);
61+
newDoLinkedToDa.getDataObject().getSdoNames().add(tsdo.getName());
62+
if(nextDoType.isSetCdc()) {
63+
newDoLinkedToDa.getDataObject().setCdc(nextDoType.getCdc());
64+
}
65+
result.addAll(getAllSDOLinkedToDa(dtt, nextDoType, newDoLinkedToDa));
66+
});
6767
}
6868
});
6969
return result;
7070
}
71-
7271
private Stream<DoLinkedToDa> getDaLinkedToBDA(TDataTypeTemplates dtt, TDAType tdaType1, DoLinkedToDa doLinkedToDaTemplate) {
7372
// BDA -> BDA -> BDA..
7473
return bdaService.getBDAs(tdaType1)
7574
.flatMap(tbda -> {
7675
DoLinkedToDa newDoLinkedToDa = DoLinkedToDa.copyFrom(doLinkedToDaTemplate);
77-
newDoLinkedToDa.dataAttribute().getBdaNames().add(tbda.getName());
76+
newDoLinkedToDa.getDataAttribute().getBdaNames().add(tbda.getName());
7877

7978
// STRUCT type (BType=STRUCT) refer to complex BDA object, otherwise it is kind of DA object
80-
if (TPredefinedBasicTypeEnum.STRUCT.equals(tbda.getBType())) {
81-
return daTypeService.findDaType(dtt, tbda.getType())
79+
if(TPredefinedBasicTypeEnum.STRUCT.equals(tbda.getBType())){
80+
return daTypeService.findDaType(dtt, tbda.getType())
8281
.stream().flatMap(nextDaType -> getDaLinkedToBDA(dtt, nextDaType, newDoLinkedToDa));
8382
} else {
84-
DataAttribute dataAttribute = updateDataAttributeFromDaOrBda(tbda, newDoLinkedToDa.dataAttribute());
85-
return Stream.of(new DoLinkedToDa(newDoLinkedToDa.dataObject(), dataAttribute));
83+
newDoLinkedToDa.setDataAttribute(updateDataAttributeFromDaOrBda(tbda, newDoLinkedToDa.getDataAttribute()));
84+
return Stream.of(newDoLinkedToDa);
8685
}
87-
});
86+
});
8887
}
8988

9089
private DataAttribute updateDataAttributeFromDaOrBda(TAbstractDataAttribute daOrBda, DataAttribute dataAttribute) {
@@ -95,4 +94,4 @@ private DataAttribute updateDataAttributeFromDaOrBda(TAbstractDataAttribute daOr
9594
return dataAttribute;
9695
}
9796

98-
}
97+
}

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -307,12 +307,15 @@ public void epfPostProcessing(SCL scd) {
307307
&& (purPoseDAI.get().getVal().getFirst().getValue().startsWith("DYN_LDEPF_DIGITAL CHANNEL")
308308
|| purPoseDAI.get().getVal().getFirst().getValue().startsWith("DYN_LDEPF_ANALOG CHANNEL"));
309309
if(isSetSrcRefExistAndEmpty && isPurposeExistAndMatchChannel) {
310+
311+
DoLinkedToDa doLinkedToDa = new DoLinkedToDa();
310312
DataObject dataObject = new DataObject();
311313
dataObject.setDoName(tdoi.getName());
314+
doLinkedToDa.setDataObject(dataObject);
312315
DataAttribute dataAttribute = new DataAttribute();
313316
dataAttribute.setDaName(SETSRCREF_DA_NAME);
314317
dataAttribute.setDaiValues(List.of(new DaVal(null, tied.getName()+tlDevice.getInst()+"/LPHD0.Proxy")));
315-
DoLinkedToDa doLinkedToDa = new DoLinkedToDa(dataObject, dataAttribute);
318+
doLinkedToDa.setDataAttribute(dataAttribute);
316319
lnEditor.updateOrCreateDOAndDAInstances(tlDevice.getLN0(), doLinkedToDa);
317320
}
318321
})));

0 commit comments

Comments
 (0)