Removed Equals/HashCodeBuilder for ARP/LLDPTLV
[controller.git] / opendaylight / sal / yang-prototype / code-generator / yang-model-parser-impl / src / main / java / org / opendaylight / controller / yang / parser / builder / impl / LeafSchemaNodeBuilder.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.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.ConstraintDefinition;
16 import org.opendaylight.controller.yang.model.api.LeafSchemaNode;
17 import org.opendaylight.controller.yang.model.api.SchemaPath;
18 import org.opendaylight.controller.yang.model.api.Status;
19 import org.opendaylight.controller.yang.model.api.TypeDefinition;
20 import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
21 import org.opendaylight.controller.yang.parser.builder.api.AbstractTypeAwareBuilder;
22 import org.opendaylight.controller.yang.parser.builder.api.DataSchemaNodeBuilder;
23 import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder;
24
25 public final class LeafSchemaNodeBuilder extends AbstractTypeAwareBuilder
26         implements DataSchemaNodeBuilder, SchemaNodeBuilder {
27     private boolean isBuilt;
28     private final LeafSchemaNodeImpl instance;
29     private final int line;
30     // SchemaNode args
31     private final QName qname;
32     private SchemaPath path;
33     private String description;
34     private String reference;
35     private Status status = Status.CURRENT;
36     private final List<UnknownSchemaNodeBuilder> addedUnknownNodes = new ArrayList<UnknownSchemaNodeBuilder>();
37     // DataSchemaNode args
38     private boolean augmenting;
39     private boolean configuration;
40     private final ConstraintsBuilder constraints;
41     // leaf args
42     private String defaultStr;
43     private String unitsStr;
44
45     public LeafSchemaNodeBuilder(final QName qname, final int line) {
46         this.qname = qname;
47         this.line = line;
48         instance = new LeafSchemaNodeImpl(qname);
49         constraints = new ConstraintsBuilder(line);
50     }
51
52     @Override
53     public LeafSchemaNode build() {
54         if (!isBuilt) {
55             instance.setPath(path);
56             instance.setConstraints(constraints.build());
57             instance.setDescription(description);
58             instance.setReference(reference);
59             instance.setStatus(status);
60             instance.setAugmenting(augmenting);
61             instance.setConfiguration(configuration);
62             instance.setDefault(defaultStr);
63             instance.setUnits(unitsStr);
64
65             // TYPE
66             if (type == null) {
67                 instance.setType(typedef.build());
68             } else {
69                 instance.setType(type);
70             }
71
72             // UNKNOWN NODES
73             final List<UnknownSchemaNode> unknownNodes = new ArrayList<UnknownSchemaNode>();
74             for (UnknownSchemaNodeBuilder b : addedUnknownNodes) {
75                 unknownNodes.add(b.build());
76             }
77             instance.setUnknownSchemaNodes(unknownNodes);
78
79             isBuilt = true;
80         }
81         return instance;
82     }
83
84     @Override
85     public int getLine() {
86         return line;
87     }
88
89     @Override
90     public QName getQName() {
91         return qname;
92     }
93
94     public SchemaPath getPath() {
95         return path;
96     }
97
98     @Override
99     public void setPath(final SchemaPath path) {
100         this.path = path;
101     }
102
103     @Override
104     public ConstraintsBuilder getConstraints() {
105         return constraints;
106     }
107
108     @Override
109     public void addUnknownSchemaNode(final UnknownSchemaNodeBuilder unknownNode) {
110         addedUnknownNodes.add(unknownNode);
111     }
112
113     public List<UnknownSchemaNodeBuilder> getUnknownNodes() {
114         return addedUnknownNodes;
115     }
116
117     public String getDescription() {
118         return description;
119     }
120
121     @Override
122     public void setDescription(final String description) {
123         this.description = description;
124     }
125
126     public String getReference() {
127         return reference;
128     }
129
130     @Override
131     public void setReference(final String reference) {
132         this.reference = reference;
133     }
134
135     public Status getStatus() {
136         return status;
137     }
138
139     @Override
140     public void setStatus(final Status status) {
141         if (status != null) {
142             this.status = status;
143         }
144     }
145
146     public boolean isAugmenting() {
147         return augmenting;
148     }
149
150     @Override
151     public void setAugmenting(final boolean augmenting) {
152         this.augmenting = augmenting;
153     }
154
155     public boolean isConfiguration() {
156         return configuration;
157     }
158
159     @Override
160     public void setConfiguration(final boolean configuration) {
161         instance.setConfiguration(configuration);
162     }
163
164     public String getDefaultStr() {
165         return defaultStr;
166     }
167
168     public void setDefaultStr(String defaultStr) {
169         this.defaultStr = defaultStr;
170     }
171
172     public String getUnits() {
173         return unitsStr;
174     }
175
176     public void setUnits(String unitsStr) {
177         this.unitsStr = unitsStr;
178     }
179
180     private final class LeafSchemaNodeImpl implements LeafSchemaNode {
181         private final QName qname;
182         private SchemaPath path;
183         private String description;
184         private String reference;
185         private Status status = Status.CURRENT;
186         private boolean augmenting;
187         private boolean configuration;
188         private ConstraintDefinition constraintsDef;
189         private TypeDefinition<?> type;
190         private List<UnknownSchemaNode> unknownNodes = Collections.emptyList();
191         private String defaultStr;
192         private String unitsStr;
193
194         private LeafSchemaNodeImpl(final QName qname) {
195             this.qname = qname;
196         }
197
198         @Override
199         public QName getQName() {
200             return qname;
201         }
202
203         @Override
204         public SchemaPath getPath() {
205             return path;
206         }
207
208         private void setPath(final SchemaPath path) {
209             this.path = path;
210         }
211
212         @Override
213         public String getDescription() {
214             return description;
215         }
216
217         private void setDescription(String description) {
218             this.description = description;
219         }
220
221         @Override
222         public String getReference() {
223             return reference;
224         }
225
226         private void setReference(String reference) {
227             this.reference = reference;
228         }
229
230         @Override
231         public Status getStatus() {
232             return status;
233         }
234
235         private void setStatus(Status status) {
236             if (status != null) {
237                 this.status = status;
238             }
239         }
240
241         @Override
242         public boolean isAugmenting() {
243             return augmenting;
244         }
245
246         private void setAugmenting(boolean augmenting) {
247             this.augmenting = augmenting;
248         }
249
250         @Override
251         public boolean isConfiguration() {
252             return configuration;
253         }
254
255         private void setConfiguration(boolean configuration) {
256             this.configuration = configuration;
257         }
258
259         @Override
260         public ConstraintDefinition getConstraints() {
261             return constraintsDef;
262         }
263
264         private void setConstraints(ConstraintDefinition constraintsDef) {
265             this.constraintsDef = constraintsDef;
266         }
267
268         @Override
269         public TypeDefinition<?> getType() {
270             return type;
271         }
272
273         private void setType(TypeDefinition<? extends TypeDefinition<?>> type) {
274             this.type = type;
275         }
276
277         @Override
278         public List<UnknownSchemaNode> getUnknownSchemaNodes() {
279             return unknownNodes;
280         }
281
282         private void setUnknownSchemaNodes(List<UnknownSchemaNode> unknownNodes) {
283             if (unknownNodes != null) {
284                 this.unknownNodes = unknownNodes;
285             }
286         }
287
288         public String getDefault() {
289             return defaultStr;
290         }
291
292         private void setDefault(String defaultStr) {
293             this.defaultStr = defaultStr;
294         }
295
296         public String getUnits() {
297             return unitsStr;
298         }
299
300         public void setUnits(String unitsStr) {
301             this.unitsStr = unitsStr;
302         }
303
304         @Override
305         public int hashCode() {
306             final int prime = 31;
307             int result = 1;
308             result = prime * result + ((qname == null) ? 0 : qname.hashCode());
309             result = prime * result + ((path == null) ? 0 : path.hashCode());
310             return result;
311         }
312
313         @Override
314         public boolean equals(Object obj) {
315             if (this == obj) {
316                 return true;
317             }
318             if (obj == null) {
319                 return false;
320             }
321             if (getClass() != obj.getClass()) {
322                 return false;
323             }
324             LeafSchemaNodeImpl other = (LeafSchemaNodeImpl) obj;
325             if (qname == null) {
326                 if (other.qname != null) {
327                     return false;
328                 }
329             } else if (!qname.equals(other.qname)) {
330                 return false;
331             }
332             if (path == null) {
333                 if (other.path != null) {
334                     return false;
335                 }
336             } else if (!path.equals(other.path)) {
337                 return false;
338             }
339             return true;
340         }
341
342         @Override
343         public String toString() {
344             StringBuilder sb = new StringBuilder(
345                     LeafSchemaNodeImpl.class.getSimpleName());
346             sb.append("[");
347             sb.append("qname=" + qname);
348             sb.append(", path=" + path);
349             sb.append("]");
350             return sb.toString();
351         }
352     }
353
354 }