Projects moved under correct parent.
[controller.git] / opendaylight / sal / yang-prototype / yang / yang-model-parser-impl / src / main / java / org / opendaylight / controller / yang / parser / impl / SchemaContextImpl.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 package org.opendaylight.controller.yang.parser.impl;
9
10 import java.net.URI;
11 import java.util.Date;
12 import java.util.HashSet;
13 import java.util.Set;
14
15 import org.opendaylight.controller.yang.model.api.DataSchemaNode;
16 import org.opendaylight.controller.yang.model.api.ExtensionDefinition;
17 import org.opendaylight.controller.yang.model.api.Module;
18 import org.opendaylight.controller.yang.model.api.NotificationDefinition;
19 import org.opendaylight.controller.yang.model.api.RpcDefinition;
20 import org.opendaylight.controller.yang.model.api.SchemaContext;
21
22 final class SchemaContextImpl implements SchemaContext {
23     private final Set<Module> modules;
24
25     SchemaContextImpl(final Set<Module> modules) {
26         this.modules = modules;
27     }
28
29     @Override
30     public Set<DataSchemaNode> getDataDefinitions() {
31         final Set<DataSchemaNode> dataDefs = new HashSet<DataSchemaNode>();
32         for (Module m : modules) {
33             dataDefs.addAll(m.getChildNodes());
34         }
35         return dataDefs;
36     }
37
38     @Override
39     public Set<Module> getModules() {
40         return modules;
41     }
42
43     @Override
44     public Set<NotificationDefinition> getNotifications() {
45         final Set<NotificationDefinition> notifications = new HashSet<NotificationDefinition>();
46         for (Module m : modules) {
47             notifications.addAll(m.getNotifications());
48         }
49         return notifications;
50     }
51
52     @Override
53     public Set<RpcDefinition> getOperations() {
54         final Set<RpcDefinition> rpcs = new HashSet<RpcDefinition>();
55         for (Module m : modules) {
56             rpcs.addAll(m.getRpcs());
57         }
58         return rpcs;
59     }
60
61     @Override
62     public Set<ExtensionDefinition> getExtensions() {
63         final Set<ExtensionDefinition> extensions = new HashSet<ExtensionDefinition>();
64         for (Module m : modules) {
65             extensions.addAll(m.getExtensionSchemaNodes());
66         }
67         return extensions;
68     }
69
70     @Override
71     public Module findModuleByName(final String name, final Date revision) {
72         if (name != null) {
73             for (final Module module : modules) {
74                 if (revision == null) {
75                     if (module.getName().equals(name)) {
76                         return module;
77                     }
78                 } else if (module.getName().equals(name) && module.getRevision().equals(revision)) {
79                     return module;
80                 }
81             }
82         }
83         return null;
84     }
85
86     @Override
87     public Module findModuleByNamespace(final URI namespace) {
88         if (namespace != null) {
89             for (final Module module : modules) {
90                 if (module.getNamespace().equals(namespace)) {
91                     return module;
92                 }
93             }
94         }
95         return null;
96     }
97
98 }