Modify nemo rpc input and related implementation.
[nemo.git] / nemo-impl / src / main / java / org / opendaylight / nemo / user / vnspacemanager / structurestyle / updateintent / GetDefinitions.java
1 /*\r
2  * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
3  *\r
4  * This program and the accompanying materials are made available under the\r
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
6  * and is available at http://www.eclipse.org/legal/epl-v10.html\r
7  */\r
8 package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent;\r
9 \r
10 import com.google.common.base.Optional;\r
11 import com.google.common.util.concurrent.FutureCallback;\r
12 import com.google.common.util.concurrent.Futures;\r
13 import com.google.common.util.concurrent.ListenableFuture;\r
14 import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
15 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.*;\r
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.ConnectionDefinitions;\r
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.MatchItemDefinitions;\r
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.NodeDefinitions;\r
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.definitions.ConnectionDefinition;\r
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.match.item.definitions.MatchItemDefinition;\r
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.definitions.NodeDefinition;\r
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.ActionDefinitions;\r
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.ConditionParameterDefinitions;\r
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.definitions.ActionDefinition;\r
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.parameter.definitions.ConditionParameterDefinition;\r
27 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
28 import org.slf4j.Logger;\r
29 import org.slf4j.LoggerFactory;\r
30 \r
31 import java.util.HashMap;\r
32 import java.util.List;\r
33 import java.util.Map;\r
34 \r
35 /**\r
36  * Created by z00293636 on 2015/12/3.\r
37  */\r
38 public class GetDefinitions {\r
39     private DataBroker dataBroker;\r
40     private List<NodeDefinition> nodeDefinitionList = null;\r
41     private List<ConnectionDefinition> connectionDefinitionsList = null;\r
42     private List<MatchItemDefinition> matchItemDefinitionList = null;\r
43     private List<ConditionParameterDefinition> conditionParameterDefinitionList = null;\r
44     private List<ActionDefinition> actionDefinitionList = null;\r
45     private static final Logger LOG = LoggerFactory.getLogger(GetDefinitions.class);\r
46 \r
47     public GetDefinitions(DataBroker dataBroker){\r
48         this.dataBroker = dataBroker;\r
49     }\r
50 \r
51     public Map<NodeType, NodeDefinition> getNodeDefinition(){\r
52         fetchNodeDefinitions();\r
53         Map<NodeType, NodeDefinition> map = new HashMap<NodeType, NodeDefinition>();\r
54         if (nodeDefinitionList!=null){\r
55             for (NodeDefinition nodeDefinition : nodeDefinitionList){\r
56                 map.put(nodeDefinition.getNodeType(),nodeDefinition);\r
57             }\r
58         }\r
59         return map;\r
60     }\r
61 \r
62     public Map<MatchItemName, MatchItemDefinition> getMatchItemDefinition(){\r
63         fetchMatchItemDefinitions();\r
64         Map<MatchItemName, MatchItemDefinition> map = new HashMap<MatchItemName, MatchItemDefinition>();\r
65         if (matchItemDefinitionList != null){\r
66             for (MatchItemDefinition matchItemDefinition : matchItemDefinitionList){\r
67                 map.put(matchItemDefinition.getMatchItemName(),matchItemDefinition);\r
68             }\r
69         }\r
70         return map;\r
71     }\r
72 \r
73     public Map<ConnectionType, ConnectionDefinition> getConnectionDefinition(){\r
74         fetchConnectionDefinitionList();\r
75         Map<ConnectionType, ConnectionDefinition> map = new HashMap<ConnectionType, ConnectionDefinition>();\r
76         if (connectionDefinitionsList != null){\r
77             for (ConnectionDefinition connectionDefinition : connectionDefinitionsList){\r
78                 map.put(connectionDefinition.getConnectionType(),connectionDefinition);\r
79             }\r
80         }\r
81         return map;\r
82     }\r
83 \r
84     public Map<ActionName, ActionDefinition> getActionDefinition(){\r
85         fetchActionDefinitions();\r
86         Map<ActionName,ActionDefinition> map = new HashMap<ActionName, ActionDefinition>();\r
87         if (actionDefinitionList!=null){\r
88             for (ActionDefinition actionDefinition : actionDefinitionList){\r
89                 map.put(actionDefinition.getActionName(),actionDefinition);\r
90             }\r
91         }\r
92         return map;\r
93     }\r
94 \r
95     public Map<ParameterName, ConditionParameterDefinition> getConditionParameterDefinition(){\r
96         fetchConditionParaDefinitions();\r
97         Map<ParameterName, ConditionParameterDefinition> map = new HashMap<ParameterName, ConditionParameterDefinition>();\r
98         if (conditionParameterDefinitionList!=null){\r
99             for (ConditionParameterDefinition conditionParameterDefinition : conditionParameterDefinitionList){\r
100                 map.put(conditionParameterDefinition.getParameterName(),conditionParameterDefinition);\r
101             }\r
102         }\r
103         return map;\r
104     }\r
105 \r
106     private void setNodeDefinitionsList(List<NodeDefinition> nodeDefinitiones){\r
107         this.nodeDefinitionList = nodeDefinitiones;\r
108     }\r
109 \r
110     private void setMatchItemDefintionList(List<MatchItemDefinition> matchItemDefinitions){\r
111         this.matchItemDefinitionList = matchItemDefinitions;\r
112     }\r
113 \r
114     private void setConnectionDefinitionsList(List<ConnectionDefinition> connectionDefinitions){\r
115         this.connectionDefinitionsList = connectionDefinitions;\r
116     }\r
117 \r
118     private void setConditionParameterDefinitionList(List<ConditionParameterDefinition> conditionParameterDefinitions){\r
119         this.conditionParameterDefinitionList = conditionParameterDefinitions;\r
120     }\r
121 \r
122     private void setActionDefinitionList(List<ActionDefinition> actionDefinitions){\r
123         this.actionDefinitionList = actionDefinitions;\r
124     }\r
125 \r
126     private void fetchNodeDefinitions(){\r
127         InstanceIdentifier<NodeDefinitions> nodedefinitionId = InstanceIdentifier.builder(NodeDefinitions.class).build();\r
128         ListenableFuture<Optional<NodeDefinitions>> nodedefinitionFuture = dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, nodedefinitionId);\r
129         Futures.addCallback(nodedefinitionFuture, new FutureCallback<Optional<NodeDefinitions>>() {\r
130             @Override\r
131             public void onSuccess(Optional<NodeDefinitions> result){\r
132                 setNodeDefinitionsList(result.get().getNodeDefinition());\r
133             }\r
134             @Override\r
135             public void onFailure(Throwable t){\r
136                 LOG.error("Can not read node definitions information.", t);\r
137             }\r
138         });\r
139         return ;\r
140     }\r
141 \r
142     private void fetchConnectionDefinitionList(){\r
143         InstanceIdentifier<ConnectionDefinitions> connectiondefinitionId = InstanceIdentifier.builder(ConnectionDefinitions.class).build();\r
144         ListenableFuture<Optional<ConnectionDefinitions>> connectiondefinitionFuture = dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, connectiondefinitionId);\r
145         Futures.addCallback(connectiondefinitionFuture, new FutureCallback<Optional<ConnectionDefinitions>>() {\r
146             @Override\r
147             public void onSuccess(Optional<ConnectionDefinitions> result) {\r
148                 setConnectionDefinitionsList(result.get().getConnectionDefinition());\r
149             }\r
150 \r
151             @Override\r
152             public void onFailure(Throwable t) {\r
153                 LOG.error("Can not read connection definition information.", t);\r
154             }\r
155         });\r
156         return;\r
157     }\r
158 \r
159     private void fetchMatchItemDefinitions(){\r
160         InstanceIdentifier<MatchItemDefinitions> matchitemdefinitionId = InstanceIdentifier.builder(MatchItemDefinitions.class).build();\r
161         ListenableFuture<Optional<MatchItemDefinitions>> matchitemdefinitionFuture = dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, matchitemdefinitionId);\r
162         Futures.addCallback(matchitemdefinitionFuture, new FutureCallback<Optional<MatchItemDefinitions>>() {\r
163             @Override\r
164             public void onSuccess(Optional<MatchItemDefinitions> result) {\r
165                 setMatchItemDefintionList(result.get().getMatchItemDefinition());\r
166             }\r
167             @Override\r
168             public void onFailure(Throwable t) {\r
169                 LOG.error("Can not read match item definition information.", t);\r
170             }\r
171         });\r
172         return ;\r
173     }\r
174 \r
175     private void fetchActionDefinitions(){\r
176         InstanceIdentifier<ActionDefinitions> actiondefinitionId = InstanceIdentifier.builder(ActionDefinitions.class).build();\r
177         ListenableFuture<Optional<ActionDefinitions>> actiondefinitionFuture = dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, actiondefinitionId);\r
178         Futures.addCallback(actiondefinitionFuture, new FutureCallback<Optional<ActionDefinitions>>() {\r
179             @Override\r
180             public void onSuccess(Optional<ActionDefinitions> result) {\r
181                 setActionDefinitionList(result.get().getActionDefinition());\r
182             }\r
183 \r
184             @Override\r
185             public void onFailure(Throwable t) {\r
186                 LOG.error("Can not read action definition information.", t);\r
187             }\r
188         });\r
189         return ;\r
190     }\r
191 \r
192     private void fetchConditionParaDefinitions(){\r
193         InstanceIdentifier<ConditionParameterDefinitions> conditionparadefinitionId = InstanceIdentifier.builder(ConditionParameterDefinitions.class).build();\r
194         ListenableFuture<Optional<ConditionParameterDefinitions>> conditionparadefinitionFuture = dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, conditionparadefinitionId);\r
195         Futures.addCallback(conditionparadefinitionFuture, new FutureCallback<Optional<ConditionParameterDefinitions>>() {\r
196             @Override\r
197             public void onSuccess(Optional<ConditionParameterDefinitions> result) {\r
198                 setConditionParameterDefinitionList(result.get().getConditionParameterDefinition());\r
199             }\r
200 \r
201             @Override\r
202             public void onFailure(Throwable t) {\r
203                 LOG.error("Can not read condition parameter definition information.", t);\r
204             }\r
205         });\r
206         return ;\r
207     }\r
208 }\r