Skip to content

Commit

Permalink
feat(#458): Add PrivateUtils.extractStringPrivate
Browse files Browse the repository at this point in the history
Signed-off-by: massifben <105049157+massifben@users.noreply.github.com>
  • Loading branch information
massifben committed Jan 22, 2025
1 parent 1f64b6d commit 00becba
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import jakarta.xml.bind.JAXBElement;
import lombok.NonNull;
import lombok.experimental.UtilityClass;
import org.apache.commons.lang3.StringUtils;
import org.lfenergy.compas.scl2007b4.model.*;
import org.lfenergy.compas.sct.commons.dto.PrivateLinkedToStds;
import org.lfenergy.compas.sct.commons.exception.ScdException;
Expand Down Expand Up @@ -269,7 +270,7 @@ public static String stdCheckFormatExceptionMessage(TPrivate key) throws ScdExce
public static Stream<IcdHeader> streamIcdHeaders(SCL scd) {
return scd
.getSubstation()
.get(0)
.getFirst()
.getVoltageLevel()
.stream()
.map(TVoltageLevel::getBay).flatMap(Collection::stream)
Expand Down Expand Up @@ -320,4 +321,13 @@ public static void copyCompasICDHeaderFromLNodePrivateIntoSTDPrivate(TPrivate st
}


public static Optional<String> extractStringPrivate(TBaseElement tBaseElement, String privateType) {
return tBaseElement.getPrivate().stream()
.filter(tPrivate -> privateType.equals(tPrivate.getType()))
.flatMap(tPrivate -> tPrivate.getContent().stream())
.filter(String.class::isInstance)
.map(String.class::cast)
.filter(StringUtils::isNotBlank)
.findFirst();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ void createPrivate_should_return_private_new_private(Object compasElement) throw
assertThat(resultPrivate).isNotNull()
.hasFieldOrPropertyWithValue("type", privateEnum.getPrivateType());
assertThat(resultPrivate.getContent()).hasSize(1).first().satisfies(content -> assertThat(content).isInstanceOf(JAXBElement.class));
JAXBElement<?> content = (JAXBElement<?>) resultPrivate.getContent().get(0);
JAXBElement<?> content = (JAXBElement<?>) resultPrivate.getContent().getFirst();
assertThat(content.isNil()).isFalse();
assertThat(content.getValue()).isNotNull().isInstanceOf(compasElement.getClass())
.isEqualTo(compasElement);
Expand Down Expand Up @@ -258,10 +258,10 @@ void removePrivates_should_remove_privates_of_given_type() {
PrivateUtils.removePrivates(baseElement, PrivateEnum.COMPAS_ICDHEADER);
// Then
assertThat(baseElement.getPrivate()).hasSize(1);
TPrivate tPrivate = baseElement.getPrivate().get(0);
TPrivate tPrivate = baseElement.getPrivate().getFirst();
assertThat(tPrivate.getType()).isEqualTo(privateSCD.getType());
assertThat(tPrivate.getContent()).hasSize(1).first().isInstanceOf(JAXBElement.class);
JAXBElement<?> jaxbElement = (JAXBElement<?>) tPrivate.getContent().get(0);
JAXBElement<?> jaxbElement = (JAXBElement<?>) tPrivate.getContent().getFirst();
assertThat(jaxbElement.isNil()).isFalse();
assertThat(jaxbElement.getValue()).isEqualTo(TCompasSclFileType.SCD);
}
Expand Down Expand Up @@ -561,7 +561,7 @@ void copyCompasICDHeaderFromLNodePrivateIntoSTDPrivate() {
PrivateUtils.copyCompasICDHeaderFromLNodePrivateIntoSTDPrivate(stdTPrivate, lNodeCompasICDHeader);

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

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

@Test
Expand All @@ -630,4 +630,18 @@ void createPrivate_compas_Topo_should_succeed(){
.map(JAXBElement::getValue)
.containsExactly(tCompasTopo1, tCompasTopo2);
}

@Test
void extractStringPrivate_should_succeed() {
// Given
TIED tied = new TIED();
TPrivate tPrivate = new TPrivate();
tPrivate.setType("MyCustomType");
tPrivate.getContent().add("hello World");
tied.getPrivate().add(tPrivate);
// When
Optional<String> result = PrivateUtils.extractStringPrivate(tied, "MyCustomType");
// Then
assertThat(result).hasValue("hello World");
}
}

0 comments on commit 00becba

Please sign in to comment.