Skip to content

Commit 6b61ca0

Browse files
committed
feat(#533): Add ExtRefService.getFilteredExtRefs method
Signed-off-by: massifben <[email protected]>
1 parent 86b4023 commit 6b61ca0

File tree

2 files changed

+36
-3
lines changed

2 files changed

+36
-3
lines changed

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/test/java/org/lfenergy/compas/sct/commons/scl/ExtRefServiceTest.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,28 @@ private static Stream<Arguments> provideLDevices() {
6666
);
6767
}
6868

69+
@Test
70+
void getFilteredExtRefs_should_succeed() {
71+
//Given
72+
TLDevice tlDevice = new TLDevice();
73+
tlDevice.setLN0(new LN0());
74+
TInputs tInputs = new TInputs();
75+
tlDevice.getLN0().setInputs(tInputs);
76+
TExtRef tExtRef1 = new TExtRef();
77+
tExtRef1.setDesc("extref1");
78+
TExtRef tExtRef2 = new TExtRef();
79+
tExtRef2.setDesc("extref2");
80+
tInputs.getExtRef().add(tExtRef1);
81+
tInputs.getExtRef().add(tExtRef2);
82+
// When
83+
Stream<TExtRef> result = extRefService.getFilteredExtRefs(tlDevice, extRef -> extRef.getDesc().equals("extref1"));
84+
// Then
85+
assertThat(result)
86+
.singleElement()
87+
.extracting(TExtRef::getDesc)
88+
.isEqualTo("extref1");
89+
}
90+
6991
@Test
7092
void clearExtRefBinding_should_remove_binding() {
7193
//Given

0 commit comments

Comments
 (0)