BUG-3363: code optimization and cleanup - Fix a few warnings
[openflowplugin.git] / openflowplugin / src / main / java / org / opendaylight / openflowplugin / openflow / md / util / PortTranslatorUtil.java
1 /**
2  * Copyright (c) 2013 Cisco Systems, 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.openflowplugin.openflow.md.util;
9
10 import java.math.BigInteger;
11 import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnectorUpdated;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnectorUpdatedBuilder;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.flow.capable.port.State;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.flow.capable.port.StateBuilder;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRemoved;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRemovedBuilder;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorUpdated;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorUpdatedBuilder;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortConfig;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortConfigV10;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortFeatures;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortFeaturesV10;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortState;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortStateV10;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortGrouping;
27
28 public abstract class PortTranslatorUtil {
29     public static org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures translatePortFeatures(final PortFeatures apf) {
30         org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures napf = null;
31         if (apf != null) {
32             napf = new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures(
33                     apf.isAutoneg(), //_autoeng
34                     apf.isCopper(), //_copper
35                     apf.isFiber(), //_fiber
36                     apf.is_40gbFd(), //_fortyGbFd
37                     apf.is_100gbFd(), //_hundredGbFd
38                     apf.is_100mbFd(), //_hundredMbFd
39                     apf.is_100mbHd(), //_hundredMbHd
40                     apf.is_1gbFd(), //_oneGbFd
41                     apf.is_1gbHd(), //_oneGbHd
42                     apf.is_1tbFd(), //_oneTbFd
43                     apf.isOther(), //_other
44                     apf.isPause(), //_pause
45                     apf.isPauseAsym(), //_pauseAsym
46                     apf.is_10gbFd(), //_tenGbFd
47                     apf.is_10mbFd(), //_tenMbFd
48                     apf.is_10mbHd()//_tenMbHd
49             );
50
51         }
52         return napf;
53     }
54
55     public static org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures translatePortFeatures(
56             final PortFeaturesV10 apf) {
57         org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures napf = null;
58         if (apf != null) {
59             napf = new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures(
60                     apf.isAutoneg(), //_autoeng
61                     apf.isCopper(), //_copper
62                     apf.isFiber(), //_fiber
63                     false, //_fortyGbFd
64                     false, //_hundredGbFd
65                     apf.is_100mbFd(), //_hundredMbFd
66                     apf.is_100mbHd(), //_hundredMbHd
67                     apf.is_1gbFd(), //_oneGbFd
68                     apf.is_1gbHd(), //_oneGbHd
69                     false, //_oneTbFd
70                     false, //_other
71                     apf.isPause(), //_pause
72                     apf.isPauseAsym(), //_pauseAsym
73                     apf.is_10gbFd(), //_tenGbFd
74                     apf.is_10mbFd(), //_tenMbFd
75                     apf.is_10mbHd()//_tenMbHd
76                     );
77         }
78         return napf;
79     }
80
81     public static State translatePortState(final PortState state) {
82         StateBuilder nstate = new StateBuilder();
83         if (state != null) {
84             nstate.setBlocked(state.isBlocked());
85             nstate.setLinkDown(state.isLinkDown());
86             nstate.setLive(state.isLive());
87         }
88         return nstate.build();
89     }
90
91     public static State translatePortState(final PortStateV10 state) {
92         StateBuilder nstate = new StateBuilder();
93         if (state != null) {
94             nstate.setBlocked(state.isBlocked());
95             nstate.setLinkDown(state.isLinkDown());
96             nstate.setLive(state.isLive());
97         }
98         return nstate.build();
99     }
100
101     public static org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig translatePortConfig(final PortConfig pc) {
102         org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig npc = null;
103         if (pc != null) {
104             npc = new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig(pc.isNoFwd(),
105                     pc.isNoPacketIn(), pc.isNoRecv(), pc.isPortDown());
106         }
107         return npc;
108     }
109
110     public static org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig translatePortConfig(
111             final PortConfigV10 pc) {
112         org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig npc = null;
113         if (pc != null) {
114             npc = new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig(pc.isNoFwd(),
115                     pc.isNoPacketIn(), pc.isNoRecv(), pc.isPortDown());
116         }
117         return npc;
118     }
119
120     public static NodeConnectorUpdated translatePort(final Short version, final BigInteger datapathId, final Long portNumber, final PortGrouping port) {
121         OpenflowVersion ofVersion = OpenflowVersion.get(version);
122         NodeConnectorUpdatedBuilder builder = InventoryDataServiceUtil
123                 .nodeConnectorUpdatedBuilderFromDatapathIdPortNo(datapathId, port.getPortNo(), ofVersion);
124         FlowCapableNodeConnectorUpdatedBuilder fcncub = new FlowCapableNodeConnectorUpdatedBuilder();
125         if (ofVersion == OpenflowVersion.OF13) {
126             fcncub.setAdvertisedFeatures(PortTranslatorUtil.translatePortFeatures(port.getAdvertisedFeatures()));
127             fcncub.setConfiguration(PortTranslatorUtil.translatePortConfig(port.getConfig()));
128             fcncub.setCurrentFeature(PortTranslatorUtil.translatePortFeatures(port.getCurrentFeatures()));
129             fcncub.setPeerFeatures(PortTranslatorUtil.translatePortFeatures(port.getPeerFeatures()));
130             fcncub.setState(PortTranslatorUtil.translatePortState(port.getState()));
131             fcncub.setSupported(PortTranslatorUtil.translatePortFeatures(port.getSupportedFeatures()));
132
133         } else if (ofVersion == OpenflowVersion.OF10) {
134             fcncub.setAdvertisedFeatures(PortTranslatorUtil.translatePortFeatures(port.getAdvertisedFeaturesV10()));
135             fcncub.setConfiguration(PortTranslatorUtil.translatePortConfig(port.getConfigV10()));
136             fcncub.setCurrentFeature(PortTranslatorUtil.translatePortFeatures(port.getCurrentFeaturesV10()));
137             fcncub.setPeerFeatures(PortTranslatorUtil.translatePortFeatures(port.getPeerFeaturesV10()));
138             fcncub.setState(PortTranslatorUtil.translatePortState(port.getStateV10()));
139             fcncub.setSupported(PortTranslatorUtil.translatePortFeatures(port.getSupportedFeaturesV10()));
140         }
141         fcncub.setCurrentSpeed(port.getCurrSpeed());
142         fcncub.setHardwareAddress(port.getHwAddr());
143         fcncub.setMaximumSpeed(port.getMaxSpeed());
144         fcncub.setName(port.getName());
145         fcncub.setPortNumber(OpenflowPortsUtil.getProtocolAgnosticPort(ofVersion, portNumber));
146         builder.addAugmentation(FlowCapableNodeConnectorUpdated.class, fcncub.build());
147         return builder.build();
148     }
149
150     public static NodeConnectorRemoved translatePortRemoved(final Short version, final BigInteger datapathId, final Long portNumber, final PortGrouping port) {
151         OpenflowVersion ofVersion = OpenflowVersion.get(version);
152         NodeConnectorRemovedBuilder builder = new NodeConnectorRemovedBuilder();
153         builder.setNodeConnectorRef(InventoryDataServiceUtil.nodeConnectorRefFromDatapathIdPortno(datapathId, portNumber, ofVersion));
154         return builder.build();
155     }
156 }