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