From: manuedelf Date: Tue, 15 Dec 2020 07:17:39 +0000 (+0100) Subject: Add methods to GridUtils X-Git-Tag: 3.0.0~53 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=transportpce.git;a=commitdiff_plain;h=fc15c8b20ed092a190f216add9abed52b112df2b;hp=aae91d432b783e3cf92ac50215bfb785c7efe873 Add methods to GridUtils Add getCentralFrequencyWithPrecision and computeCentralFrequency. JIRA: TRNSPRTPCE-230 Signed-off-by: manuedelf Change-Id: I2a451124344082dbf1fbb5bd5ff8e1d31e717c47 --- diff --git a/common/src/main/java/org/opendaylight/transportpce/common/fixedflex/GridUtils.java b/common/src/main/java/org/opendaylight/transportpce/common/fixedflex/GridUtils.java index a3d13b22b..3e8bdafae 100644 --- a/common/src/main/java/org/opendaylight/transportpce/common/fixedflex/GridUtils.java +++ b/common/src/main/java/org/opendaylight/transportpce/common/fixedflex/GridUtils.java @@ -9,6 +9,7 @@ package org.opendaylight.transportpce.common.fixedflex; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.Arrays; import java.util.HashMap; import java.util.Map; @@ -107,7 +108,7 @@ public final class GridUtils { if (width == null) { LOG.warn("No width found for service rate {} and modulation format {}, set width to 40", rate, modulationFormat); - width = "40"; + width = String.valueOf(GridConstant.WIDTH_40); } return FrequencyGHz.getDefaultInstance(width); } @@ -119,8 +120,32 @@ public final class GridUtils { * @return central frequency in THz */ public static FrequencyTHz getCentralFrequency(BigDecimal minFrequency, BigDecimal maxFrequency) { - return new FrequencyTHz(minFrequency.add(maxFrequency).divide(BigDecimal.valueOf(2))); + return new FrequencyTHz(computeCentralFrequency(minFrequency, maxFrequency)); } + /** + * Get central frequency of spectrum with precision. + * @param minFrequency BigDecimal + * @param maxFrequency BigDecimal + * @param precision int + * @return central frequency in THz with precision + */ + public static FrequencyTHz getCentralFrequencyWithPrecision(BigDecimal minFrequency, + BigDecimal maxFrequency, int precision) { + return new FrequencyTHz(computeCentralFrequency(minFrequency, maxFrequency) + .setScale(precision, RoundingMode.HALF_EVEN)); + + } + + /** + * Compute central frequency from min and max frequency. + * @param minFrequency BigDecimal + * @param maxFrequency BigDecimal + * @return central frequency + */ + private static BigDecimal computeCentralFrequency(BigDecimal minFrequency, BigDecimal maxFrequency) { + return minFrequency.add(maxFrequency).divide(BigDecimal.valueOf(2)); + } + } diff --git a/common/src/test/java/org/opendaylight/transportpce/common/fixedflex/GridUtilsTest.java b/common/src/test/java/org/opendaylight/transportpce/common/fixedflex/GridUtilsTest.java index 3e7ed5835..8f9f5f9ad 100644 --- a/common/src/test/java/org/opendaylight/transportpce/common/fixedflex/GridUtilsTest.java +++ b/common/src/test/java/org/opendaylight/transportpce/common/fixedflex/GridUtilsTest.java @@ -77,14 +77,14 @@ public class GridUtilsTest { @Test public void getWidthFromRateAndModulationFormatTest() { - assertEquals("Width should be 80", FrequencyGHz.getDefaultInstance("80"), + assertEquals("Width should be 80", new FrequencyGHz(GridConstant.WIDTH_80), GridUtils.getWidthFromRateAndModulationFormat(ServiceRateConstant.RATE_400, ModulationFormat.DpQam16)); } @Test public void getWidthFromRateAndModulationFormatNotFoundTest() { - assertEquals("As not found width should be 40", FrequencyGHz.getDefaultInstance("40"), + assertEquals("As not found width should be 40", new FrequencyGHz(GridConstant.WIDTH_40), GridUtils.getWidthFromRateAndModulationFormat(ServiceRateConstant.RATE_100, ModulationFormat.DpQam16)); } @@ -95,4 +95,20 @@ public class GridUtilsTest { new FrequencyTHz(BigDecimal.valueOf(191.35).setScale(3)), GridUtils.getCentralFrequency(BigDecimal.valueOf(191.325), BigDecimal.valueOf(191.375))); } + + @Test + public void getCentralFrequencyWithPrecisionTest() { + assertEquals("Central frequency should be 191.3500", + new FrequencyTHz(BigDecimal.valueOf(191.35).setScale(4)), + GridUtils.getCentralFrequencyWithPrecision(BigDecimal.valueOf(191.325), + BigDecimal.valueOf(191.375), 4)); + } + + @Test + public void getCentralFrequencyWithPrecisionAndRoundTest() { + assertEquals("Central frequency should be 191.3499", + new FrequencyTHz(BigDecimal.valueOf(191.3499)), + GridUtils.getCentralFrequencyWithPrecision(BigDecimal.valueOf(191.3244445), + BigDecimal.valueOf(191.3754457788), 4)); + } }