Expanded UnknownSchemaNode implementation, refactored java source code generation.
[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     private final UnknownSchemaNodeImpl instance;
22     private final QName qname;
23     private SchemaPath schemaPath;
24     private final List<UnknownSchemaNodeBuilder> addedUnknownNodes = new ArrayList<UnknownSchemaNodeBuilder>();
25     private QName nodeType;
26     private String nodeParameter;
27
28     UnknownSchemaNodeBuilder(final QName qname) {
29         this.qname = qname;
30         instance = new UnknownSchemaNodeImpl(qname);
31     }
32
33     @Override
34     public UnknownSchemaNode build() {
35         instance.setPath(schemaPath);
36         instance.setNodeType(nodeType);
37         instance.setNodeParameter(nodeParameter);
38
39         // UNKNOWN NODES
40         final List<UnknownSchemaNode> unknownNodes = new ArrayList<UnknownSchemaNode>();
41         for (UnknownSchemaNodeBuilder b : addedUnknownNodes) {
42             unknownNodes.add(b.build());
43         }
44         instance.setUnknownSchemaNodes(unknownNodes);
45         return instance;
46     }
47
48     @Override
49     public QName getQName() {
50         return qname;
51     }
52
53     @Override
54     public SchemaPath getPath() {
55         return schemaPath;
56     }
57
58     @Override
59     public void setPath(SchemaPath schemaPath) {
60         this.schemaPath = schemaPath;
61     }
62
63     @Override
64     public void setDescription(final String description) {
65         instance.setDescription(description);
66     }
67
68     @Override
69     public void setReference(final String reference) {
70         instance.setReference(reference);
71     }
72
73     @Override
74     public void setStatus(final Status status) {
75         instance.setStatus(status);
76     }
77
78     @Override
79     public void addUnknownSchemaNode(final UnknownSchemaNodeBuilder unknownNode) {
80         addedUnknownNodes.add(unknownNode);
81     }
82
83     public QName getNodeType() {
84         return nodeType;
85     }
86
87     public void setNodeType(final QName nodeType) {
88         this.nodeType = nodeType;
89     }
90
91     public String getNodeParameter() {
92         return nodeParameter;
93     }
94
95     public void setNodeParameter(final String nodeParameter) {
96         this.nodeParameter = nodeParameter;
97     }
98
99     private static class UnknownSchemaNodeImpl implements UnknownSchemaNode {
100         private final QName qname;
101         private SchemaPath path;
102         private String description;
103         private String reference;
104         private Status status = Status.CURRENT;
105         private List<UnknownSchemaNode> unknownNodes = Collections.emptyList();
106         private QName nodeType;
107         private String nodeParameter;
108
109         private UnknownSchemaNodeImpl(final QName qname) {
110             this.qname = qname;
111         }
112
113         @Override
114         public QName getQName() {
115             return qname;
116         }
117
118         @Override
119         public SchemaPath getPath() {
120             return path;
121         }
122
123         private void setPath(final SchemaPath path) {
124             this.path = path;
125         }
126
127         @Override
128         public String getDescription() {
129             return description;
130         }
131
132         private void setDescription(final String description) {
133             this.description = description;
134         }
135
136         @Override
137         public String getReference() {
138             return reference;
139         }
140
141         private void setReference(final String reference) {
142             this.reference = reference;
143         }
144
145         @Override
146         public Status getStatus() {
147             return status;
148         }
149
150         private void setStatus(final Status status) {
151             if (status != null) {
152                 this.status = status;
153             }
154         }
155
156         @Override
157         public List<UnknownSchemaNode> getUnknownSchemaNodes() {
158             return unknownNodes;
159         }
160
161         private void setUnknownSchemaNodes(
162                 final List<UnknownSchemaNode> unknownNodes) {
163             if (unknownNodes != null) {
164                 this.unknownNodes = unknownNodes;
165             }
166         }
167
168         @Override
169         public QName getNodeType() {
170             return nodeType;
171         }
172
173         private void setNodeType(final QName nodeType) {
174             this.nodeType = nodeType;
175         }
176
177         @Override
178         public String getNodeParameter() {
179             return nodeParameter;
180         }
181
182         private void setNodeParameter(final String nodeParameter) {
183             this.nodeParameter = nodeParameter;
184         }
185     }
186
187 }