44
55package org .lfenergy .compas .sct .commons ;
66
7- import org .apache .commons .lang3 .StringUtils ;
87import org .lfenergy .compas .scl2007b4 .model .*;
98import org .lfenergy .compas .sct .commons .api .DataTypeTemplateReader ;
109import org .lfenergy .compas .sct .commons .domain .DataAttribute ;
1110import org .lfenergy .compas .sct .commons .domain .DataObject ;
11+ import org .lfenergy .compas .sct .commons .domain .DataRef ;
1212import org .lfenergy .compas .sct .commons .domain .DoLinkedToDa ;
13- import org .lfenergy .compas .sct .commons .domain .DoLinkedToDaFilter ;
1413
1514import java .util .ArrayList ;
1615import java .util .List ;
@@ -31,58 +30,58 @@ public class DataTypeTemplatesService implements DataTypeTemplateReader {
3130 @ Override
3231 public Stream <DoLinkedToDa > getAllDoLinkedToDa (TDataTypeTemplates dtt ) {
3332 return lnodeTypeService .getLnodeTypes (dtt )
34- .flatMap (tlNodeType -> {
35- DoLinkedToDa doLinkedToDa = new DoLinkedToDa (new DataObject (), new DataAttribute ());
36- return tlNodeType .getDO ()
37- .stream ()
38- .map (tdo -> doTypeService .findDoType (dtt , tdo .getType ())
39- .map (doType -> {
40- doLinkedToDa .dataObject ().setDoName (tdo .getName ());
41- return doTypeService .getAllSDOLinkedToDa (dtt , doType , doLinkedToDa ).stream ();
42- }))
43- .filter (Optional ::isPresent )
44- .flatMap (Optional ::orElseThrow );
45- });
33+ .flatMap (tlNodeType -> tlNodeType .getDO ()
34+ .stream ()
35+ .flatMap (tdo -> getAllDoLinkedToDa (dtt , tdo )));
4636 }
4737
4838 @ Override
49- public Stream <DoLinkedToDa > getFilteredDoLinkedToDa (TDataTypeTemplates dtt , String lNodeTypeId , DoLinkedToDaFilter doLinkedToDaFilter ) {
39+ public Stream <DoLinkedToDa > getAllDoLinkedToDa (TDataTypeTemplates dtt , String lNodeTypeId ) {
40+ // Filter on LNodeType.Id
5041 return lnodeTypeService .findLnodeType (dtt , lNodeTypeId )
5142 .stream ()
52- .flatMap (tlNodeType -> doService .getFilteredDos (tlNodeType , tdo -> StringUtils .isBlank (doLinkedToDaFilter .doName ())
53- || doLinkedToDaFilter .doName ().equals (tdo .getName ()))
54- .flatMap (tdo -> {
55- DataObject dataObject = new DataObject ();
56- dataObject .setDoName (tdo .getName ());
57- DoLinkedToDa doLinkedToDa = new DoLinkedToDa (dataObject , new DataAttribute ());
58- return doTypeService .findDoType (dtt , tdo .getType ())
59- .stream ()
60- .flatMap (tdoType -> {
61- doLinkedToDa .dataObject ().setCdc (tdoType .getCdc ());
62- return doTypeService .getAllSDOLinkedToDa (dtt , tdoType , doLinkedToDa ).stream ()
63- .filter (doLinkedToDa1 -> StringUtils .isBlank (doLinkedToDaFilter .doName ())
64- || (doLinkedToDa1 .getDoRef ().startsWith (doLinkedToDaFilter .getDoRef ()) && StringUtils .isBlank (doLinkedToDaFilter .daName ()))
65- || doLinkedToDa1 .getDaRef ().startsWith (doLinkedToDaFilter .getDaRef ()));
66- });
67- }));
43+ .flatMap (tlNodeType -> doService .getDos (tlNodeType )
44+ .flatMap (tdo -> getAllDoLinkedToDa (dtt , tdo )));
6845 }
6946
7047 @ Override
71- public Optional <DoLinkedToDa > findDoLinkedToDa (TDataTypeTemplates dtt , String lNodeTypeId , DoLinkedToDaFilter doLinkedToDaFilter ) {
72- List <String > dataRefList = new ArrayList <>(doLinkedToDaFilter .sdoNames ());
73- dataRefList .addAll (doLinkedToDaFilter .bdaNames ());
48+ public Stream <DoLinkedToDa > getAllDoLinkedToDa (TDataTypeTemplates dtt , String lNodeTypeId , String doName ) {
49+ // Filter on LNodeType.Id
50+ return lnodeTypeService .findLnodeType (dtt , lNodeTypeId )
51+ .stream ()
52+ // Filter on DO.name
53+ .flatMap (tlNodeType -> doService .getFilteredDos (tlNodeType , tdo -> tdo .getName ().equals (doName )))
54+ .flatMap (tdo -> getAllDoLinkedToDa (dtt , tdo ));
55+ }
56+
57+ private Stream <DoLinkedToDa > getAllDoLinkedToDa (TDataTypeTemplates dtt , TDO tdo ) {
58+ DataObject dataObject = new DataObject ();
59+ dataObject .setDoName (tdo .getName ());
60+ DoLinkedToDa doLinkedToDa = new DoLinkedToDa (dataObject , new DataAttribute ());
61+ return doTypeService .findDoType (dtt , tdo .getType ())
62+ .stream ()
63+ .flatMap (tdoType -> {
64+ doLinkedToDa .dataObject ().setCdc (tdoType .getCdc ());
65+ return doTypeService .getAllSDOLinkedToDa (dtt , tdoType , doLinkedToDa ).stream ();
66+ });
67+ }
68+
69+ @ Override
70+ public Optional <DoLinkedToDa > findDoLinkedToDa (TDataTypeTemplates dtt , String lNodeTypeId , DataRef dataRef ) {
71+ List <String > dataRefList = new ArrayList <>(dataRef .sdoNames ());
72+ dataRefList .addAll (dataRef .bdaNames ());
7473
7574 return lnodeTypeService .findLnodeType (dtt , lNodeTypeId )
76- .flatMap (lNodeType -> doService .findDo (lNodeType , doLinkedToDaFilter .doName ())
75+ .flatMap (lNodeType -> doService .findDo (lNodeType , dataRef .doName ())
7776 // Search DoType for each DO
7877 .flatMap (tdo -> doTypeService .findDoType (dtt , tdo .getType ())
7978 .flatMap (tdoType -> {
8079 // Search last DoType from DOType (SDO) > DOType (SDO)
8180 TDOType lastDoType = findDOTypeBySdoName (dtt , tdoType , dataRefList );
8281 // Prepare DataObject
83- DataObject dataObject = new DataObject (tdo .getName (), tdoType .getCdc (), doLinkedToDaFilter .sdoNames ());
82+ DataObject dataObject = new DataObject (tdo .getName (), tdoType .getCdc (), dataRef .sdoNames ());
8483 // Search first DA from last DoType
85- return daService .findDA (lastDoType , doLinkedToDaFilter .daName ())
84+ return daService .findDA (lastDoType , dataRef .daName ())
8685 .flatMap (tda -> {
8786 // Prepare DataAttribute
8887 DataAttribute dataAttribute = new DataAttribute ();
@@ -102,15 +101,15 @@ public Optional<DoLinkedToDa> findDoLinkedToDa(TDataTypeTemplates dtt, String lN
102101 .flatMap (tdaType -> {
103102 // Search last DAType from first DAType
104103 TDAType lastDAType = findDATypeByBdaName (dtt , tdaType , tbda -> tbda .isSetBType ()
105- && tbda .getBType ().equals (TPredefinedBasicTypeEnum .STRUCT ), dataRefList );
104+ && tbda .getBType ().equals (TPredefinedBasicTypeEnum .STRUCT ), dataRefList );
106105
107106 // last DAType should contain BDA not STRUCT
108107 if (dataRefList .size () != 1 ) return Optional .empty ();
109108 String lastBdaName = dataRefList .getFirst ();
110109 return bdaService .findBDA (lastDAType , tbda -> tbda .getName ().equals (lastBdaName )
111- && !tbda .getBType ().equals (TPredefinedBasicTypeEnum .STRUCT ))
110+ && !tbda .getBType ().equals (TPredefinedBasicTypeEnum .STRUCT ))
112111 .flatMap (tbda -> {
113- dataAttribute .getBdaNames ().addAll (doLinkedToDaFilter .bdaNames ());
112+ dataAttribute .getBdaNames ().addAll (dataRef .bdaNames ());
114113 dataAttribute .setBType (tbda .getBType ());
115114 dataAttribute .setType (tbda .getType ());
116115 dataAttribute .setValImport (tbda .isValImport ());
@@ -125,18 +124,14 @@ public Optional<DoLinkedToDa> findDoLinkedToDa(TDataTypeTemplates dtt, String lN
125124 }
126125
127126 @ Override
128- public Stream <String > getEnumValues (TDataTypeTemplates dataTypeTemplates , String lnType , DoLinkedToDaFilter doLinkedToDaFilter ) {
129- return findDoLinkedToDa (dataTypeTemplates , lnType , doLinkedToDaFilter )
130- .map (DoLinkedToDa ::dataAttribute )
131- .filter (dataAttribute -> TPredefinedBasicTypeEnum .ENUM .equals (dataAttribute .getBType ()))
132- .map (DataAttribute ::getType )
133- .flatMap (enumId ->
134- dataTypeTemplates .getEnumType ().stream ()
135- .filter (tEnumType -> tEnumType .getId ().equals (enumId ))
136- .findFirst ())
127+ public List <String > getEnumValues (TDataTypeTemplates dataTypeTemplates , String enumId ) {
128+ return dataTypeTemplates .getEnumType ().stream ()
129+ .filter (tEnumType -> tEnumType .getId ().equals (enumId ))
130+ .findFirst ()
137131 .stream ()
138132 .flatMap (tEnumType -> tEnumType .getEnumVal ().stream ())
139- .map (TEnumVal ::getValue );
133+ .map (TEnumVal ::getValue )
134+ .toList ();
140135 }
141136
142137 private Optional <TDAType > getDATypeByDaName (TDataTypeTemplates dtt , TDOType tdoType , String daName ) {
0 commit comments