1212import org .lfenergy .compas .sct .commons .util .ActiveStatus ;
1313
1414import java .util .ArrayList ;
15- import java .util .Collection ;
1615import java .util .List ;
1716import java .util .Optional ;
1817import java .util .function .Predicate ;
2524@ Slf4j
2625public class LnService implements LnEditor {
2726
27+ private static final DoLinkedToDaFilter DAI_FILTER_MOD_STVAL = DoLinkedToDaFilter .from (MOD_DO_NAME , STVAL_DA_NAME );
28+
2829 public Stream <TAnyLN > getAnylns (TLDevice tlDevice ) {
2930 return Stream .concat (Stream .of (tlDevice .getLN0 ()), tlDevice .getLN ().stream ());
3031 }
@@ -60,33 +61,29 @@ public Optional<TLN> findLn(TLDevice tlDevice, Predicate<TLN> lnPredicate) {
6061 * @return the Lnode Status
6162 */
6263 public ActiveStatus getLnStatus (TAnyLN tAnyLN , LN0 ln0 ) {
63- Optional <ActiveStatus > ln0Status = getDaiModStval (ln0 );
64- return getDaiModStval (tAnyLN ).filter (ActiveStatus .OFF ::equals ).orElseGet (() -> ln0Status .orElse (ActiveStatus .OFF ));
64+ Optional <ActiveStatus > ln0Status = getDaiModStValValue (ln0 );
65+ return getDaiModStValValue (tAnyLN ).filter (ActiveStatus .OFF ::equals ).orElseGet (() -> ln0Status .orElse (ActiveStatus .OFF ));
6566 }
6667
67- public Optional <ActiveStatus > getDaiModStval (TAnyLN tAnyLN ) {
68- return tAnyLN
69- .getDOI ()
68+ public Optional <ActiveStatus > getDaiModStValValue (TAnyLN tAnyLN ) {
69+ return getDaiModStVal (tAnyLN )
7070 .stream ()
71- .filter (tdoi -> MOD_DO_NAME .equals (tdoi .getName ()))
71+ .flatMap (tdai -> tdai .getVal ().stream ())
72+ .map (TVal ::getValue )
7273 .findFirst ()
73- .flatMap (tdoi -> tdoi .getSDIOrDAI ()
74- .stream ()
75- .filter (dai -> dai .getClass ().equals (TDAI .class ))
76- .map (TDAI .class ::cast )
77- .filter (tdai -> STVAL_DA_NAME .equals (tdai .getName ()))
78- .map (TDAI ::getVal )
79- .flatMap (Collection ::stream )
80- .findFirst ()
81- .map (TVal ::getValue ))
8274 .map (ActiveStatus ::fromValue );
8375 }
76+
77+ public Optional <TDAI > getDaiModStVal (TAnyLN tAnyLN ) {
78+ return getDOAndDAInstances (tAnyLN , DAI_FILTER_MOD_STVAL );
79+ }
80+
8481 public Stream <TAnyLN > getActiveLns (TLDevice tlDevice ) {
8582 LN0 ln0 = tlDevice .getLN0 ();
8683 Stream <TLN > tlnStream = tlDevice .getLN ()
8784 .stream ()
8885 .filter (tln -> ActiveStatus .ON .equals (getLnStatus (tln , ln0 )));
89- Stream <LN0 > ln0Stream = Stream .of (ln0 ).filter (ln02 -> getDaiModStval (ln02 ).map (ActiveStatus .ON ::equals ).orElse (false ));
86+ Stream <LN0 > ln0Stream = Stream .of (ln0 ).filter (ln02 -> getDaiModStValValue (ln02 ).map (ActiveStatus .ON ::equals ).orElse (false ));
9087 return Stream .concat (ln0Stream , tlnStream );
9188 }
9289
@@ -99,7 +96,7 @@ public Optional<TDAI> getDOAndDAInstances(TAnyLN tAnyLN, DoLinkedToDaFilter doLi
9996 return tAnyLN .getDOI ().stream ().filter (doi -> doi .getName ().equals (doLinkedToDaFilter .doName ()))
10097 .findFirst ()
10198 .flatMap (doi -> {
102- if (structNamesList .size () > 1 ) {
99+ if (structNamesList .size () > 1 ) {
103100 String firstSDIName = structNamesList .removeFirst ();
104101 return this .getSdiByName (doi , firstSDIName )
105102 .map (intermediateSdi -> findSDIByStructName (intermediateSdi , structNamesList ))
@@ -116,7 +113,7 @@ public Optional<TDAI> getDOAndDAInstances(TAnyLN tAnyLN, DoLinkedToDaFilter doLi
116113 return Optional .empty ();
117114 })
118115 .stream ().findFirst ();
119- } else if (structNamesList .size () == 1 ){
116+ } else if (structNamesList .size () == 1 ) {
120117 return doi .getSDIOrDAI ().stream ()
121118 .filter (unNaming -> unNaming .getClass ().equals (TDAI .class ))
122119 .map (TDAI .class ::cast )
@@ -138,7 +135,7 @@ public void updateOrCreateDOAndDAInstances(TAnyLN tAnyLN, DoLinkedToDa doLinkedT
138135 .ifPresentOrElse (tVal -> tVal .setValue (value ),
139136 () -> tdai .getVal ().add (newVal (value )));
140137 } else {
141- for (DaVal daVal : daiVals ) {
138+ for (DaVal daVal : daiVals ) {
142139 tdai .getVal ().stream ()
143140 .filter (tValElem -> tValElem .isSetSGroup () && tValElem .getSGroup () == daVal .settingGroup ())
144141 .findFirst ()
@@ -198,22 +195,22 @@ private Optional<TDAI> createDoiSdiDaiChainIfNotExists(TAnyLN tAnyLN, DataObject
198195
199196 TDOI doi = tAnyLN .getDOI ().stream ().filter (doi1 -> doi1 .getName ().equals (dataObject .getDoName ()))
200197 .findFirst ()
201- .orElseGet (()-> {
198+ .orElseGet (() -> {
202199 TDOI newDOI = new TDOI ();
203200 newDOI .setName (dataObject .getDoName ());
204201 tAnyLN .getDOI ().add (newDOI );
205202 return newDOI ;
206203 });
207- if (structInstances .size () > 1 ){
204+ if (structInstances .size () > 1 ) {
208205 TSDI firstSDI = findOrCreateSDIFromDOI (doi , structInstances .getFirst ());
209206 TSDI lastSDI = findOrCreateSDIByStructName (firstSDI , structInstances );
210- if (structInstances .size () == 1 ){
207+ if (structInstances .size () == 1 ) {
211208 return lastSDI .getSDIOrDAI ().stream ()
212209 .filter (tUnNaming -> tUnNaming .getClass ().equals (TDAI .class ))
213210 .map (TDAI .class ::cast )
214211 .filter (tdai -> tdai .getName ().equals (structInstances .getFirst ()))
215212 .map (tdai -> {
216- if (tdai .isSetValImport ()) {
213+ if (tdai .isSetValImport ()) {
217214 tdai .setValImport (dataAttribute .isValImport ());
218215 }
219216 return tdai ;
@@ -226,13 +223,13 @@ private Optional<TDAI> createDoiSdiDaiChainIfNotExists(TAnyLN tAnyLN, DataObject
226223 return Optional .of (newDAI );
227224 });
228225 }
229- } else if (structInstances .size () == 1 ){
226+ } else if (structInstances .size () == 1 ) {
230227 return doi .getSDIOrDAI ().stream ()
231228 .filter (tUnNaming -> tUnNaming .getClass ().equals (TDAI .class ))
232229 .map (TDAI .class ::cast )
233230 .filter (tdai -> tdai .getName ().equals (structInstances .getFirst ()))
234231 .map (tdai -> {
235- if (tdai .isSetValImport ()) tdai .setValImport (dataAttribute .isValImport ());
232+ if (tdai .isSetValImport ()) tdai .setValImport (dataAttribute .isValImport ());
236233 return tdai ;
237234 })
238235 .findFirst ()
@@ -247,7 +244,7 @@ private Optional<TDAI> createDoiSdiDaiChainIfNotExists(TAnyLN tAnyLN, DataObject
247244 }
248245
249246 private TSDI findSDIByStructName (TSDI tsdi , List <String > sdiNames ) {
250- if (sdiNames .isEmpty ()) return tsdi ;
247+ if (sdiNames .isEmpty ()) return tsdi ;
251248 return this .getSdiByName (tsdi , sdiNames .getFirst ())
252249 .map (sdi1 -> {
253250 sdiNames .removeFirst ();
@@ -294,14 +291,13 @@ private Optional<TSDI> getSdiByName(TSDI sdi, String sdiName) {
294291 }
295292
296293 /**
297- *
298- * @param sdi TSDI
294+ * @param sdi TSDI
299295 * @param structName list start with sdi name
300296 * @return already existing TSDI or newly created TSDI from given TSDI
301297 */
302298 private TSDI findOrCreateSDIByStructName (TSDI sdi , List <String > structName ) {
303299 structName .removeFirst ();
304- if (structName .isEmpty () || structName .size () == 1 ) return sdi ;
300+ if (structName .isEmpty () || structName .size () == 1 ) return sdi ;
305301 return findOrCreateSDIByStructName (findOrCreateSDIFromSDI (sdi , structName .getFirst ()), structName );
306302 }
307303
0 commit comments