Merge "Fixed validation bug of YANG import statement"
[controller.git] / opendaylight / sal / yang-prototype / code-generator / yang-model-parser-impl / src / main / java / org / opendaylight / controller / yang / model / parser / builder / impl / UnknownSchemaNodeBuilder.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.model.parser.builder.impl;
9
10 import java.util.ArrayList;
11 import java.util.Collections;
12 import java.util.List;
13
14 import org.opendaylight.controller.yang.common.QName;
15 import org.opendaylight.controller.yang.model.api.SchemaPath;
16 import org.opendaylight.controller.yang.model.api.Status;
17 import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
18 import org.opendaylight.controller.yang.model.parser.builder.api.SchemaNodeBuilder;
19
20 public class UnknownSchemaNodeBuilder implements SchemaNodeBuilder {
21
22     private final QName qname;
23     private SchemaPath schemaPath;
24     private final UnknownSchemaNodeImpl instance;
25     private final List<UnknownSchemaNodeBuilder> addedUnknownNodes = new ArrayList<UnknownSchemaNodeBuilder>();
26
27     UnknownSchemaNodeBuilder(final QName qname) {
28         this.qname = qname;
29         instance = new UnknownSchemaNodeImpl(qname);
30     }
31
32     @Override
33     public UnknownSchemaNode build() {
34         instance.setPath(schemaPath);
35
36         // UNKNOWN NODES
37         final List<UnknownSchemaNode> unknownNodes = new ArrayList<UnknownSchemaNode>();
38         for (UnknownSchemaNodeBuilder b : addedUnknownNodes) {
39             unknownNodes.add(b.build());
40         }
41         instance.setUnknownSchemaNodes(unknownNodes);
42         return instance;
43     }
44
45     @Override
46     public QName getQName() {
47         return qname;
48     }
49
50     @Override
51     public SchemaPath getPath() {
52         return schemaPath;
53     }
54
55     @Override
56     public void setPath(SchemaPath schemaPath) {
57         this.schemaPath = schemaPath;
58     }
59
60     @Override
61     public void setDescription(final String description) {
62         instance.setDescription(description);
63     }
64
65     @Override
66     public void setReference(final String reference) {
67         instance.setReference(reference);
68     }
69
70     @Override
71     public void setStatus(final Status status) {
72         instance.setStatus(status);
73     }
74
75     @Override
76     public void addUnknownSchemaNode(final UnknownSchemaNodeBuilder unknownNode) {
77         addedUnknownNodes.add(unknownNode);
78     }
79
80     private static class UnknownSchemaNodeImpl implements UnknownSchemaNode {
81         private final QName qname;
82         private SchemaPath path;
83         private String description;
84         private String reference;
85         private Status status = Status.CURRENT;
86         private List<UnknownSchemaNode> unknownNodes = Collections.emptyList();
87
88         private UnknownSchemaNodeImpl(final QName qname) {
89             this.qname = qname;
90         }
91
92         @Override
93         public QName getQName() {
94             return qname;
95         }
96
97         @Override
98         public SchemaPath getPath() {
99             return path;
100         }
101
102         private void setPath(final SchemaPath path) {
103             this.path = path;
104         }
105
106         @Override
107         public String getDescription() {
108             return description;
109         }
110
111         private void setDescription(final String description) {
112             this.description = description;
113         }
114
115         @Override
116         public String getReference() {
117             return reference;
118         }
119
120         private void setReference(final String reference) {
121             this.reference = reference;
122         }
123
124         @Override
125         public Status getStatus() {
126             return status;
127         }
128
129         private void setStatus(final Status status) {
130             if (status != null) {
131                 this.status = status;
132             }
133         }
134
135         @Override
136         public List<UnknownSchemaNode> getUnknownSchemaNodes() {
137             return unknownNodes;
138         }
139
140         private void setUnknownSchemaNodes(
141                 final List<UnknownSchemaNode> unknownNodes) {
142             if (unknownNodes != null) {
143                 this.unknownNodes = unknownNodes;
144             }
145         }
146     }
147
148 }