Skip to content

Commit 07e37cf

Browse files
authored
Merge pull request #451 from com-pas/develop
Release 0.2.34
2 parents 80235f3 + afdabad commit 07e37cf

27 files changed

+1176
-662
lines changed

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

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

15-
import java.util.*;
15+
import java.util.ArrayList;
16+
import java.util.List;
17+
import java.util.Optional;
1618
import java.util.function.Predicate;
1719
import java.util.stream.Stream;
1820

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

3133
/**
3234
* verify if DO(name=Mod)/DA(name=stVal) exists in DataTypeTemplate
33-
* @param dtt TDataTypeTemplates where Data object and Data attribute exists
35+
*
36+
* @param dtt TDataTypeTemplates where Data object and Data attribute exists
3437
* @param lNodeTypeId LNode Type ID where Data object exists
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>
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>
4548
* @return true if the Data Object (Mod) and Data attribute (stVal) present, false otherwise
4649
*/
4750
public boolean isDoModAndDaStValExist(TDataTypeTemplates dtt, String lNodeTypeId) {
@@ -54,16 +57,14 @@ public boolean isDoModAndDaStValExist(TDataTypeTemplates dtt, String lNodeTypeId
5457

5558
@Override
5659
public Stream<DoLinkedToDa> getAllDoLinkedToDa(TDataTypeTemplates dtt) {
57-
return lnodeTypeService.getLnodeTypes(dtt)
60+
return lnodeTypeService.getLnodeTypes(dtt)
5861
.flatMap(tlNodeType -> {
59-
DoLinkedToDa doLinkedToDa = new DoLinkedToDa();
60-
doLinkedToDa.setDataObject(new DataObject());
61-
doLinkedToDa.setDataAttribute(new DataAttribute());
62+
DoLinkedToDa doLinkedToDa = new DoLinkedToDa(new DataObject(), new DataAttribute());
6263
return tlNodeType.getDO()
6364
.stream()
6465
.map(tdo -> doTypeService.findDoType(dtt, tdoType -> tdoType.getId().equals(tdo.getType()))
6566
.map(doType -> {
66-
doLinkedToDa.getDataObject().setDoName(tdo.getName());
67+
doLinkedToDa.dataObject().setDoName(tdo.getName());
6768
return doTypeService.getAllSDOLinkedToDa(dtt, doType, doLinkedToDa).stream();
6869
}))
6970
.filter(Optional::isPresent)
@@ -78,41 +79,49 @@ public Stream<DoLinkedToDa> getFilteredDoLinkedToDa(TDataTypeTemplates dtt, Stri
7879
.flatMap(tlNodeType -> doService.getFilteredDos(tlNodeType, tdo -> StringUtils.isBlank(doLinkedToDaFilter.doName())
7980
|| doLinkedToDaFilter.doName().equals(tdo.getName()))
8081
.flatMap(tdo -> {
81-
DoLinkedToDa doLinkedToDa = new DoLinkedToDa();
8282
DataObject dataObject = new DataObject();
8383
dataObject.setDoName(tdo.getName());
84-
doLinkedToDa.setDataObject(dataObject);
85-
doLinkedToDa.setDataAttribute(new DataAttribute());
84+
DoLinkedToDa doLinkedToDa = new DoLinkedToDa(dataObject, new DataAttribute());
8685
return doTypeService.findDoType(dtt, tdoType -> tdoType.getId().equals(tdo.getType()))
8786
.stream()
8887
.flatMap(tdoType -> {
89-
doLinkedToDa.getDataObject().setCdc(tdoType.getCdc());
88+
doLinkedToDa.dataObject().setCdc(tdoType.getCdc());
9089
return doTypeService.getAllSDOLinkedToDa(dtt, tdoType, doLinkedToDa).stream()
9190
.filter(doLinkedToDa1 -> StringUtils.isBlank(doLinkedToDaFilter.doName())
9291
|| (doLinkedToDa1.getDoRef().startsWith(doLinkedToDaFilter.getDoRef()) && StringUtils.isBlank(doLinkedToDaFilter.daName()))
9392
|| doLinkedToDa1.getDaRef().startsWith(doLinkedToDaFilter.getDaRef()));
9493
});
95-
}));
94+
}));
9695
}
9796

9897
@Override
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());
98+
public Optional<DoLinkedToDa> findDoLinkedToDa(TDataTypeTemplates dtt, String lNodeTypeId, DoLinkedToDaFilter doLinkedToDaFilter) {
99+
List<String> dataRefList = new ArrayList<>(doLinkedToDaFilter.sdoNames());
100+
dataRefList.addAll(doLinkedToDaFilter.bdaNames());
102101

103102
return lnodeTypeService.findLnodeType(dtt, lNodeType -> lNodeTypeId.equals(lNodeType.getId()))
104-
.flatMap(lNodeType -> doService.findDo(lNodeType, tdo -> tdo.getName().equals(doLinkedToDa.getDataObject().getDoName()))
103+
.flatMap(lNodeType -> doService.findDo(lNodeType, tdo -> tdo.getName().equals(doLinkedToDaFilter.doName()))
105104
// Search DoType for each DO
106105
.flatMap(tdo -> doTypeService.findDoType(dtt, doType -> doType.getId().equals(tdo.getType()))
107106
.flatMap(tdoType -> {
108107
// Search last DoType from DOType (SDO) > DOType (SDO)
109108
TDOType lastDoType = findDOTypeBySdoName(dtt, tdoType, dataRefList);
109+
// Prepare DataObject
110+
DataObject dataObject = new DataObject(tdo.getName(), tdoType.getCdc(), doLinkedToDaFilter.sdoNames());
110111
// Search first DA from last DoType
111-
return sdoOrDAService.findDA(lastDoType, tda1 -> tda1.getName().equals(doLinkedToDa.getDataAttribute().getDaName()))
112+
return sdoOrDAService.findDA(lastDoType, tda -> tda.getName().equals(doLinkedToDaFilter.daName()))
112113
.flatMap(tda -> {
114+
// Prepare DataAttribute
115+
DataAttribute dataAttribute = new DataAttribute();
116+
dataAttribute.setDaName(tda.getName());
117+
dataAttribute.setFc(tda.getFc());
113118
// Check if first DA is STRUCT or not
114-
if(!tda.getBType().equals(TPredefinedBasicTypeEnum.STRUCT)) {
115-
return Optional.of(doLinkedToDa);
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));
116125
}
117126
// Search first DaType from DOType (from last DOType where DA is STRUCT)
118127
return getDATypeByDaName(dtt, lastDoType, tda.getName())
@@ -122,11 +131,18 @@ public Optional<DoLinkedToDa> findDoLinkedToDa(TDataTypeTemplates dtt, String lN
122131
&& tbda.getBType().equals(TPredefinedBasicTypeEnum.STRUCT), dataRefList);
123132

124133
// last DAType should contain BDA not STRUCT
125-
if(dataRefList.size() != 1) return Optional.empty();
134+
if (dataRefList.size() != 1) return Optional.empty();
126135
String lastBdaName = dataRefList.getFirst();
127136
return bdaService.findBDA(lastDAType, tbda -> tbda.getName().equals(lastBdaName)
128137
&& !tbda.getBType().equals(TPredefinedBasicTypeEnum.STRUCT))
129-
.flatMap(tbda -> Optional.of(doLinkedToDa));
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+
});
130146
});
131147
});
132148
})
@@ -139,7 +155,7 @@ private Optional<TDAType> getDATypeByDaName(TDataTypeTemplates dtt, TDOType tdoT
139155
}
140156

