Merge "Mavenified generation of ANTLR YANG parser"
[controller.git] / opendaylight / statisticsmanager / implementation / src / main / java / org / opendaylight / controller / statisticsmanager / internal / StatisticsManager.java
1
2 /*
3  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
4  *
5  * This program and the accompanying materials are made available under the
6  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
7  * and is available at http://www.eclipse.org/legal/epl-v10.html
8  */
9
10 package org.opendaylight.controller.statisticsmanager.internal;
11
12 import java.util.ArrayList;
13 import java.util.HashMap;
14 import java.util.List;
15 import java.util.Map;
16
17 import org.opendaylight.controller.forwardingrulesmanager.FlowEntry;
18 import org.opendaylight.controller.sal.core.Node;
19 import org.opendaylight.controller.sal.core.NodeConnector;
20 import org.opendaylight.controller.sal.flowprogrammer.Flow;
21 import org.opendaylight.controller.sal.reader.FlowOnNode;
22 import org.opendaylight.controller.sal.reader.IReadService;
23 import org.opendaylight.controller.sal.reader.NodeConnectorStatistics;
24 import org.opendaylight.controller.sal.reader.NodeDescription;
25 import org.opendaylight.controller.statisticsmanager.IStatisticsManager;
26 import org.slf4j.Logger;
27 import org.slf4j.LoggerFactory;
28
29 /**
30  * The class which implements the methods for retrieving
31  * the network nodes statistics.
32  */
33 public class StatisticsManager implements IStatisticsManager {
34     private static final Logger log = LoggerFactory
35             .getLogger(StatisticsManager.class);
36     private IReadService reader;
37
38     public StatisticsManager() {
39
40     }
41
42     /**
43      * Function called by the dependency manager when all the required
44      * dependencies are satisfied
45      *
46      */
47     void init() {
48         log.debug("INIT called!");
49     }
50
51     /**
52      * Function called by the dependency manager when at least one
53      * dependency become unsatisfied or when the component is shutting
54      * down because for example bundle is being stopped.
55      *
56      */
57     void destroy() {
58         log.debug("DESTROY called!");
59     }
60
61     /**
62      * Function called by dependency manager after "init ()" is called
63      * and after the services provided by the class are registered in
64      * the service registry
65      *
66      */
67     void start() {
68         log.debug("START called!");
69     }
70
71     /**
72      * Function called by the dependency manager before the services
73      * exported by the component are unregistered, this will be
74      * followed by a "destroy ()" calls
75      *
76      */
77     void stop() {
78         log.debug("STOP called!");
79     }
80
81     public void setReaderService(IReadService service) {
82         log.debug("Got inventory service set request {}", service);
83         this.reader = service;
84     }
85
86     public void unsetReaderService(IReadService service) {
87         log.debug("Got a service UNset request");
88         this.reader = null;
89     }
90
91     @Override
92     public List<FlowOnNode> getFlows(Node node) {
93         return reader.readAllFlows(node);
94     }
95
96     @Override
97     public Map<Node, List<FlowOnNode>> getFlowStatisticsForFlowList(
98             List<FlowEntry> flowList) {
99         Map<Node, List<FlowOnNode>> map = new HashMap<Node, List<FlowOnNode>>();
100         if (flowList != null) {
101             for (FlowEntry entry : flowList) {
102                 Node node = entry.getNode();
103                 Flow flow = entry.getFlow();
104                 List<FlowOnNode> list = (map.containsKey(node)) ? map.get(node)
105                         : new ArrayList<FlowOnNode>();
106                 list.add(reader.readFlow(node, flow));
107                 map.put(node, list);
108             }
109         }
110         return map;
111     }
112
113     @Override
114     public int getFlowsNumber(Node node) {
115         return reader.readAllFlows(node).size();
116     }
117
118     @Override
119     public NodeDescription getNodeDescription(Node node) {
120         return reader.readDescription(node);
121     }
122
123     @Override
124     public NodeConnectorStatistics getNodeConnectorStatistics(
125             NodeConnector nodeConnector) {
126         return reader.readNodeConnector(nodeConnector);
127     }
128
129     @Override
130     public List<NodeConnectorStatistics> getNodeConnectorStatistics(Node node) {
131         return reader.readNodeConnectors(node);
132     }
133 }