f50ac8a665e155b5231cef9faacf2cd0322c23e4
[controller.git] / opendaylight / sal / yang-prototype / code-generator / yang-model-parser-impl / src / main / java / org / opendaylight / controller / model / parser / builder / LeafSchemaNodeBuilder.java
1 /*\r
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.\r
3  *\r
4  * This program and the accompanying materials are made available under the\r
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
6  * and is available at http://www.eclipse.org/legal/epl-v10.html\r
7  */\r
8 package org.opendaylight.controller.model.parser.builder;\r
9 \r
10 import java.util.List;\r
11 \r
12 import org.opendaylight.controller.model.parser.api.DataSchemaNodeBuilder;\r
13 import org.opendaylight.controller.model.parser.api.SchemaNodeBuilder;\r
14 import org.opendaylight.controller.model.parser.api.TypeAwareBuilder;\r
15 import org.opendaylight.controller.yang.common.QName;\r
16 import org.opendaylight.controller.yang.model.api.ConstraintDefinition;\r
17 import org.opendaylight.controller.yang.model.api.ExtensionDefinition;\r
18 import org.opendaylight.controller.yang.model.api.LeafSchemaNode;\r
19 import org.opendaylight.controller.yang.model.api.MustDefinition;\r
20 import org.opendaylight.controller.yang.model.api.SchemaPath;\r
21 import org.opendaylight.controller.yang.model.api.Status;\r
22 import org.opendaylight.controller.yang.model.api.TypeDefinition;\r
23 \r
24 \r
25 public class LeafSchemaNodeBuilder implements DataSchemaNodeBuilder,\r
26                 SchemaNodeBuilder, TypeAwareBuilder, MustAwareBuilder {\r
27 \r
28         private final QName qname;\r
29         private final LeafSchemaNodeImpl instance;\r
30         private TypeDefinition<?> type;\r
31         private MustDefinitionBuilder mustDefinitionBuilder;\r
32 \r
33         LeafSchemaNodeBuilder(QName qname) {\r
34                 this.qname = qname;\r
35                 instance = new LeafSchemaNodeImpl(qname);\r
36         }\r
37 \r
38         @Override\r
39         public LeafSchemaNode build() {\r
40                 if (mustDefinitionBuilder != null) {\r
41                         MustDefinition mustDefinition = mustDefinitionBuilder.build();\r
42                         instance.setMustDefinition(mustDefinition);\r
43                 }\r
44                 return instance;\r
45         }\r
46 \r
47         @Override\r
48         public QName getQName() {\r
49                 return qname;\r
50         }\r
51 \r
52         @Override\r
53         public void setPath(SchemaPath path) {\r
54                 instance.setPath(path);\r
55         }\r
56 \r
57         @Override\r
58         public void setDescription(String description) {\r
59                 instance.setDescription(description);\r
60         }\r
61 \r
62         @Override\r
63         public void setReference(String reference) {\r
64                 instance.setReference(reference);\r
65         }\r
66 \r
67         @Override\r
68         public void setStatus(Status status) {\r
69                 instance.setStatus(status);\r
70         }\r
71 \r
72         public void setAugmenting(boolean augmenting) {\r
73                 instance.setAugmenting(augmenting);\r
74         }\r
75 \r
76         public void setConfiguration(boolean configuration) {\r
77                 instance.setConfiguration(configuration);\r
78         }\r
79 \r
80         public void setConstraints(ConstraintDefinition constraints) {\r
81                 instance.setConstraints(constraints);\r
82         }\r
83 \r
84         @Override\r
85         public TypeDefinition<?> getType() {\r
86                 return type;\r
87         }\r
88 \r
89         @Override\r
90         public void setType(TypeDefinition<?> type) {\r
91                 this.type = type;\r
92                 instance.setType(type);\r
93         }\r
94 \r
95         @Override\r
96         public void setMustDefinitionBuilder(\r
97                         MustDefinitionBuilder mustDefinitionBuilder) {\r
98                 this.mustDefinitionBuilder = mustDefinitionBuilder;\r
99         }\r
100 \r
101         private class LeafSchemaNodeImpl implements LeafSchemaNode {\r
102                 private final QName qname;\r
103                 private SchemaPath path;\r
104                 private String description;\r
105                 private String reference;\r
106                 private Status status = Status.CURRENT;\r
107 \r
108                 private boolean augmenting;\r
109                 private boolean configuration;\r
110                 private ConstraintDefinition constraints;\r
111 \r
112                 private TypeDefinition<?> type;\r
113                 private MustDefinition mustDefinition;\r
114 \r
115                 private LeafSchemaNodeImpl(QName qname) {\r
116                         this.qname = qname;\r
117                 }\r
118 \r
119                 @Override\r
120                 public QName getQName() {\r
121                         return qname;\r
122                 }\r
123 \r
124                 @Override\r
125                 public SchemaPath getPath() {\r
126                         return path;\r
127                 }\r
128 \r
129                 private void setPath(SchemaPath path) {\r
130                         this.path = path;\r
131                 }\r
132 \r
133                 @Override\r
134                 public String getDescription() {\r
135                         return description;\r
136                 }\r
137 \r
138                 private void setDescription(String description) {\r
139                         this.description = description;\r
140                 }\r
141 \r
142                 @Override\r
143                 public String getReference() {\r
144                         return reference;\r
145                 }\r
146 \r
147                 private void setReference(String reference) {\r
148                         this.reference = reference;\r
149                 }\r
150 \r
151                 @Override\r
152                 public Status getStatus() {\r
153                         return status;\r
154                 }\r
155 \r
156                 private void setStatus(Status status) {\r
157                         if (status != null) {\r
158                                 this.status = status;\r
159                         }\r
160                 }\r
161 \r
162                 @Override\r
163                 public boolean isAugmenting() {\r
164                         return augmenting;\r
165                 }\r
166 \r
167                 private void setAugmenting(boolean augmenting) {\r
168                         this.augmenting = augmenting;\r
169                 }\r
170 \r
171                 @Override\r
172                 public boolean isConfiguration() {\r
173                         return configuration;\r
174                 }\r
175 \r
176                 private void setConfiguration(boolean configuration) {\r
177                         this.configuration = configuration;\r
178                 }\r
179 \r
180                 @Override\r
181                 public ConstraintDefinition getConstraints() {\r
182                         return constraints;\r
183                 }\r
184 \r
185                 private void setConstraints(ConstraintDefinition constraints) {\r
186                         this.constraints = constraints;\r
187                 }\r
188 \r
189                 @Override\r
190                 public TypeDefinition<?> getType() {\r
191                         return type;\r
192                 }\r
193 \r
194                 private void setType(TypeDefinition<? extends TypeDefinition<?>> type) {\r
195                         this.type = type;\r
196                 }\r
197 \r
198                 @Override\r
199                 public MustDefinition getMustDefinition() {\r
200                         return mustDefinition;\r
201                 }\r
202 \r
203                 private void setMustDefinition(MustDefinition mustDefinition) {\r
204                         this.mustDefinition = mustDefinition;\r
205                 }\r
206 \r
207                 @Override\r
208                 public List<ExtensionDefinition> getExtensionSchemaNodes() {\r
209                         // TODO Auto-generated method stub\r
210                         return null;\r
211                 }\r
212 \r
213                 @Override\r
214                 public String toString() {\r
215                         StringBuilder sb = new StringBuilder(\r
216                                         LeafSchemaNodeImpl.class.getSimpleName());\r
217                         sb.append("[");\r
218                         sb.append("qname=" + qname);\r
219                         sb.append(", path=" + path);\r
220                         sb.append(", description=" + description);\r
221                         sb.append(", reference=" + reference);\r
222                         sb.append(", status=" + status);\r
223                         sb.append(", augmenting=" + augmenting);\r
224                         sb.append(", configuration=" + configuration);\r
225                         sb.append(", constraints=" + constraints);\r
226                         sb.append(", type=" + type);\r
227                         sb.append(", mustDefinition=" + mustDefinition);\r
228                         sb.append("]");\r
229                         return sb.toString();\r
230                 }\r
231         }\r
232 }