141157
private TDOType findDOTypeBySdoName(TDataTypeTemplates dtt, TDOType tdoType, List<String> sdoNames) {
142-
if(sdoNames.isEmpty()) return tdoType;
158+
if (sdoNames.isEmpty()) return tdoType;
143159
return sdoOrDAService.findSDO(tdoType, tsdo -> tsdo.getName().equals(sdoNames.getFirst()))
144160
.flatMap(tsdo -> doTypeService.findDoType(dtt, tdoType2 -> tdoType2.getId().equals(tsdo.getType())))
145161
.map(tdoType2 -> {
@@ -149,7 +165,7 @@ private TDOType findDOTypeBySdoName(TDataTypeTemplates dtt, TDOType tdoType, Lis
149165
}
150166

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

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

+27-26
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,53 +37,54 @@ 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.getDataAttribute().setDaName(tda.getName());
41-
if(tda.isSetFc()) {
42-
doLinkedToDa.getDataAttribute().setFc(tda.getFc());
40+
doLinkedToDa.dataAttribute().setDaName(tda.getName());
41+
if (tda.isSetFc()) {
42+
doLinkedToDa.dataAttribute().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-
doLinkedToDa.setDataAttribute(updateDataAttributeFromDaOrBda(tda, doLinkedToDa.getDataAttribute()));
51-
result.add(doLinkedToDa);
50+
DataAttribute dataAttribute = updateDataAttributeFromDaOrBda(tda, doLinkedToDa.dataAttribute());
51+
result.add(new DoLinkedToDa(doLinkedToDa.dataObject(), dataAttribute));
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.getDataObject().getSdoNames().add(tsdo.getName());
62-
if(nextDoType.isSetCdc()) {
63-
newDoLinkedToDa.getDataObject().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.dataObject().getSdoNames().add(tsdo.getName());
62+
if (nextDoType.isSetCdc()) {
63+
newDoLinkedToDa.dataObject().setCdc(nextDoType.getCdc());
64+
}
65+
result.addAll(getAllSDOLinkedToDa(dtt, nextDoType, newDoLinkedToDa));
66+
});
6767
}
6868
});
6969
return result;
7070
}
71+
7172
private Stream<DoLinkedToDa> getDaLinkedToBDA(TDataTypeTemplates dtt, TDAType tdaType1, DoLinkedToDa doLinkedToDaTemplate) {
7273
// BDA -> BDA -> BDA..
7374
return bdaService.getBDAs(tdaType1)
7475
.flatMap(tbda -> {
7576
DoLinkedToDa newDoLinkedToDa = DoLinkedToDa.copyFrom(doLinkedToDaTemplate);
76-
newDoLinkedToDa.getDataAttribute().getBdaNames().add(tbda.getName());
77+
newDoLinkedToDa.dataAttribute().getBdaNames().add(tbda.getName());
7778

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

8990
private DataAttribute updateDataAttributeFromDaOrBda(TAbstractDataAttribute daOrBda, DataAttribute dataAttribute) {
@@ -94,4 +95,4 @@ private DataAttribute updateDataAttributeFromDaOrBda(TAbstractDataAttribute daOr
9495
return dataAttribute;
9596
}
9697

97-
}
98+
}

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

+1-4
Original file line numberDiff line numberDiff line change
@@ -307,15 +307,12 @@ 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();
312310
DataObject dataObject = new DataObject();
313311
dataObject.setDoName(tdoi.getName());
314-
doLinkedToDa.setDataObject(dataObject);
315312
DataAttribute dataAttribute = new DataAttribute();
316313
dataAttribute.setDaName(SETSRCREF_DA_NAME);
317314
dataAttribute.setDaiValues(List.of(new DaVal(null, tied.getName()+tlDevice.getInst()+"/LPHD0.Proxy")));
318-
doLinkedToDa.setDataAttribute(dataAttribute);
315+
DoLinkedToDa doLinkedToDa = new DoLinkedToDa(dataObject, dataAttribute);
319316
lnEditor.updateOrCreateDOAndDAInstances(tlDevice.getLN0(), doLinkedToDa);
320317
}
321318
})));

0 commit comments

Comments
 (0)