Refactor SH CatalogMapper
[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.Map;
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;
27
28
29 public final class CatalogMapper {
30     private static final Logger LOG = LoggerFactory.getLogger(CatalogMapper.class);
31
32     private CatalogMapper() {
33     }
34
35     static SpecificOperationalModesBuilder specificObjBuilder = new SpecificOperationalModesBuilder();
36
37     static OpenroadmOperationalModesBuilder objBuilder = new OpenroadmOperationalModesBuilder();
38
39     /**
40      * Preparation of SpecificOperationalModes object which will be stored in the config data store
41      * and returning the same.
42      */
43     public static SpecificOperationalModes createSpecificModesToSave(AddSpecificOperationalModesToCatalogInput input) {
44         LOG.info("Inside createSpecificModesToSave method of CatalogMapper");
45         saveSpecificOperationalModes(input.getOperationalModeInfo().getSpecificOperationalModes());
46         return specificObjBuilder.build();
47     }
48
49     /**
50      * Preparation of OpenroadmOperationalModes object which will be stored in the config data store
51      * and returning the same.
52      */
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();
61     }
62
63     /**
64      * Preparation of Amplifiers for OpenroadmOperationalModes object.
65      */
66     private static void saveAmplifiers(OperationalModeInfo modesFromInput) {
67         objBuilder.setAmplifiers(
68                 new AmplifiersBuilder()
69                         .setAmplifier(modesFromInput.getAmplifiers().getAmplifier())
70                         .build());
71     }
72
73     /**
74      * Preparation of Grid Parameters for OpenroadmOperationalModes object.
75      */
76     private static void saveGridParameters(OperationalModeInfo modesFromInput) {
77         objBuilder.setGridParameters(new GridParametersBuilder(modesFromInput.getGridParameters()).build());
78     }
79
80     /**
81      * Preparation of Xponders Pluggables for OpenroadmOperationalModes object.
82      */
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()
91                 .entrySet()) {
92             mapFinal.put(
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())
98                     .build());
99             objBuilder.setXpondersPluggables(
100                 new XpondersPluggablesBuilder().setXponderPluggableOpenroadmOperationalMode(mapFinal).build());
101         }
102     }
103
104     /**
105      * Preparation of Roadms for OpenroadmOperationalModes object.
106      */
107     private static void saveRoadms(OperationalModeInfo modesFromInput) {
108         objBuilder.setRoadms(
109             new RoadmsBuilder()
110                 .setAdd(modesFromInput.getRoadms().getAdd())
111                 .setDrop(modesFromInput.getRoadms().getDrop())
112                 .setExpress(modesFromInput.getRoadms().getExpress())
113                 .build());
114     }
115
116     /**
117      * Preparation of Specific Operational Modes for SpecificOperationalModes object.
118      */
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());
130             mapFinal.put(
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()),
134                 specificModeBuilder
135                     .setOperationalModeId(entry.getValue().getOperationalModeId())
136                     .setConfigurableOutputPower(true)
137                     .build());
138             specificObjBuilder.setSpecificOperationalMode(mapFinal);
139         }
140     }
141 }