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;
11 import java.util.Iterator;
13 import org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210.operational.mode.catalog.OpenroadmOperationalModes;
14 import org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210.operational.mode.catalog.OpenroadmOperationalModesBuilder;
15 import org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210.operational.mode.catalog.SpecificOperationalModes;
16 import org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210.operational.mode.catalog.SpecificOperationalModesBuilder;
17 import org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210.operational.mode.catalog.openroadm.operational.modes.AmplifiersBuilder;
18 import org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210.operational.mode.catalog.openroadm.operational.modes.GridParametersBuilder;
19 import org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210.operational.mode.catalog.openroadm.operational.modes.RoadmsBuilder;
20 import org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210.operational.mode.catalog.openroadm.operational.modes.XpondersPluggablesBuilder;
21 import org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210.operational.mode.catalog.openroadm.operational.modes.xponders.pluggables.XponderPluggableOpenroadmOperationalModeBuilder;
22 import org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210.operational.mode.catalog.specific.operational.modes.SpecificOperationalModeBuilder;
23 import org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210.operational.mode.roadm.add.parameters.Add;
24 import org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210.operational.mode.roadm.drop.parameters.Drop;
25 import org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210.operational.mode.roadm.express.parameters.Express;
26 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.AddOpenroadmOperationalModesToCatalogInput;
27 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.AddSpecificOperationalModesToCatalogInput;
28 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.add.openroadm.operational.modes.to.catalog.input.OperationalModeInfo;
29 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.add.openroadm.operational.modes.to.catalog.input.operational.mode.info.xponders.pluggables.XponderPluggableOpenroadmOperationalMode;
30 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.add.openroadm.operational.modes.to.catalog.input.operational.mode.info.xponders.pluggables.XponderPluggableOpenroadmOperationalModeKey;
31 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.add.specific.operational.modes.to.catalog.input.operational.mode.info.specific.operational.modes.SpecificOperationalMode;
32 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.add.specific.operational.modes.to.catalog.input.operational.mode.info.specific.operational.modes.SpecificOperationalModeKey;
33 import org.slf4j.Logger;
34 import org.slf4j.LoggerFactory;
37 public final class CatalogMapper {
38 private static final Logger LOG = LoggerFactory.getLogger(CatalogMapper.class);
40 private CatalogMapper() {
43 static SpecificOperationalModesBuilder specificObjBuilder = new SpecificOperationalModesBuilder();
45 static OpenroadmOperationalModesBuilder objBuilder = new OpenroadmOperationalModesBuilder();
48 * Preparation of SpecificOperationalModes object which will be stored in the config data store
49 * and returning the same.
51 public static SpecificOperationalModes createSpecificModesToSave(AddSpecificOperationalModesToCatalogInput input) {
52 LOG.info("Inside createSpecificModesToSave method of CatalogMapper");
53 org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210.add.specific.operational.modes.to.catalog
54 .input.operational.mode.info.SpecificOperationalModes specificModesFromInput =
55 input.getOperationalModeInfo().getSpecificOperationalModes();
56 saveSpecificOperationalModes(specificModesFromInput);
57 return specificObjBuilder.build();
61 * Preparation of OpenroadmOperationalModes object which will be stored in the config data store
62 * and returning the same.
64 public static OpenroadmOperationalModes createORModesToSave(AddOpenroadmOperationalModesToCatalogInput input) {
65 LOG.info("Inside createORModesToSave method of CatalogMapper");
66 OperationalModeInfo modesFromInput = input.getOperationalModeInfo();
68 saveGridParameters(modesFromInput);
69 saveXpondersPlugabbles(modesFromInput);
70 saveRoadms(modesFromInput);
71 saveAmplifiers(modesFromInput);
73 return objBuilder.build();
77 * Preparation of Amplifiers for OpenroadmOperationalModes object.
79 private static void saveAmplifiers(OperationalModeInfo modesFromInput) {
80 objBuilder.setAmplifiers(
81 new AmplifiersBuilder()
82 .setAmplifier(modesFromInput.getAmplifiers().getAmplifier())
87 * Preparation of Grid Parameters for OpenroadmOperationalModes object.
89 private static void saveGridParameters(OperationalModeInfo modesFromInput) {
90 objBuilder.setGridParameters(new GridParametersBuilder(modesFromInput.getGridParameters()).build());
94 * Preparation of Xponders Pluggables for OpenroadmOperationalModes object.
96 private static void saveXpondersPlugabbles(OperationalModeInfo modesFromInput) {
97 Map<XponderPluggableOpenroadmOperationalModeKey, XponderPluggableOpenroadmOperationalMode> map =
98 modesFromInput.getXpondersPluggables().getXponderPluggableOpenroadmOperationalMode();
99 Iterator<Map.Entry<XponderPluggableOpenroadmOperationalModeKey, XponderPluggableOpenroadmOperationalMode>> itr =
100 map.entrySet().iterator();
102 XpondersPluggablesBuilder xpondersPluggablesBuilder = new XpondersPluggablesBuilder();
103 Map<org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210
104 .operational.mode.catalog.openroadm.operational.modes.xponders.pluggables
105 .XponderPluggableOpenroadmOperationalModeKey,
106 org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210
107 .operational.mode.catalog.openroadm.operational.modes.xponders.pluggables
108 .XponderPluggableOpenroadmOperationalMode> mapFinal = new HashMap<>();
110 while (itr.hasNext()) {
111 Map.Entry<XponderPluggableOpenroadmOperationalModeKey, XponderPluggableOpenroadmOperationalMode> entry =
114 XponderPluggableOpenroadmOperationalModeBuilder
115 modeBuilder = new XponderPluggableOpenroadmOperationalModeBuilder(entry.getValue());
117 org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210
118 .operational.mode.catalog.openroadm.operational.modes.xponders.pluggables
119 .XponderPluggableOpenroadmOperationalModeKey key =
120 new org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210
121 .operational.mode.catalog.openroadm.operational.modes.xponders.pluggables
122 .XponderPluggableOpenroadmOperationalModeKey(entry.getKey().toString());
124 modeBuilder.setOpenroadmOperationalModeId(entry.getValue().getOpenroadmOperationalModeId());
125 org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210
126 .operational.mode.catalog.openroadm.operational.modes.xponders.pluggables
127 .XponderPluggableOpenroadmOperationalMode mode = modeBuilder.build();
128 mapFinal.put(key, mode);
129 xpondersPluggablesBuilder.setXponderPluggableOpenroadmOperationalMode(mapFinal);
130 objBuilder.setXpondersPluggables(xpondersPluggablesBuilder
131 .setXponderPluggableOpenroadmOperationalMode(mapFinal).build());
136 * Preparation of Roadms for OpenroadmOperationalModes object.
138 private static void saveRoadms(OperationalModeInfo modesFromInput) {
139 Add add = modesFromInput.getRoadms().getAdd();
140 Drop drop = modesFromInput.getRoadms().getDrop();
141 Express express = modesFromInput.getRoadms().getExpress();
142 RoadmsBuilder roadmsBuilder = new RoadmsBuilder().setAdd(add).setDrop(drop).setExpress(express);
143 objBuilder.setRoadms(roadmsBuilder.build());
147 * Preparation of Specific Operational Modes for SpecificOperationalModes object.
149 private static void saveSpecificOperationalModes(org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210
150 .add.specific.operational.modes.to.catalog.input.operational.mode.info.SpecificOperationalModes
151 specificModesFromInput) {
152 Map<SpecificOperationalModeKey, SpecificOperationalMode> map =
153 specificModesFromInput.getSpecificOperationalMode();
154 Iterator<Map.Entry<SpecificOperationalModeKey, SpecificOperationalMode>> itr = map.entrySet().iterator();
155 Map<org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210
156 .operational.mode.catalog.specific.operational.modes.SpecificOperationalModeKey,
157 org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210
158 .operational.mode.catalog.specific.operational.modes.SpecificOperationalMode>
159 mapFinal = new HashMap<>();
160 while (itr.hasNext()) {
161 Map.Entry<SpecificOperationalModeKey, SpecificOperationalMode> entry = itr.next();
162 SpecificOperationalModeBuilder specificModeBuilder = new SpecificOperationalModeBuilder();
163 specificModeBuilder.fieldsFrom(entry.getValue());
164 org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210
165 .operational.mode.catalog.specific.operational.modes.SpecificOperationalModeKey specificModeKey =
166 new org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210
167 .operational.mode.catalog.specific.operational.modes.SpecificOperationalModeKey(
168 entry.getKey().toString());
169 specificModeBuilder.setOperationalModeId(entry.getValue().getOperationalModeId());
170 specificModeBuilder.setConfigurableOutputPower(true);
171 org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210
172 .operational.mode.catalog.specific.operational.modes.SpecificOperationalMode specificMode =
173 specificModeBuilder.build();
174 mapFinal.put(specificModeKey, specificMode);
175 specificObjBuilder.setSpecificOperationalMode(mapFinal);