Sync Common folder
[transportpce.git] / common / src / main / java / org / opendaylight / transportpce / common / crossconnect / CrossConnectImpl.java
1 /*
2  * Copyright © 2017 AT&T 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
9 package org.opendaylight.transportpce.common.crossconnect;
10
11 import static org.opendaylight.transportpce.common.StringConstants.OPENROADM_DEVICE_VERSION_1_2_1;
12 import static org.opendaylight.transportpce.common.StringConstants.OPENROADM_DEVICE_VERSION_2_2;
13
14 import java.math.BigDecimal;
15 import java.util.List;
16 import java.util.Optional;
17
18 import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
19 import org.opendaylight.transportpce.common.mapping.MappingUtils;
20 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
21 import org.slf4j.Logger;
22 import org.slf4j.LoggerFactory;
23
24 public class CrossConnectImpl implements CrossConnect {
25
26     private static final Logger LOG = LoggerFactory.getLogger(CrossConnectImpl.class);
27
28     private final DeviceTransactionManager deviceTransactionManager;
29     protected CrossConnect crossConnect;
30     private final MappingUtils mappingUtils;
31     private CrossConnectImpl121 crossConnectImpl121;
32     private CrossConnectImpl22 crossConnectImpl22;
33
34     public CrossConnectImpl(DeviceTransactionManager deviceTransactionManager, MappingUtils mappingUtils,
35                             CrossConnectImpl121 crossConnectImpl121,
36                             CrossConnectImpl22 crossConnectImpl22) {
37         this.deviceTransactionManager = deviceTransactionManager;
38         this.mappingUtils = mappingUtils;
39         this.crossConnectImpl121 = crossConnectImpl121;
40         this.crossConnectImpl22 = crossConnectImpl22;
41         this.crossConnect = null;
42     }
43
44     public Optional<?> getCrossConnect(String nodeId, String connectionNumber) {
45         String openRoadmVersion = mappingUtils.getOpenRoadmVersion(nodeId);
46         if (openRoadmVersion.equals(OPENROADM_DEVICE_VERSION_1_2_1)) {
47             return crossConnectImpl121.getCrossConnect(nodeId,connectionNumber);
48         }
49         else if (openRoadmVersion.equals(OPENROADM_DEVICE_VERSION_2_2)) {
50             return crossConnectImpl22.getCrossConnect(nodeId,connectionNumber);
51         }
52         return null;
53     }
54
55
56     public Optional<String> postCrossConnect(String nodeId, Long waveNumber, String srcTp, String destTp) {
57         String openRoadmVersion = mappingUtils.getOpenRoadmVersion(nodeId);
58         LOG.info("Cross Connect post request received for node {} with version {}",nodeId,openRoadmVersion);
59         if (openRoadmVersion.equals(OPENROADM_DEVICE_VERSION_1_2_1)) {
60             LOG.info("Device Version is 1.2.1");
61             return crossConnectImpl121.postCrossConnect(nodeId, waveNumber, srcTp, destTp);
62         }
63         else if (openRoadmVersion.equals(OPENROADM_DEVICE_VERSION_2_2)) {
64             LOG.info("Device Version is 2.2");
65             return crossConnectImpl22.postCrossConnect(nodeId, waveNumber, srcTp, destTp);
66         }
67         LOG.info("Device Version not found");
68         return null;
69
70     }
71
72
73     public boolean deleteCrossConnect(String nodeId, String connectionNumber) {
74
75         String openRoadmVersion = mappingUtils.getOpenRoadmVersion(nodeId);
76         if (openRoadmVersion.equals(OPENROADM_DEVICE_VERSION_1_2_1)) {
77             return crossConnectImpl121.deleteCrossConnect(nodeId, connectionNumber);
78         }
79         else if (openRoadmVersion.equals(OPENROADM_DEVICE_VERSION_2_2)) {
80             return crossConnectImpl22.deleteCrossConnect(nodeId, connectionNumber);
81         }
82         return false;
83     }
84
85     public List<?> getConnectionPortTrail(String nodeId, Long waveNumber, String srcTp, String destTp)
86             throws OpenRoadmInterfaceException {
87         String openRoadmVersion = mappingUtils.getOpenRoadmVersion(nodeId);
88         if (openRoadmVersion.equals(OPENROADM_DEVICE_VERSION_1_2_1)) {
89             return crossConnectImpl121.getConnectionPortTrail(nodeId, waveNumber, srcTp, destTp);
90         }
91         else if (openRoadmVersion.equals(OPENROADM_DEVICE_VERSION_2_2)) {
92             return crossConnectImpl22.getConnectionPortTrail(nodeId, waveNumber, srcTp, destTp);
93         }
94         return null;
95     }
96
97     public boolean setPowerLevel(String nodeId, Enum mode, BigDecimal powerValue,
98                                  String connectionNumber) {
99         String openRoadmVersion = mappingUtils.getOpenRoadmVersion(nodeId);
100         if (openRoadmVersion.equals(OPENROADM_DEVICE_VERSION_1_2_1)) {
101             return crossConnectImpl121.setPowerLevel(nodeId,mode,powerValue,connectionNumber);
102         }
103         else if (openRoadmVersion.equals(OPENROADM_DEVICE_VERSION_2_2)) {
104             return crossConnectImpl22.setPowerLevel(nodeId,mode,powerValue,connectionNumber);
105         }
106         return false;
107     }
108 }