991a5637e1c3f549fb6609888abc8bfbae50e5bb
[controller.git] / opendaylight / netconf / config-netconf-connector / src / main / java / org / opendaylight / controller / netconf / confignetconfconnector / mapping / config / ModuleConfig.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
9 package org.opendaylight.controller.netconf.confignetconfconnector.mapping.config;
10
11 import org.opendaylight.controller.config.api.jmx.ObjectNameUtil;
12 import org.opendaylight.controller.netconf.confignetconfconnector.operations.editconfig.EditStrategyType;
13 import org.opendaylight.controller.netconf.util.xml.XmlElement;
14 import org.opendaylight.controller.netconf.util.xml.XmlNetconfConstants;
15 import org.opendaylight.controller.netconf.util.xml.XmlUtil;
16 import org.w3c.dom.Document;
17 import org.w3c.dom.Element;
18
19 import javax.management.ObjectName;
20 import java.util.Collection;
21
22 public class ModuleConfig {
23
24     private final String moduleName;
25     private final InstanceConfig instanceConfig;
26     private final Collection<String> providedServices;
27
28     public ModuleConfig(String moduleName, InstanceConfig mbeanMapping, Collection<String> providedServices) {
29         this.moduleName = moduleName;
30         this.instanceConfig = mbeanMapping;
31         this.providedServices = providedServices;
32     }
33
34     public InstanceConfig getMbeanMapping() {
35         return instanceConfig;
36     }
37
38     public Collection<String> getProvidedServices() {
39         return providedServices;
40     }
41
42     public Element toXml(ObjectName instanceON, Services depTracker, Document document, String namespace) {
43         Element root = document.createElement(XmlNetconfConstants.MODULE_KEY);
44         // Xml.addNamespaceAttr(document, root, namespace);
45
46         final String prefix = getPrefix(namespace);
47         Element typeElement = XmlUtil.createPrefixedTextElement(document, XmlNetconfConstants.TYPE_KEY, prefix,
48                 moduleName);
49         XmlUtil.addPrefixedNamespaceAttr(typeElement, prefix, namespace);
50         // Xml.addNamespaceAttr(document, typeElement,
51         // XMLUtil.URN_OPENDAYLIGHT_PARAMS_XML_NS_YANG_CONTROLLER_CONFIG);
52         root.appendChild(typeElement);
53
54         Element nameElement = XmlUtil.createTextElement(document, XmlNetconfConstants.NAME_KEY,
55                 ObjectNameUtil.getInstanceName(instanceON));
56         // Xml.addNamespaceAttr(document, nameElement,
57         // XMLUtil.URN_OPENDAYLIGHT_PARAMS_XML_NS_YANG_CONTROLLER_CONFIG);
58         root.appendChild(nameElement);
59
60         root = instanceConfig.toXml(instanceON, depTracker, namespace, document, root);
61
62         return root;
63     }
64
65     private String getPrefix(String namespace) {
66         // if(namespace.contains(":")==false)
67         return "prefix";
68         // return namespace.substring(namespace.lastIndexOf(':') + 1,
69         // namespace.length());
70
71     }
72
73     public ModuleElementResolved fromXml(XmlElement moduleElement, Services depTracker, String instanceName,
74             String moduleNamespace, EditStrategyType defaultStrategy) {
75
76         InstanceConfigElementResolved ice = instanceConfig.fromXml(moduleElement, depTracker, moduleNamespace, defaultStrategy);
77         return new ModuleElementResolved(instanceName, ice);
78     }
79
80 }