+ public List<AvailablePayloadStructure> createAvailablePayloadStructureForPhtncMedia(Boolean otsiProvisioned,
+ Collection<SupportedInterfaceCapability> sicList, List<OperationalModeKey> supportedOpModes) {
+ if (supportedOpModes == null || supportedOpModes.isEmpty()) {
+ return null;
+ }
+ Integer nepRate = 0;
+ Integer loopRate = 0;
+ for (OperationalModeKey operationalMode : supportedOpModes) {
+ if (operationalMode.toString().contains("800G")) {
+ loopRate = 8;
+ } else if (operationalMode.toString().contains("600G")) {
+ loopRate = 6;
+ } else if (operationalMode.toString().contains("400G")) {
+ loopRate = 4;
+ } else if (operationalMode.toString().contains("300G")) {
+ loopRate = 3;
+ } else if (operationalMode.toString().contains("200G")) {
+ loopRate = 2;
+ } else if (operationalMode.toString().contains("100G")) {
+ loopRate = 1;
+ }
+ if (loopRate >= nepRate) {
+ nepRate = loopRate;
+ }
+ }
+ CapacityBuilder capBd = new CapacityBuilder()
+ .setUnit(CAPACITYUNITGBPS.VALUE);
+ List<AvailablePayloadStructure> aps = new ArrayList<>();
+ Integer cepInstanceNber = 1;
+ if (otsiProvisioned) {
+ cepInstanceNber = 0;
+ }
+ for (SupportedInterfaceCapability sic : sicList) {
+ String ifCapType = sic.getIfCapType().toString().split("\\{")[0];
+ switch (ifCapType) {
+ case "IfOCHOTU4ODU4":
+ case "IfOCHOTU4ODU4Regen":
+ case "IfOCHOTU4ODU4Uniregen":
+ aps.add(new AvailablePayloadStructureBuilder()
+ .setMultiplexingSequence(Set.of(PHOTONICLAYERQUALIFIEROTSi.VALUE, ODUTYPEODU4.VALUE))
+ .setNumberOfCepInstances(Uint64.valueOf(cepInstanceNber))
+ .setCapacity(capBd.setValue(Decimal64.valueOf(100.0 * cepInstanceNber, RoundingMode.DOWN))
+ .build())
+ .build());
+ break;
+ case "IfOCHOTUCnODUCn":
+ case "IfOtsiOtucnOducn":
+ case "IfOCHOTUCnODUCnRegen":
+ case "IfOCHOTUCnODUCnUniregen":
+ aps.add(new AvailablePayloadStructureBuilder()
+ .setMultiplexingSequence(Set.of(PHOTONICLAYERQUALIFIEROTSi.VALUE, OTUTYPEOTUCN.VALUE,
+ ODUTYPEODUCN.VALUE, ODUTYPEODU4.VALUE))
+ .setNumberOfCepInstances(Uint64.valueOf(nepRate * cepInstanceNber))
+ .setCapacity(
+ capBd.setValue(Decimal64.valueOf(nepRate * 100.0 * cepInstanceNber, RoundingMode.DOWN))
+ .build())
+ .build());
+ break;
+ default:
+ break;
+ }
+ }
+ return aps.stream().distinct().toList();
+ }
+
+ public List<SupportedPayloadStructure> createSupportedPayloadStructureForPhtncMedia(
+ Collection<SupportedInterfaceCapability> sicList, List<OperationalModeKey> supportedOpModes) {
+ if (supportedOpModes == null || supportedOpModes.isEmpty()) {
+ return null;
+ }
+ Integer nepRate = 0;
+ Integer loopRate = 0;
+ for (OperationalModeKey operationalMode : supportedOpModes) {
+ if (operationalMode.toString().contains("800G")) {
+ loopRate = 8;
+ } else if (operationalMode.toString().contains("600G")) {
+ loopRate = 6;
+ } else if (operationalMode.toString().contains("400G")) {
+ loopRate = 4;
+ } else if (operationalMode.toString().contains("300G")) {
+ loopRate = 3;
+ } else if (operationalMode.toString().contains("200G")) {
+ loopRate = 2;
+ } else if (operationalMode.toString().contains("100G")) {
+ loopRate = 1;
+ }
+ if (loopRate >= nepRate) {
+ nepRate = loopRate;
+ }
+ }
+ CapacityBuilder capBd = new CapacityBuilder()
+ .setUnit(CAPACITYUNITGBPS.VALUE);
+ List<SupportedPayloadStructure> sps = new ArrayList<>();
+ for (SupportedInterfaceCapability sic : sicList) {
+ String ifCapType = sic.getIfCapType().toString().split("\\{")[0];
+ switch (ifCapType) {
+ case "IfOCHOTU4ODU4":
+ case "IfOCHOTU4ODU4Regen":
+ case "IfOCHOTU4ODU4Uniregen":
+ sps.add(new SupportedPayloadStructureBuilder()
+ .setMultiplexingSequence(Set.of(PHOTONICLAYERQUALIFIEROTSi.VALUE, ODUTYPEODU4.VALUE))
+ .setNumberOfCepInstances(Uint64.valueOf(1))
+ .setCapacity(capBd.setValue(Decimal64.valueOf(100.0, RoundingMode.DOWN)).build())
+ .build());
+ break;
+ case "IfOCHOTUCnODUCn":
+ case "IfOtsiOtucnOducn":
+ case "IfOCHOTUCnODUCnRegen":
+ case "IfOCHOTUCnODUCnUniregen":
+ sps.add(new SupportedPayloadStructureBuilder()
+ .setMultiplexingSequence(Set.of(PHOTONICLAYERQUALIFIEROTSi.VALUE, OTUTYPEOTUCN.VALUE,
+ ODUTYPEODUCN.VALUE, ODUTYPEODU4.VALUE))
+ .setNumberOfCepInstances(Uint64.valueOf(nepRate))
+ .setCapacity(capBd.setValue(Decimal64.valueOf(nepRate * 100.0, RoundingMode.DOWN)).build())
+ .build());
+ break;
+ default:
+ break;
+ }
+ }
+ return sps.stream().distinct().toList();
+ }
+
+ @edu.umd.cs.findbugs.annotations.SuppressFBWarnings(value = "SF_SWITCH_FALLTHROUGH",
+ justification = "Voluntarily No break in switchcase where comment is inserted in following method")