Skip to content

Commit 2214d74

Browse files
authored
Merge pull request #536 from com-pas/develop
Release 0.2.46
2 parents d800a48 + 6baa47b commit 2214d74

File tree

14 files changed

+148
-273
lines changed

14 files changed

+148
-273
lines changed

sct-commons/src/main/java/org/lfenergy/compas/sct/commons/DataTypeTemplatesService.java

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,6 @@
1818
import java.util.function.Predicate;
1919
import java.util.stream.Stream;
2020

21-
import static org.lfenergy.compas.sct.commons.util.CommonConstants.MOD_DO_NAME;
22-
import static org.lfenergy.compas.sct.commons.util.CommonConstants.STVAL_DA_NAME;
23-
2421
public class DataTypeTemplatesService implements DataTypeTemplateReader {
2522

2623
final LnodeTypeService lnodeTypeService = new LnodeTypeService();
@@ -31,31 +28,6 @@ public class DataTypeTemplatesService implements DataTypeTemplateReader {
3128
final SdoService sdoService = new SdoService();
3229
final BDAService bdaService = new BDAService();
3330

34-
/**
35-
* verify if DO(name=Mod)/DA(name=stVal) exists in DataTypeTemplate
36-
*
37-
* @param dtt TDataTypeTemplates where Data object and Data attribute exists
38-
* @param lNodeTypeId LNode Type ID where Data object exists
39-
* DataTypeTemplates model :
40-
* <DataTypeTemplates>
41-
* <LNodeType lnClass="LNodeTypeClass" id="LNodeTypeID">
42-
* <DO name="Mod" type="DOModTypeID" ../>
43-
* </LNodeType>
44-
* ...
45-
* <DOType cdc="DOTypeCDC" id="DOModTypeID">
46-
* <DA name="stVal" ../>
47-
* </DOType>
48-
* </DataTypeTemplates>
49-
* @return true if the Data Object (Mod) and Data attribute (stVal) present, false otherwise
50-
*/
51-
public boolean isDoModAndDaStValExist(TDataTypeTemplates dtt, String lNodeTypeId) {
52-
return lnodeTypeService.findLnodeType(dtt, lNodeTypeId)
53-
.flatMap(lNodeType -> doService.findDo(lNodeType, MOD_DO_NAME)
54-
.flatMap(tdo -> doTypeService.findDoType(dtt, tdo.getType())
55-
.map(doType -> daService.findDA(doType, STVAL_DA_NAME).isPresent())))
56-
.orElse(false);
57-
}
58-
5931
@Override
6032
public Stream<DoLinkedToDa> getAllDoLinkedToDa(TDataTypeTemplates dtt) {
6133
return lnodeTypeService.getLnodeTypes(dtt)

sct-commons/src/main/java/org/lfenergy/compas/sct/commons/LdeviceService.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,6 @@ public Stream<TLDevice> getLdevices(TIED tied) {
3333
.flatMap(tServer -> tServer.getLDevice().stream());
3434
}
3535

36-
public Stream<TLDevice> getActiveLdevices(TIED tied) {
37-
return getLdevices(tied)
38-
.filter(ldevice -> getLdeviceStatus(ldevice).map(ActiveStatus.ON::equals).orElse(false));
39-
}
40-
4136
public Stream<TLDevice> getFilteredLdevices(TIED tied, Predicate<TLDevice> ldevicePredicate) {
4237
return getLdevices(tied).filter(ldevicePredicate);
4338
}
@@ -51,6 +46,6 @@ public Optional<TLDevice> findLdevice(TIED tied, String ldInst) {
5146
}
5247

5348
public Optional<ActiveStatus> getLdeviceStatus(TLDevice tlDevice) {
54-
return lnService.getDaiModStValValue(tlDevice.getLN0());
49+
return lnService.getPrivateCompasLNodeStatus(tlDevice.getLN0());
5550
}
5651
}

sct-commons/src/main/java/org/lfenergy/compas/sct/commons/LnService.java

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,14 @@
1919

2020
import static org.lfenergy.compas.sct.commons.util.CommonConstants.MOD_DO_NAME;
2121
import static org.lfenergy.compas.sct.commons.util.CommonConstants.STVAL_DA_NAME;
22+
import static org.lfenergy.compas.sct.commons.util.PrivateUtils.extractStringPrivate;
2223
import static org.lfenergy.compas.sct.commons.util.SclConstructorHelper.newVal;
2324

2425
@Slf4j
2526
public class LnService implements LnEditor {
2627

2728
private static final DoLinkedToDaFilter DAI_FILTER_MOD_STVAL = DoLinkedToDaFilter.from(MOD_DO_NAME, STVAL_DA_NAME);
29+
private static final String LNODE_STATUS_PRIVATE_TYPE = "COMPAS-LNodeStatus";
2830

2931
public Stream<TAnyLN> getAnylns(TLDevice tlDevice) {
3032
return Stream.concat(Stream.of(tlDevice.getLN0()), tlDevice.getLN().stream());
@@ -66,17 +68,22 @@ public boolean matchesLn(TAnyLN tAnyLN, String lnClass, String lnInst, String ln
6668

6769
/**
6870
* The Lnode status depends on the LN0 status.
69-
* If Ln stVAl = null => we take the LN0 status
70-
* If Ln stVAl = OFF => the status is OFF
71-
* If Ln stVAl = ON => we take the LN0 status
71+
* If Ln COMPAS-LNodeStatus is missing => we take the LN0 status
72+
* If Ln COMPAS-LNodeStatus is OFF => the status is OFF
73+
* If Ln COMPAS-LNodeStatus is ON => we take the LN0 status
7274
*
7375
* @param tAnyLN the Lnode whose the status is required
7476
* @param ln0 the LN0
7577
* @return the Lnode Status
7678
*/
77-
public ActiveStatus getLnStatus(TAnyLN tAnyLN, LN0 ln0) {
78-
Optional<ActiveStatus> ln0Status = getDaiModStValValue(ln0);
79-
return getDaiModStValValue(tAnyLN).filter(ActiveStatus.OFF::equals).orElseGet(() -> ln0Status.orElse(ActiveStatus.OFF));
79+
public ActiveStatus getLnStatus(TAnyLN tAnyLN, TLN0 ln0) {
80+
Optional<ActiveStatus> ln0Status = getPrivateCompasLNodeStatus(ln0);
81+
return getPrivateCompasLNodeStatus(tAnyLN).filter(ActiveStatus.OFF::equals)
82+
.orElseGet(() -> ln0Status.orElse(ActiveStatus.OFF));
83+
}
84+
85+
public Optional<ActiveStatus> getPrivateCompasLNodeStatus(TAnyLN tAnyLN) {
86+
return extractStringPrivate(tAnyLN, LNODE_STATUS_PRIVATE_TYPE).map(ActiveStatus::fromValue);
8087
}
8188

8289
public Optional<ActiveStatus> getDaiModStValValue(TAnyLN tAnyLN) {
@@ -92,15 +99,6 @@ public Optional<TDAI> getDaiModStVal(TAnyLN tAnyLN) {
9299
return getDOAndDAInstances(tAnyLN, DAI_FILTER_MOD_STVAL);
93100
}
94101

95-
public Stream<TAnyLN> getActiveLns(TLDevice tlDevice) {
96-
LN0 ln0 = tlDevice.getLN0();
97-
Stream<TLN> tlnStream = tlDevice.getLN()
98-
.stream()
99-
.filter(tln -> ActiveStatus.ON.equals(getLnStatus(tln, ln0)));
100-
Stream<LN0> ln0Stream = Stream.of(ln0).filter(ln02 -> getDaiModStValValue(ln02).map(ActiveStatus.ON::equals).orElse(false));
101-
return Stream.concat(ln0Stream, tlnStream);
102-
}
103-
104102
@Override
105103
public Optional<TDAI> getDOAndDAInstances(TAnyLN tAnyLN, DoLinkedToDaFilter doLinkedToDaFilter) {
106104
List<String> structNamesList = new ArrayList<>(doLinkedToDaFilter.sdoNames());

sct-commons/src/main/java/org/lfenergy/compas/sct/commons/api/DataTypeTemplateReader.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@
1313

1414
public interface DataTypeTemplateReader {
1515

16-
boolean isDoModAndDaStValExist(TDataTypeTemplates dtt, String lNodeTypeId);
17-
1816
Stream<DoLinkedToDa> getAllDoLinkedToDa(TDataTypeTemplates tDataTypeTemplates);
1917

2018
Stream<DoLinkedToDa> getFilteredDoLinkedToDa(TDataTypeTemplates dtt, String lNodeTypeId, DoLinkedToDaFilter doLinkedToDaFilter);

sct-commons/src/main/java/org/lfenergy/compas/sct/commons/scl/ExtRefService.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,15 @@
1616
import java.util.List;
1717
import java.util.Objects;
1818
import java.util.Optional;
19+
import java.util.function.Predicate;
1920
import java.util.stream.Stream;
2021

2122
public class ExtRefService {
2223

2324
/**
2425
* List all ExtRefs in this LDevice
2526
*
26-
* @return list of ExtRefs. List is modifiable.
27+
* @return Stream of ExtRefs
2728
*/
2829
public Stream<TExtRef> getExtRefs(TLDevice tlDevice) {
2930
return getInputs(tlDevice)
@@ -32,6 +33,16 @@ public Stream<TExtRef> getExtRefs(TLDevice tlDevice) {
3233
.flatMap(tInputs -> tInputs.getExtRef().stream());
3334
}
3435

36+
/**
37+
* List ExtRefs in this LDevice that satisfy the given predicate
38+
*
39+
* @return Stream of ExtRefs.
40+
*/
41+
public Stream<TExtRef> getFilteredExtRefs(TLDevice tlDevice, Predicate<TExtRef> tExtRefPredicate) {
42+
return getExtRefs(tlDevice)
43+
.filter(tExtRefPredicate);
44+
}
45+
3546
/**
3647
* Debind ExtRef
3748
*
@@ -61,8 +72,8 @@ public void clearExtRefBinding(TExtRef extRef) {
6172
* @return true if the two ExtRef are fed by same Control Block, otherwise false
6273
*/
6374
public boolean isExtRefFeedBySameControlBlock(TExtRef t1, TExtRef t2) {
64-
String srcLNClass1 = (t1.isSetSrcLNClass()) ? t1.getSrcLNClass().get(0) : TLLN0Enum.LLN_0.value();
65-
String srcLNClass2 = (t2.isSetSrcLNClass()) ? t2.getSrcLNClass().get(0) : TLLN0Enum.LLN_0.value();
75+
String srcLNClass1 = (t1.isSetSrcLNClass()) ? t1.getSrcLNClass().getFirst() : TLLN0Enum.LLN_0.value();
76+
String srcLNClass2 = (t2.isSetSrcLNClass()) ? t2.getSrcLNClass().getFirst() : TLLN0Enum.LLN_0.value();
6677
return Utils.equalsOrBothBlank(t1.getIedName(), t2.getIedName())
6778
&& Utils.equalsOrBothBlank(t1.getSrcLDInst(), t2.getSrcLDInst())
6879
&& srcLNClass1.equals(srcLNClass2)

sct-commons/src/main/java/org/lfenergy/compas/sct/commons/scl/ldevice/LDeviceAdapter.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,6 @@
5454
@Slf4j
5555
public class LDeviceAdapter extends SclElementAdapter<IEDAdapter, TLDevice> {
5656

57-
private static final String DA_SETSRCREF = "setSrcRef";
58-
5957
/**
6058
* Constructor
6159
*
@@ -285,13 +283,6 @@ public Set<DataAttributeRef> getDAI(DataAttributeRef dataAttributeRef, boolean u
285283

286284
}
287285

288-
public Optional<String> getLDeviceStatus() {
289-
if (!hasLN0()) {
290-
return Optional.empty();
291-
}
292-
return getLN0Adapter().getDaiModStValValue();
293-
}
294-
295286
/**
296287
* Gets all LN of LDevice including LN0
297288
*

sct-commons/src/main/java/org/lfenergy/compas/sct/commons/scl/ln/AbstractLNAdapter.java

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,6 @@
2626
import java.util.stream.Collectors;
2727
import java.util.stream.Stream;
2828

29-
import static org.lfenergy.compas.sct.commons.util.CommonConstants.MOD_DO_NAME;
30-
import static org.lfenergy.compas.sct.commons.util.CommonConstants.STVAL_DA_NAME;
31-
3229

3330
/**
3431
* A representation of the model object
@@ -77,8 +74,6 @@
7774
public abstract class AbstractLNAdapter<T extends TAnyLN> extends SclElementAdapter<LDeviceAdapter, T> {
7875

7976

80-
public static final DoTypeName MOD_DO_TYPE_NAME = new DoTypeName(MOD_DO_NAME);
81-
public static final DaTypeName STVAL_DA_TYPE_NAME = new DaTypeName(STVAL_DA_NAME);
8277
private static final int CONTROLBLOCK_ID_MAX_LENGTH = 14;
8378

8479
/**
@@ -992,19 +987,4 @@ public List<TFCDA> getFCDAs(TExtRef tExtRef) {
992987
.toList();
993988
}
994989

995-
/**
996-
* Get the value of "Mod.stVal" of the current LN
997-
*
998-
* @return Mod.stVal value if present, else empty Optional
999-
*/
1000-
public Optional<String> getDaiModStValValue() {
1001-
return getDaiModStVal()
1002-
.flatMap(DataAttributeRef::findFirstValue);
1003-
}
1004-
1005-
protected Optional<DataAttributeRef> getDaiModStVal() {
1006-
DataAttributeRef daiModFilter = new DataAttributeRef(this, MOD_DO_TYPE_NAME, STVAL_DA_TYPE_NAME);
1007-
return getDAI(daiModFilter, false).stream()
1008-
.findFirst();
1009-
}
1010990
}

sct-commons/src/test/java/org/lfenergy/compas/sct/commons/DataTypeTemplatesServiceTest.java

Lines changed: 0 additions & 110 deletions
Original file line numberDiff line numberDiff line change
@@ -31,116 +31,6 @@ void setUp() {
3131
dataTypeTemplatesService = new DataTypeTemplatesService();
3232
}
3333

34-
@Test
35-
void isDoModAndDaStValExist_when_LNodeType_not_exist_should_return_false() {
36-
//Given
37-
TDataTypeTemplates dtt = new TDataTypeTemplates();
38-
//When
39-
boolean result = dataTypeTemplatesService.isDoModAndDaStValExist(dtt, "lnodeTypeId");
40-
//Then
41-
assertThat(result).isFalse();
42-
}
43-
44-
45-
@Test
46-
void isDoModAndDaStValExist_when_Do_not_exist_should_return_false() {
47-
//Given
48-
TDataTypeTemplates dtt = new TDataTypeTemplates();
49-
TLNodeType tlNodeType = new TLNodeType();
50-
tlNodeType.setId("lnodeTypeId");
51-
dtt.getLNodeType().add(tlNodeType);
52-
//When
53-
boolean result = dataTypeTemplatesService.isDoModAndDaStValExist(dtt, "lnodeTypeId");
54-
//Then
55-
assertThat(result).isFalse();
56-
}
57-
58-
@Test
59-
void isDoModAndDaStValExist_when_DoType_not_exist_should_return_false() {
60-
//Given
61-
TDataTypeTemplates dtt = new TDataTypeTemplates();
62-
TLNodeType tlNodeType = new TLNodeType();
63-
tlNodeType.setId("lnodeTypeId");
64-
TDO tdo = new TDO();
65-
tdo.setType("doTypeId");
66-
tdo.setName("Mod");
67-
tlNodeType.getDO().add(tdo);
68-
dtt.getLNodeType().add(tlNodeType);
69-
//When
70-
boolean result = dataTypeTemplatesService.isDoModAndDaStValExist(dtt, "lnodeTypeId");
71-
//Then
72-
assertThat(result).isFalse();
73-
}
74-
75-
76-
@Test
77-
void isDoModAndDaStValExist_when_Da_Mod_not_exist_should_return_false() {
78-
//Given
79-
TDataTypeTemplates dtt = new TDataTypeTemplates();
80-
TLNodeType tlNodeType = new TLNodeType();
81-
tlNodeType.setId("lnodeTypeId");
82-
TDO tdo = new TDO();
83-
tdo.setType("doTypeId");
84-
tdo.setName("Mod");
85-
tlNodeType.getDO().add(tdo);
86-
dtt.getLNodeType().add(tlNodeType);
87-
TDOType tdoType = new TDOType();
88-
tdoType.setId("doTypeId");
89-
dtt.getDOType().add(tdoType);
90-
//When
91-
boolean result = dataTypeTemplatesService.isDoModAndDaStValExist(dtt, "lnodeTypeId");
92-
//Then
93-
assertThat(result).isFalse();
94-
}
95-
96-
97-
@Test
98-
void isDoModAndDaStValExist_when_Da_stVal_not_found_should_return_false() {
99-
//Given
100-
TDataTypeTemplates dtt = new TDataTypeTemplates();
101-
TLNodeType tlNodeType = new TLNodeType();
102-
tlNodeType.setId("lnodeTypeId");
103-
TDO tdo = new TDO();
104-
tdo.setType("doTypeId");
105-
tdo.setName("Mod");
106-
tlNodeType.getDO().add(tdo);
107-
dtt.getLNodeType().add(tlNodeType);
108-
TDOType tdoType = new TDOType();
109-
tdoType.setId("doTypeId");
110-
TDA tda = new TDA();
111-
tda.setName("daName");
112-
tdoType.getSDOOrDA().add(tda);
113-
dtt.getDOType().add(tdoType);
114-
//When
115-
boolean result = dataTypeTemplatesService.isDoModAndDaStValExist(dtt, "lnodeTypeId");
116-
//Then
117-
assertThat(result).isFalse();
118-
}
119-
120-
121-
@Test
122-
void isDoModAndDaStValExist_when_DO_Mod_And_DA_stVal_exist_return_true() {
123-
//Given
124-
TDataTypeTemplates dtt = new TDataTypeTemplates();
125-
TLNodeType tlNodeType = new TLNodeType();
126-
tlNodeType.setId("lnodeTypeId");
127-
TDO tdo = new TDO();
128-
tdo.setType("doTypeId");
129-
tdo.setName("Mod");
130-
tlNodeType.getDO().add(tdo);
131-
dtt.getLNodeType().add(tlNodeType);
132-
TDOType tdoType = new TDOType();
133-
tdoType.setId("doTypeId");
134-
TDA tda = new TDA();
135-
tda.setName("stVal");
136-
tdoType.getSDOOrDA().add(tda);
137-
dtt.getDOType().add(tdoType);
138-
//When
139-
boolean result = dataTypeTemplatesService.isDoModAndDaStValExist(dtt, "lnodeTypeId");
140-
//Then
141-
assertThat(result).isTrue();
142-
}
143-
14434
@Test
14535
void getFilteredDoLinkedToDa_should_return_expected_items() {
14636
//Given

0 commit comments

Comments
 (0)