12
12
import org .lfenergy .compas .sct .commons .domain .DoLinkedToDa ;
13
13
import org .lfenergy .compas .sct .commons .domain .DoLinkedToDaFilter ;
14
14
15
- import java .util .*;
15
+ import java .util .ArrayList ;
16
+ import java .util .List ;
17
+ import java .util .Optional ;
16
18
import java .util .function .Predicate ;
17
19
import java .util .stream .Stream ;
18
20
@@ -30,18 +32,19 @@ public class DataTypeTemplatesService implements DataTypeTemplateReader {
30
32
31
33
/**
32
34
* 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
34
37
* @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>
45
48
* @return true if the Data Object (Mod) and Data attribute (stVal) present, false otherwise
46
49
*/
47
50
public boolean isDoModAndDaStValExist (TDataTypeTemplates dtt , String lNodeTypeId ) {
@@ -54,16 +57,14 @@ public boolean isDoModAndDaStValExist(TDataTypeTemplates dtt, String lNodeTypeId
54
57
55
58
@ Override
56
59
public Stream <DoLinkedToDa > getAllDoLinkedToDa (TDataTypeTemplates dtt ) {
57
- return lnodeTypeService .getLnodeTypes (dtt )
60
+ return lnodeTypeService .getLnodeTypes (dtt )
58
61
.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 ());
62
63
return tlNodeType .getDO ()
63
64
.stream ()
64
65
.map (tdo -> doTypeService .findDoType (dtt , tdoType -> tdoType .getId ().equals (tdo .getType ()))
65
66
.map (doType -> {
66
- doLinkedToDa .getDataObject ().setDoName (tdo .getName ());
67
+ doLinkedToDa .dataObject ().setDoName (tdo .getName ());
67
68
return doTypeService .getAllSDOLinkedToDa (dtt , doType , doLinkedToDa ).stream ();
68
69
}))
69
70
.filter (Optional ::isPresent )
@@ -78,41 +79,49 @@ public Stream<DoLinkedToDa> getFilteredDoLinkedToDa(TDataTypeTemplates dtt, Stri
78
79
.flatMap (tlNodeType -> doService .getFilteredDos (tlNodeType , tdo -> StringUtils .isBlank (doLinkedToDaFilter .doName ())
79
80
|| doLinkedToDaFilter .doName ().equals (tdo .getName ()))
80
81
.flatMap (tdo -> {
81
- DoLinkedToDa doLinkedToDa = new DoLinkedToDa ();
82
82
DataObject dataObject = new DataObject ();
83
83
dataObject .setDoName (tdo .getName ());
84
- doLinkedToDa .setDataObject (dataObject );
85
- doLinkedToDa .setDataAttribute (new DataAttribute ());
84
+ DoLinkedToDa doLinkedToDa = new DoLinkedToDa (dataObject , new DataAttribute ());
86
85
return doTypeService .findDoType (dtt , tdoType -> tdoType .getId ().equals (tdo .getType ()))
87
86
.stream ()
88
87
.flatMap (tdoType -> {
89
- doLinkedToDa .getDataObject ().setCdc (tdoType .getCdc ());
88
+ doLinkedToDa .dataObject ().setCdc (tdoType .getCdc ());
90
89
return doTypeService .getAllSDOLinkedToDa (dtt , tdoType , doLinkedToDa ).stream ()
91
90
.filter (doLinkedToDa1 -> StringUtils .isBlank (doLinkedToDaFilter .doName ())
92
91
|| (doLinkedToDa1 .getDoRef ().startsWith (doLinkedToDaFilter .getDoRef ()) && StringUtils .isBlank (doLinkedToDaFilter .daName ()))
93
92
|| doLinkedToDa1 .getDaRef ().startsWith (doLinkedToDaFilter .getDaRef ()));
94
93
});
95
- }));
94
+ }));
96
95
}
97
96
98
97
@ 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 ());
102
101
103
102
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 ()))
105
104
// Search DoType for each DO
106
105
.flatMap (tdo -> doTypeService .findDoType (dtt , doType -> doType .getId ().equals (tdo .getType ()))
107
106
.flatMap (tdoType -> {
108
107
// Search last DoType from DOType (SDO) > DOType (SDO)
109
108
TDOType lastDoType = findDOTypeBySdoName (dtt , tdoType , dataRefList );
109
+ // Prepare DataObject
110
+ DataObject dataObject = new DataObject (tdo .getName (), tdoType .getCdc (), doLinkedToDaFilter .sdoNames ());
110
111
// 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 ()))
112
113
.flatMap (tda -> {
114
+ // Prepare DataAttribute
115
+ DataAttribute dataAttribute = new DataAttribute ();
116
+ dataAttribute .setDaName (tda .getName ());
117
+ dataAttribute .setFc (tda .getFc ());
113
118
// 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 ));
116
125
}
117
126
// Search first DaType from DOType (from last DOType where DA is STRUCT)
118
127
return getDATypeByDaName (dtt , lastDoType , tda .getName ())
@@ -122,11 +131,18 @@ public Optional<DoLinkedToDa> findDoLinkedToDa(TDataTypeTemplates dtt, String lN
122
131
&& tbda .getBType ().equals (TPredefinedBasicTypeEnum .STRUCT ), dataRefList );
123
132
124
133
// last DAType should contain BDA not STRUCT
125
- if (dataRefList .size () != 1 ) return Optional .empty ();
134
+ if (dataRefList .size () != 1 ) return Optional .empty ();
126
135
String lastBdaName = dataRefList .getFirst ();
127
136
return bdaService .findBDA (lastDAType , tbda -> tbda .getName ().equals (lastBdaName )
128
137
&& !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
+ });
130
146
});
131
147
});
132
148
})
@@ -139,7 +155,7 @@ private Optional<TDAType> getDATypeByDaName(TDataTypeTemplates dtt, TDOType tdoT
139
155
}
140
156
141
157
private TDOType findDOTypeBySdoName (TDataTypeTemplates dtt , TDOType tdoType , List <String > sdoNames ) {
142
- if (sdoNames .isEmpty ()) return tdoType ;
158
+ if (sdoNames .isEmpty ()) return tdoType ;
143
159
return sdoOrDAService .findSDO (tdoType , tsdo -> tsdo .getName ().equals (sdoNames .getFirst ()))
144
160
.flatMap (tsdo -> doTypeService .findDoType (dtt , tdoType2 -> tdoType2 .getId ().equals (tsdo .getType ())))
145
161
.map (tdoType2 -> {
@@ -149,7 +165,7 @@ private TDOType findDOTypeBySdoName(TDataTypeTemplates dtt, TDOType tdoType, Lis
149
165
}
150
166
151
167
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 ;
153
169
return bdaService .getFilteredBDAs (tdaType , tbdaPredicate )
154
170
.findFirst ()
155
171
.flatMap (tbda -> daTypeService .findDaType (dtt , tbda .getType ()))
0 commit comments