Bump project version to 8.0.0-SNAPSHOT
[transportpce.git] / servicehandler / src / main / java / org / opendaylight / transportpce / servicehandler / catalog / CatalogMapper.java
1 /*
2  * Copyright © 2023 Fujitsu Network Communications, Inc. and others. All rights reserved.
3  *
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
7  */
8 package org.opendaylight.transportpce.servicehandler.catalog;
9
10 import java.util.HashMap;
11 import java.util.Iterator;
12 import java.util.Map;
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;
35
36
37 public final class CatalogMapper {
38     private static final Logger LOG = LoggerFactory.getLogger(CatalogMapper.class);
39
40     private CatalogMapper() {
41     }
42
43     static SpecificOperationalModesBuilder specificObjBuilder = new SpecificOperationalModesBuilder();
44
45     static OpenroadmOperationalModesBuilder objBuilder = new OpenroadmOperationalModesBuilder();
46
47     /**
48      * Preparation of SpecificOperationalModes object which will be stored in the config data store
49      * and returning the same.
50      */
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();
58     }
59
60     /**
61      * Preparation of OpenroadmOperationalModes object which will be stored in the config data store
62      * and returning the same.
63      */
64     public static OpenroadmOperationalModes createORModesToSave(AddOpenroadmOperationalModesToCatalogInput input) {
65         LOG.info("Inside createORModesToSave method of CatalogMapper");
66         OperationalModeInfo modesFromInput = input.getOperationalModeInfo();
67
68         saveGridParameters(modesFromInput);
69         saveXpondersPlugabbles(modesFromInput);
70         saveRoadms(modesFromInput);
71         saveAmplifiers(modesFromInput);
72
73         return objBuilder.build();
74     }
75
76     /**
77      * Preparation of Amplifiers for OpenroadmOperationalModes object.
78      */
79     private static void saveAmplifiers(OperationalModeInfo modesFromInput) {
80         objBuilder.setAmplifiers(
81                 new AmplifiersBuilder()
82                         .setAmplifier(modesFromInput.getAmplifiers().getAmplifier())
83                         .build());
84     }
85
86     /**
87      * Preparation of Grid Parameters for OpenroadmOperationalModes object.
88      */
89     private static void saveGridParameters(OperationalModeInfo modesFromInput) {
90         objBuilder.setGridParameters(new GridParametersBuilder(modesFromInput.getGridParameters()).build());
91     }
92
93     /**
94      * Preparation of Xponders Pluggables for OpenroadmOperationalModes object.
95      */
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();
101
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<>();
109
110         while (itr.hasNext()) {
111             Map.Entry<XponderPluggableOpenroadmOperationalModeKey, XponderPluggableOpenroadmOperationalMode> entry =
112                     itr.next();
113
114             XponderPluggableOpenroadmOperationalModeBuilder
115                     modeBuilder  = new XponderPluggableOpenroadmOperationalModeBuilder(entry.getValue());
116
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());
123
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());
132         }
133     }
134
135     /**
136      * Preparation of Roadms for OpenroadmOperationalModes object.
137      */
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());
144     }
145
146     /**
147      * Preparation of Specific Operational Modes for SpecificOperationalModes object.
148      */
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);
176         }
177     }
178 }