From 2fec3183a4f56d71ff3cf5f7e8a1420ee9ace665 Mon Sep 17 00:00:00 2001 From: gleizesDor <115622893+gleizesDor@users.noreply.github.com> Date: Fri, 18 Oct 2024 14:38:54 +0200 Subject: [PATCH] feat(#436): Add ConnectedAPService and SubnetworkService Signed-off-by: gleizesDor <115622893+gleizesDor@users.noreply.github.com> --- .../sct/commons/ConnectedAPService.java | 31 +++++++++++++++++ .../compas/sct/commons/SubNetworkService.java | 34 +++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 sct-commons/src/main/java/org/lfenergy/compas/sct/commons/ConnectedAPService.java create mode 100644 sct-commons/src/main/java/org/lfenergy/compas/sct/commons/SubNetworkService.java diff --git a/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/ConnectedAPService.java b/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/ConnectedAPService.java new file mode 100644 index 000000000..ae2b946af --- /dev/null +++ b/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/ConnectedAPService.java @@ -0,0 +1,31 @@ +// SPDX-FileCopyrightText: 2023 RTE FRANCE +// +// SPDX-License-Identifier: Apache-2.0 + +package org.lfenergy.compas.sct.commons; + +import org.lfenergy.compas.scl2007b4.model.TConnectedAP; +import org.lfenergy.compas.scl2007b4.model.TSubNetwork; + +import java.util.Optional; +import java.util.function.Predicate; +import java.util.stream.Stream; + +public class ConnectedAPService { + + public Stream getConnectedAP(TSubNetwork tSubNetwork) { + if (!tSubNetwork.isSetConnectedAP()) { + return Stream.empty(); + } + return tSubNetwork.getConnectedAP().stream(); + } + + public Stream getFilteredConnectedAP(TSubNetwork tSubNetwork, Predicate tConnectedAPPredicate) { + return getConnectedAP(tSubNetwork).filter(tConnectedAPPredicate); + } + + public Optional findConnectedAP(TSubNetwork tSubNetwork, Predicate tConnectedAPPredicate) { + return getFilteredConnectedAP(tSubNetwork, tConnectedAPPredicate).findFirst(); + } + +} diff --git a/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/SubNetworkService.java b/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/SubNetworkService.java new file mode 100644 index 000000000..4dee868bc --- /dev/null +++ b/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/SubNetworkService.java @@ -0,0 +1,34 @@ +// SPDX-FileCopyrightText: 2023 RTE FRANCE +// +// SPDX-License-Identifier: Apache-2.0 + +package org.lfenergy.compas.sct.commons; + +import org.lfenergy.compas.scl2007b4.model.TSubNetwork; +import org.lfenergy.compas.scl2007b4.model.SCL; + +import java.util.Optional; +import java.util.function.Predicate; +import java.util.stream.Stream; + +public class SubNetworkService { + + public Stream getSubNetworks(SCL scl) { + if (!scl.isSetCommunication()) { + return Stream.empty(); + } + if (!scl.getCommunication().isSetSubNetwork()) { + return Stream.empty(); + } + return scl.getCommunication().getSubNetwork().stream(); + } + + public Stream getFilteredSubNetworks(SCL tlNodeType, Predicate tdoPredicate) { + return getSubNetworks(tlNodeType).filter(tdoPredicate); + } + + public Optional findSubNetwork(SCL tlNodeType, Predicate tdoPredicate) { + return getFilteredSubNetworks(tlNodeType, tdoPredicate).findFirst(); + } + +}