Added YANG typedef support in the YANG parser
[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 final UnknownSchemaNodeImpl instance;
24     private final List<UnknownSchemaNodeBuilder> addedUnknownNodes = new ArrayList<UnknownSchemaNodeBuilder>();
25
26     UnknownSchemaNodeBuilder(final QName qname) {
27         this.qname = qname;
28         instance = new UnknownSchemaNodeImpl(qname);
29     }
30
31
32     @Override
33     public UnknownSchemaNode build() {
34         // UNKNOWN NODES
35         final List<UnknownSchemaNode> unknownNodes = new ArrayList<UnknownSchemaNode>();
36         for(UnknownSchemaNodeBuilder b : addedUnknownNodes) {
37             unknownNodes.add(b.build());
38         }
39         instance.setUnknownSchemaNodes(unknownNodes);
40         return instance;
41     }
42
43     @Override
44     public QName getQName() {
45         return qname;
46     }
47
48     @Override
49     public void setPath(SchemaPath schemaPath) {
50         instance.setPath(schemaPath);
51     }
52
53     @Override
54     public void setDescription(String description) {
55         instance.setDescription(description);
56     }
57
58     @Override
59     public void setReference(String reference) {
60         instance.setReference(reference);
61     }
62
63     @Override
64     public void setStatus(Status status) {
65         instance.setStatus(status);
66     }
67
68     @Override
69     public void addUnknownSchemaNode(UnknownSchemaNodeBuilder unknownSchemaNodeBuilder) {
70         addedUnknownNodes.add(unknownSchemaNodeBuilder);
71     }
72
73     private static class UnknownSchemaNodeImpl implements UnknownSchemaNode {
74         private final QName qname;
75         private SchemaPath path;
76         private String description;
77         private String reference;
78         private Status status = Status.CURRENT;
79         private List<UnknownSchemaNode> unknownSchemaNodes = Collections.emptyList();
80
81         private UnknownSchemaNodeImpl(QName qname) {
82             this.qname = qname;
83         }
84
85         @Override
86         public QName getQName() {
87             return qname;
88         }
89
90         @Override
91         public SchemaPath getPath() {
92             return path;
93         }
94         private void setPath(SchemaPath path) {
95             this.path = path;
96         }
97
98         @Override
99         public String getDescription() {
100             return description;
101         }
102
103         private void setDescription(String description) {
104             this.description = description;
105         }
106
107         @Override
108         public String getReference() {
109             return reference;
110         }
111
112         private void setReference(String reference) {
113             this.reference = reference;
114         }
115
116         @Override
117         public Status getStatus() {
118             return status;
119         }
120
121         private void setStatus(Status status) {
122             if(status != null) {
123                 this.status = status;
124             }
125         }
126
127         @Override
128         public List<UnknownSchemaNode> getUnknownSchemaNodes() {
129             return unknownSchemaNodes;
130         }
131
132         private void setUnknownSchemaNodes(List<UnknownSchemaNode> unknownSchemaNodes) {
133             if(unknownSchemaNodes != null) {
134                 this.unknownSchemaNodes = unknownSchemaNodes;
135             }
136         }
137     }
138
139 }