Merge "Implemented port/interface delete command to delete interface from ovsdb bridg...
[ovsdb.git] / southbound / southbound-impl / src / main / java / org / opendaylight / ovsdb / southbound / ovsdb / transact / TransactUtils.java
1 /*
2  * Copyright (c) 2014 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.ovsdb.southbound.ovsdb.transact;
9
10 import java.util.HashMap;
11 import java.util.HashSet;
12 import java.util.Map;
13 import java.util.Map.Entry;
14 import java.util.Set;
15
16 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
17 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
18 import org.opendaylight.yangtools.yang.binding.DataObject;
19 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
20 import org.slf4j.Logger;
21 import org.slf4j.LoggerFactory;
22
23 public class TransactUtils {
24     private static final Logger LOG = LoggerFactory.getLogger(TransactUtils.class);
25
26     public static Map<InstanceIdentifier<Node>,Node> extractNode(
27             Map<InstanceIdentifier<?>, DataObject> changes) {
28         Map<InstanceIdentifier<Node>,Node> result
29             = new HashMap<InstanceIdentifier<Node>,Node>();
30         if (changes != null && changes.entrySet() != null) {
31             for (Entry<InstanceIdentifier<?>, DataObject> created : changes.entrySet()) {
32                 if (created.getValue() instanceof Node) {
33                     Node value = (Node) created.getValue();
34                     Class<?> type = created.getKey().getTargetType();
35                     if (type.equals(Node.class)) {
36                         @SuppressWarnings("unchecked") // Actually checked above
37                         InstanceIdentifier<Node> iid = (InstanceIdentifier<Node>) created.getKey();
38                         result.put(iid, value);
39                     }
40                 }
41             }
42         }
43         return result;
44     }
45
46     public static <T extends DataObject> Map<InstanceIdentifier<T>,T> extractCreated(
47             AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> changes,Class<T> klazz) {
48         return extract(changes.getCreatedData(),klazz);
49     }
50
51     public static <T extends DataObject> Map<InstanceIdentifier<T>,T> extractUpdated(
52             AsyncDataChangeEvent<InstanceIdentifier<?>,DataObject> changes,Class<T> klazz) {
53         return extract(changes.getUpdatedData(),klazz);
54     }
55
56     public static <T extends DataObject> Map<InstanceIdentifier<T>,T> extractCreatedOrUpdated(
57             AsyncDataChangeEvent<InstanceIdentifier<?>,DataObject> changes,Class<T> klazz) {
58         Map<InstanceIdentifier<T>,T> result = extractUpdated(changes,klazz);
59         result.putAll(extractCreated(changes,klazz));
60         return result;
61     }
62
63     public static <T extends DataObject> Map<InstanceIdentifier<T>,T> extractOriginal(
64             AsyncDataChangeEvent<InstanceIdentifier<?>,DataObject> changes,Class<T> klazz) {
65         return extract(changes.getOriginalData(),klazz);
66     }
67
68     public static <T extends DataObject> Set<InstanceIdentifier<T>> extractRemoved(
69             AsyncDataChangeEvent<InstanceIdentifier<?>,DataObject> changes,Class<T> klazz) {
70         Set<InstanceIdentifier<T>> result = new HashSet<InstanceIdentifier<T>>();
71         if (changes != null && changes.getRemovedPaths() != null) {
72             for (InstanceIdentifier<?> iid : changes.getRemovedPaths()) {
73                 if (iid.getTargetType().equals(klazz)) {
74                     @SuppressWarnings("unchecked") // Actually checked above
75                     InstanceIdentifier<T> iidn = (InstanceIdentifier<T>)iid;
76                     result.add(iidn);
77                 }
78             }
79         }
80         return result;
81     }
82
83     public static <T extends DataObject> Map<InstanceIdentifier<T>,T> extract(
84             Map<InstanceIdentifier<?>, DataObject> changes, Class<T> klazz) {
85         Map<InstanceIdentifier<T>,T> result = new HashMap<InstanceIdentifier<T>,T>();
86         if (changes != null && changes.entrySet() != null) {
87             for (Entry<InstanceIdentifier<?>, DataObject> created : changes.entrySet()) {
88                 if (klazz.isInstance(created.getValue())) {
89                     @SuppressWarnings("unchecked")
90                     T value = (T) created.getValue();
91                     Class<?> type = created.getKey().getTargetType();
92                     if (type.equals(klazz)) {
93                         @SuppressWarnings("unchecked") // Actually checked above
94                         InstanceIdentifier<T> iid = (InstanceIdentifier<T>) created.getKey();
95                         result.put(iid, value);
96                     }
97                 }
98             }
99         }
100         return result;
101     }
102 }