Add implementation of NeutronVPNIPSECSiteConnectionsNorthbound
[neutron.git] / transcriber / src / main / java / org / opendaylight / neutron / transcriber / NeutronVPNIPSECSiteConnectionsInterface.java
1 /*
2  * Copyright Tata Consultancy Services, 2015.  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.neutron.transcriber;
9
10 import java.lang.reflect.Method;
11 import java.util.ArrayList;
12 import java.util.HashSet;
13 import java.util.List;
14 import java.util.Map.Entry;
15 import java.util.Set;
16 import java.util.concurrent.ConcurrentHashMap;
17 import java.util.concurrent.ConcurrentMap;
18 import org.opendaylight.neutron.spi.NeutronVPNIPSECSiteConnection;
19 import org.opendaylight.neutron.spi.INeutronVPNIPSECSiteConnectionsCRUD;
20 import org.slf4j.Logger;
21 import org.slf4j.LoggerFactory;
22
23 public class NeutronVPNIPSECSiteConnectionsInterface implements INeutronVPNIPSECSiteConnectionsCRUD {
24     private static final Logger logger = LoggerFactory.getLogger(NeutronVPNIKEPolicyInterface.class);
25     private ConcurrentMap<String, NeutronVPNIPSECSiteConnection> neutronVPNIPSECSiteConnectionDB = new ConcurrentHashMap<String, NeutronVPNIPSECSiteConnection>();
26
27     // this method uses reflection to update an object from it's delta.
28
29     private boolean overwrite(Object target, Object delta) {
30         Method[] methods = target.getClass().getMethods();
31
32         for (Method toMethod : methods) {
33             if (toMethod.getDeclaringClass().equals(target.getClass()) && toMethod.getName().startsWith("set")) {
34
35                 String toName = toMethod.getName();
36                 String fromName = toName.replace("set", "get");
37
38                 try {
39                     Method fromMethod = delta.getClass().getMethod(fromName);
40                     Object value = fromMethod.invoke(delta, (Object[]) null);
41                     if (value != null) {
42                         toMethod.invoke(target, value);
43                     }
44                 } catch (Exception e) {
45                     e.printStackTrace();
46                     return false;
47                 }
48             }
49         }
50         return true;
51     }
52
53     // INeutronVPNIPSECSiteConnectionsCRUD methods
54
55     @Override
56     public boolean neutronVPNIPSECSiteConnectionsExists(String policyID) {
57         return neutronVPNIPSECSiteConnectionDB.containsKey(policyID);
58     }
59
60     @Override
61     public NeutronVPNIPSECSiteConnection getNeutronVPNIPSECSiteConnections(String policyID) {
62         if (!neutronVPNIPSECSiteConnectionsExists(policyID)) {
63             return null;
64         }
65         return neutronVPNIPSECSiteConnectionDB.get(policyID);
66     }
67
68     @Override
69     public List<NeutronVPNIPSECSiteConnection> getAllNeutronVPNIPSECSiteConnections() {
70         Set<NeutronVPNIPSECSiteConnection> allNeutronVPNIPSECSiteConnections = new HashSet<NeutronVPNIPSECSiteConnection>();
71         for (Entry<String, NeutronVPNIPSECSiteConnection> entry : neutronVPNIPSECSiteConnectionDB.entrySet()) {
72             NeutronVPNIPSECSiteConnection meteringLabelRule = entry.getValue();
73             allNeutronVPNIPSECSiteConnections.add(meteringLabelRule);
74         }
75         logger.debug("Exiting getAllNeutronVPNIPSECSiteConnections, Found {} OpenStackVPNIPSECSiteConnections", allNeutronVPNIPSECSiteConnections.size());
76         List<NeutronVPNIPSECSiteConnection> ans = new ArrayList<NeutronVPNIPSECSiteConnection>();
77         ans.addAll(allNeutronVPNIPSECSiteConnections);
78         return ans;
79     }
80
81     @Override
82     public boolean addNeutronVPNIPSECSiteConnections(NeutronVPNIPSECSiteConnection input) {
83         if (neutronVPNIPSECSiteConnectionsExists(input.getID())) {
84             return false;
85         }
86         neutronVPNIPSECSiteConnectionDB.putIfAbsent(input.getID(), input);
87         return true;
88     }
89
90     @Override
91     public boolean removeNeutronVPNIPSECSiteConnections(String policyID) {
92         if (!neutronVPNIPSECSiteConnectionsExists(policyID)) {
93             return false;
94         }
95         neutronVPNIPSECSiteConnectionDB.remove(policyID);
96         return true;
97     }
98
99     @Override
100     public boolean updateNeutronVPNIPSECSiteConnections(String policyID, NeutronVPNIPSECSiteConnection delta) {
101         if (!neutronVPNIPSECSiteConnectionsExists(policyID)) {
102             return false;
103         }
104         NeutronVPNIPSECSiteConnection target = neutronVPNIPSECSiteConnectionDB.get(policyID);
105         return overwrite(target, delta);
106     }
107
108     @Override
109     public boolean neutronVPNIPSECSiteConnectionsInUse(String policyID) {
110         if (!neutronVPNIPSECSiteConnectionsExists(policyID)) {
111             return true;
112         }
113         return false;
114     }
115 }