1212import org .lfenergy .compas .sct .commons .domain .DoLinkedToDa ;
1313import 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 .*;
1816import java .util .function .Predicate ;
1917import 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 ()))
0 commit comments