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.operational.mode.catalog
118 .openroadm.operational.modes.xponders.pluggables.XponderPluggableOpenroadmOperationalModeKey
119 key = new org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210
120 .operational.mode.catalog.openroadm.operational.modes.xponders.pluggables
121 .XponderPluggableOpenroadmOperationalModeKey(entry.getKey().toString());
123 modeBuilder.setOpenroadmOperationalModeId(entry.getValue().getOpenroadmOperationalModeId());
124 org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210.operational.mode
125 .catalog.openroadm.operational.modes.xponders.pluggables.XponderPluggableOpenroadmOperationalMode
126 mode = modeBuilder.build();
127 mapFinal.put(key, mode);
128 xpondersPluggablesBuilder.setXponderPluggableOpenroadmOperationalMode(mapFinal);
129 objBuilder.setXpondersPluggables(xpondersPluggablesBuilder
130 .setXponderPluggableOpenroadmOperationalMode(mapFinal).build());
135 * Preparation of Roadms for OpenroadmOperationalModes object.
137 private static void saveRoadms(OperationalModeInfo modesFromInput) {
138 Add add = modesFromInput.getRoadms().getAdd();
139 Drop drop = modesFromInput.getRoadms().getDrop();
140 Express express = modesFromInput.getRoadms().getExpress();
141 RoadmsBuilder roadmsBuilder = new RoadmsBuilder().setAdd(add).setDrop(drop).setExpress(express);
142 objBuilder.setRoadms(roadmsBuilder.build());
146 * Preparation of Specific Operational Modes for SpecificOperationalModes object.
148 private static void saveSpecificOperationalModes(org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev211210
149 .add.specific.operational.modes.to.catalog.input
150 .operational.mode.info.SpecificOperationalModes
151 specificModesFromInput) {
152 Map<SpecificOperationalModeKey, SpecificOperationalMode> map =
153 specificModesFromInput.getSpecificOperationalMode();
154 Iterator<Map.Entry<SpecificOperationalModeKey, SpecificOperationalMode>> itr = map.entrySet().iterator();
156 Map<org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210.operational.mode.catalog
157 .specific.operational.modes.SpecificOperationalModeKey, org.opendaylight.yang.gen.v1.http.org.openroadm
158 .operational.mode.catalog.rev211210.operational.mode.catalog.specific.operational.modes
159 .SpecificOperationalMode> mapFinal = new HashMap<>();
161 while (itr.hasNext()) {
162 Map.Entry<SpecificOperationalModeKey, SpecificOperationalMode> entry = itr.next();
164 SpecificOperationalModeBuilder specificModeBuilder = new SpecificOperationalModeBuilder();
165 specificModeBuilder.fieldsFrom(entry.getValue());
167 org.opendaylight.yang.gen.v1.http.org.openroadm.operational.mode.catalog.rev211210.operational.mode.catalog
168 .specific.operational.modes.SpecificOperationalModeKey specificModeKey = new org.opendaylight.yang
169 .gen.v1.http.org.openroadm.operational.mode.catalog.rev211210.operational.mode.catalog.specific
170 .operational.modes.SpecificOperationalModeKey(entry.getKey().toString());
172 specificModeBuilder.setOperationalModeId(entry.getValue().getOperationalModeId());
173 specificModeBuilder.setConfigurableOutputPower(true);
174 org.opendaylight.yang.gen.v1.http.org.openroadm
175 .operational.mode.catalog.rev211210.operational.mode.catalog.specific.operational.modes
176 .SpecificOperationalMode specificMode = specificModeBuilder.build();
177 mapFinal.put(specificModeKey, specificMode);
178 specificObjBuilder.setSpecificOperationalMode(mapFinal);