2 * Copyright © 2023 Fujitsu Network Communications, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.transportpce.servicehandler.catalog;
10 import java.util.HashMap;
12 import org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210.operational.mode.catalog.OpenroadmOperationalModes;
13 import org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210.operational.mode.catalog.OpenroadmOperationalModesBuilder;
14 import org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210.operational.mode.catalog.SpecificOperationalModes;
15 import org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210.operational.mode.catalog.SpecificOperationalModesBuilder;
16 import org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210.operational.mode.catalog.openroadm.operational.modes.AmplifiersBuilder;
17 import org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210.operational.mode.catalog.openroadm.operational.modes.GridParametersBuilder;
18 import org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210.operational.mode.catalog.openroadm.operational.modes.RoadmsBuilder;
19 import org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210.operational.mode.catalog.openroadm.operational.modes.XpondersPluggablesBuilder;
20 import org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210.operational.mode.catalog.openroadm.operational.modes.xponders.pluggables.XponderPluggableOpenroadmOperationalModeBuilder;
21 import org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210.operational.mode.catalog.specific.operational.modes.SpecificOperationalModeBuilder;
22 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.AddOpenroadmOperationalModesToCatalogInput;
23 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.AddSpecificOperationalModesToCatalogInput;
24 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.add.openroadm.operational.modes.to.catalog.input.OperationalModeInfo;
25 import org.slf4j.Logger;
26 import org.slf4j.LoggerFactory;
29 public final class CatalogMapper {
30 private static final Logger LOG = LoggerFactory.getLogger(CatalogMapper.class);
32 private CatalogMapper() {
35 static SpecificOperationalModesBuilder specificObjBuilder = new SpecificOperationalModesBuilder();
37 static OpenroadmOperationalModesBuilder objBuilder = new OpenroadmOperationalModesBuilder();
40 * Preparation of SpecificOperationalModes object which will be stored in the config data store
41 * and returning the same.
43 public static SpecificOperationalModes createSpecificModesToSave(AddSpecificOperationalModesToCatalogInput input) {
44 LOG.info("Inside createSpecificModesToSave method of CatalogMapper");
45 saveSpecificOperationalModes(input.getOperationalModeInfo().getSpecificOperationalModes());
46 return specificObjBuilder.build();
50 * Preparation of OpenroadmOperationalModes object which will be stored in the config data store
51 * and returning the same.
53 public static OpenroadmOperationalModes createORModesToSave(AddOpenroadmOperationalModesToCatalogInput input) {
54 LOG.info("Inside createORModesToSave method of CatalogMapper");
55 OperationalModeInfo modesFromInput = input.getOperationalModeInfo();
56 saveGridParameters(modesFromInput);
57 saveXpondersPlugabbles(modesFromInput);
58 saveRoadms(modesFromInput);
59 saveAmplifiers(modesFromInput);
60 return objBuilder.build();
64 * Preparation of Amplifiers for OpenroadmOperationalModes object.
66 private static void saveAmplifiers(OperationalModeInfo modesFromInput) {
67 objBuilder.setAmplifiers(
68 new AmplifiersBuilder()
69 .setAmplifier(modesFromInput.getAmplifiers().getAmplifier())
74 * Preparation of Grid Parameters for OpenroadmOperationalModes object.
76 private static void saveGridParameters(OperationalModeInfo modesFromInput) {
77 objBuilder.setGridParameters(new GridParametersBuilder(modesFromInput.getGridParameters()).build());
81 * Preparation of Xponders Pluggables for OpenroadmOperationalModes object.
83 private static void saveXpondersPlugabbles(OperationalModeInfo modesFromInput) {
84 Map<org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210
85 .operational.mode.catalog.openroadm.operational.modes.xponders.pluggables
86 .XponderPluggableOpenroadmOperationalModeKey,
87 org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210
88 .operational.mode.catalog.openroadm.operational.modes.xponders.pluggables
89 .XponderPluggableOpenroadmOperationalMode> mapFinal = new HashMap<>();
90 for (var entry : modesFromInput.getXpondersPluggables().getXponderPluggableOpenroadmOperationalMode()
93 new org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210
94 .operational.mode.catalog.openroadm.operational.modes.xponders.pluggables
95 .XponderPluggableOpenroadmOperationalModeKey(entry.getKey().toString()),
96 new XponderPluggableOpenroadmOperationalModeBuilder(entry.getValue())
97 .setOpenroadmOperationalModeId(entry.getValue().getOpenroadmOperationalModeId())
99 objBuilder.setXpondersPluggables(
100 new XpondersPluggablesBuilder().setXponderPluggableOpenroadmOperationalMode(mapFinal).build());
105 * Preparation of Roadms for OpenroadmOperationalModes object.
107 private static void saveRoadms(OperationalModeInfo modesFromInput) {
108 objBuilder.setRoadms(
110 .setAdd(modesFromInput.getRoadms().getAdd())
111 .setDrop(modesFromInput.getRoadms().getDrop())
112 .setExpress(modesFromInput.getRoadms().getExpress())
117 * Preparation of Specific Operational Modes for SpecificOperationalModes object.
119 private static void saveSpecificOperationalModes(org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210
120 .add.specific.operational.modes.to.catalog.input.operational.mode.info.SpecificOperationalModes
121 specificModesFromInput) {
122 Map<org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210
123 .operational.mode.catalog.specific.operational.modes.SpecificOperationalModeKey,
124 org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210
125 .operational.mode.catalog.specific.operational.modes.SpecificOperationalMode>
126 mapFinal = new HashMap<>();
127 for (var entry : specificModesFromInput.getSpecificOperationalMode().entrySet()) {
128 SpecificOperationalModeBuilder specificModeBuilder = new SpecificOperationalModeBuilder();
129 specificModeBuilder.fieldsFrom(entry.getValue());
131 new org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210
132 .operational.mode.catalog.specific.operational.modes.SpecificOperationalModeKey(
133 entry.getKey().toString()),
135 .setOperationalModeId(entry.getValue().getOperationalModeId())
136 .setConfigurableOutputPower(true)
138 specificObjBuilder.setSpecificOperationalMode(mapFinal);