Skip to content

Commit 00becba

Browse files
committed
feat(#458): Add PrivateUtils.extractStringPrivate
Signed-off-by: massifben <[email protected]>
1 parent 1f64b6d commit 00becba

File tree

2 files changed

+30
-6
lines changed

2 files changed

+30
-6
lines changed

sct-commons/src/main/java/org/lfenergy/compas/sct/commons/util/PrivateUtils.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import jakarta.xml.bind.JAXBElement;
88
import lombok.NonNull;
99
import lombok.experimental.UtilityClass;
10+
import org.apache.commons.lang3.StringUtils;
1011
import org.lfenergy.compas.scl2007b4.model.*;
1112
import org.lfenergy.compas.sct.commons.dto.PrivateLinkedToStds;
1213
import org.lfenergy.compas.sct.commons.exception.ScdException;
@@ -269,7 +270,7 @@ public static String stdCheckFormatExceptionMessage(TPrivate key) throws ScdExce
269270
public static Stream<IcdHeader> streamIcdHeaders(SCL scd) {
270271
return scd
271272
.getSubstation()
272-
.get(0)
273+
.getFirst()
273274
.getVoltageLevel()
274275
.stream()
275276
.map(TVoltageLevel::getBay).flatMap(Collection::stream)
@@ -320,4 +321,13 @@ public static void copyCompasICDHeaderFromLNodePrivateIntoSTDPrivate(TPrivate st
320321
}
321322

322323

324+
public static Optional<String> extractStringPrivate(TBaseElement tBaseElement, String privateType) {
325+
return tBaseElement.getPrivate().stream()
326+
.filter(tPrivate -> privateType.equals(tPrivate.getType()))
327+
.flatMap(tPrivate -> tPrivate.getContent().stream())
328+
.filter(String.class::isInstance)
329+
.map(String.class::cast)
330+
.filter(StringUtils::isNotBlank)
331+
.findFirst();
323332
}
333+
}

sct-commons/src/test/java/org/lfenergy/compas/sct/commons/util/PrivateUtilsTest.java

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ void createPrivate_should_return_private_new_private(Object compasElement) throw
198198
assertThat(resultPrivate).isNotNull()
199199
.hasFieldOrPropertyWithValue("type", privateEnum.getPrivateType());
200200
assertThat(resultPrivate.getContent()).hasSize(1).first().satisfies(content -> assertThat(content).isInstanceOf(JAXBElement.class));
201-
JAXBElement<?> content = (JAXBElement<?>) resultPrivate.getContent().get(0);
201+
JAXBElement<?> content = (JAXBElement<?>) resultPrivate.getContent().getFirst();
202202
assertThat(content.isNil()).isFalse();
203203
assertThat(content.getValue()).isNotNull().isInstanceOf(compasElement.getClass())
204204
.isEqualTo(compasElement);
@@ -258,10 +258,10 @@ void removePrivates_should_remove_privates_of_given_type() {
258258
PrivateUtils.removePrivates(baseElement, PrivateEnum.COMPAS_ICDHEADER);
259259
// Then
260260
assertThat(baseElement.getPrivate()).hasSize(1);
261-
TPrivate tPrivate = baseElement.getPrivate().get(0);
261+
TPrivate tPrivate = baseElement.getPrivate().getFirst();
262262
assertThat(tPrivate.getType()).isEqualTo(privateSCD.getType());
263263
assertThat(tPrivate.getContent()).hasSize(1).first().isInstanceOf(JAXBElement.class);
264-
JAXBElement<?> jaxbElement = (JAXBElement<?>) tPrivate.getContent().get(0);
264+
JAXBElement<?> jaxbElement = (JAXBElement<?>) tPrivate.getContent().getFirst();
265265
assertThat(jaxbElement.isNil()).isFalse();
266266
assertThat(jaxbElement.getValue()).isEqualTo(TCompasSclFileType.SCD);
267267
}
@@ -561,7 +561,7 @@ void copyCompasICDHeaderFromLNodePrivateIntoSTDPrivate() {
561561
PrivateUtils.copyCompasICDHeaderFromLNodePrivateIntoSTDPrivate(stdTPrivate, lNodeCompasICDHeader);
562562

563563
// Then
564-
TCompasICDHeader result = PrivateUtils.extractCompasICDHeader(stdTPrivate).get();
564+
TCompasICDHeader result = PrivateUtils.extractCompasICDHeader(stdTPrivate).orElseThrow();
565565
assertThat(result).extracting(TCompasICDHeader::getICDSystemVersionUUID, TCompasICDHeader::getIEDName,
566566
TCompasICDHeader::getIEDSubstationinstance, TCompasICDHeader::getBayLabel)
567567
.containsExactlyInAnyOrder("UUID-2", "IED-1", BigInteger.ONE, "BAY-1");
@@ -613,7 +613,7 @@ void getCompasICDHeaders_should_return_ICDHeaders() {
613613

614614
private static TIED createTIED() {
615615
SCL sclFromFile = SclTestMarshaller.getSCLFromFile("/scd-ied-dtt-com-import-stds/std.xml");
616-
return sclFromFile.getIED().get(0);
616+
return sclFromFile.getIED().getFirst();
617617
}
618618

619619
@Test
@@ -630,4 +630,18 @@ void createPrivate_compas_Topo_should_succeed(){
630630
.map(JAXBElement::getValue)
631631
.containsExactly(tCompasTopo1, tCompasTopo2);
632632
}
633+
634+
@Test
635+
void extractStringPrivate_should_succeed() {
636+
// Given
637+
TIED tied = new TIED();
638+
TPrivate tPrivate = new TPrivate();
639+
tPrivate.setType("MyCustomType");
640+
tPrivate.getContent().add("hello World");
641+
tied.getPrivate().add(tPrivate);
642+
// When
643+
Optional<String> result = PrivateUtils.extractStringPrivate(tied, "MyCustomType");
644+
// Then
645+
assertThat(result).hasValue("hello World");
646+
}
633647
}

0 commit comments

Comments
 (0)