Committed by
VinodKumarS-Huawei
[ONOS-3884] implement YANG module data model
Change-Id: I13b1e121fafe123f6eeb518481c287ce58a0b6cf
Showing
1 changed file
with
479 additions
and
0 deletions
1 | +/* | ||
2 | + * Copyright 2016 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | +package org.onosproject.yangutils.datamodel; | ||
17 | + | ||
18 | +import java.util.LinkedList; | ||
19 | +import java.util.List; | ||
20 | +/* | ||
21 | + * Reference:RFC 6020. | ||
22 | + * The "module" statement defines the module's name, | ||
23 | + * and groups all statements that belong to the module together. The "module" | ||
24 | + * statement's argument is the name of the module, followed by a block of | ||
25 | + * sub statements that hold detailed module information. | ||
26 | + * The module's sub statements | ||
27 | + * | ||
28 | + * +--------------+---------+-------------+-----------------------+ | ||
29 | + * |sub statement | section | cardinality | data model mapping | | ||
30 | + * +--------------+---------+-------------+-----------------------+ | ||
31 | + * | anyxml | 7.10 | 0..n | not supported | | ||
32 | + * | augment | 7.15 | 0..n | child nodes | | ||
33 | + * | choice | 7.9 | 0..n | child nodes | | ||
34 | + * | contact | 7.1.8 | 0..1 | string | | ||
35 | + * | container | 7.5 | 0..n | child nodes | | ||
36 | + * | description | 7.19.3 | 0..1 | string | | ||
37 | + * | deviation | 7.18.3 | 0..n | TODO | | ||
38 | + * | extension | 7.17 | 0..n | TODO | | ||
39 | + * | feature | 7.18.1 | 0..n | TODO | | ||
40 | + * | grouping | 7.11 | 0..n | child nodes | | ||
41 | + * | identity | 7.16 | 0..n | TODO | | ||
42 | + * | import | 7.1.5 | 0..n | list of import info | | ||
43 | + * | include | 7.1.6 | 0..n | list of include info | | ||
44 | + * | leaf | 7.6 | 0..n | list of leaf info | | ||
45 | + * | leaf-list | 7.7 | 0..n | list of leaf-list info| | ||
46 | + * | list | 7.8 | 0..n | child nodes | | ||
47 | + * | namespace | 7.1.3 | 1 | string/uri | | ||
48 | + * | notification | 7.14 | 0..n | TODO | | ||
49 | + * | organization | 7.1.7 | 0..1 | string | | ||
50 | + * | prefix | 7.1.4 | 1 | string | | ||
51 | + * | reference | 7.19.4 | 0..1 | string | | ||
52 | + * | revision | 7.1.9 | 0..n | revision | | ||
53 | + * | rpc | 7.13 | 0..n | TODO | | ||
54 | + * | typedef | 7.3 | 0..n | child nodes | | ||
55 | + * | uses | 7.12 | 0..n | child nodes | | ||
56 | + * | YANG-version | 7.1.2 | 0..1 | int | | ||
57 | + * +--------------+---------+-------------+-----------------------+ | ||
58 | + */ | ||
59 | + | ||
60 | +import org.onosproject.yangutils.datamodel.exceptions.DataModelException; | ||
61 | +import org.onosproject.yangutils.parser.Parsable; | ||
62 | +import org.onosproject.yangutils.parser.ParsableDataType; | ||
63 | + | ||
64 | +/** | ||
65 | + * Data model node to maintain information defined in YANG module. | ||
66 | + */ | ||
67 | +public class YangModule extends YangNode implements YangLeavesHolder, YangDesc, YangReference, Parsable { | ||
68 | + | ||
69 | + /** | ||
70 | + * Name of the module. | ||
71 | + */ | ||
72 | + private String name; | ||
73 | + | ||
74 | + /** | ||
75 | + * Reference:RFC 6020. | ||
76 | + * The "contact" statement provides contact information for the module. The | ||
77 | + * argument is a string that is used to specify contact information for the | ||
78 | + * person or persons to whom technical queries concerning this module should | ||
79 | + * be sent, such as their name, postal address, telephone number, and | ||
80 | + * electronic mail address. | ||
81 | + */ | ||
82 | + private String contact; | ||
83 | + | ||
84 | + /** | ||
85 | + * Reference:RFC 6020. | ||
86 | + * The "description" statement takes as an argument a string that contains a | ||
87 | + * human-readable textual description of this definition. The text is | ||
88 | + * provided in a language (or languages) chosen by the module developer; for | ||
89 | + * the sake of interoperability. | ||
90 | + */ | ||
91 | + private String description; | ||
92 | + | ||
93 | + /** | ||
94 | + * List of YANG modules imported. | ||
95 | + */ | ||
96 | + private List<YangImport> importList; | ||
97 | + | ||
98 | + /** | ||
99 | + * List of YANG sub-modules included. | ||
100 | + */ | ||
101 | + private List<YangInclude> includeList; | ||
102 | + | ||
103 | + /** | ||
104 | + * List of leaves at root level in the module. | ||
105 | + */ | ||
106 | + @SuppressWarnings("rawtypes") | ||
107 | + private List<YangLeaf> listOfLeaf; | ||
108 | + | ||
109 | + /** | ||
110 | + * List of leaf-lists at root level in the module. | ||
111 | + */ | ||
112 | + @SuppressWarnings("rawtypes") | ||
113 | + private List<YangLeafList> listOfLeafList; | ||
114 | + | ||
115 | + /** | ||
116 | + * Name space of the module. | ||
117 | + */ | ||
118 | + private YangNameSpace nameSpace; | ||
119 | + | ||
120 | + /** | ||
121 | + * Reference:RFC 6020. | ||
122 | + * The "organization" statement defines the party responsible for this | ||
123 | + * module. The argument is a string that is used to specify a textual | ||
124 | + * description of the organization(s) under whose auspices this module was | ||
125 | + * developed. | ||
126 | + */ | ||
127 | + private String organization; | ||
128 | + | ||
129 | + /** | ||
130 | + * Prefix to refer to the objects in module. | ||
131 | + */ | ||
132 | + private String prefix; | ||
133 | + | ||
134 | + /** | ||
135 | + * Reference of the module. | ||
136 | + */ | ||
137 | + private String reference; | ||
138 | + | ||
139 | + /** | ||
140 | + * Revision info of the module. | ||
141 | + */ | ||
142 | + private YangRevision revision; | ||
143 | + | ||
144 | + /** | ||
145 | + * YANG version. | ||
146 | + */ | ||
147 | + private byte version; | ||
148 | + | ||
149 | + /** | ||
150 | + * Create a YANG node of module type. | ||
151 | + */ | ||
152 | + public YangModule() { | ||
153 | + super(YangNodeType.MODULE_NODE); | ||
154 | + } | ||
155 | + | ||
156 | + /** | ||
157 | + * Get the module name. | ||
158 | + * | ||
159 | + * @return the module name. | ||
160 | + */ | ||
161 | + public String getName() { | ||
162 | + return name; | ||
163 | + } | ||
164 | + | ||
165 | + /** | ||
166 | + * set the module name. | ||
167 | + * | ||
168 | + * @param moduleName the module name to set. | ||
169 | + */ | ||
170 | + public void setName(String moduleName) { | ||
171 | + name = moduleName; | ||
172 | + } | ||
173 | + | ||
174 | + /** | ||
175 | + * Get the contact details of the module owner. | ||
176 | + * | ||
177 | + * @return the contact details of YANG owner. | ||
178 | + */ | ||
179 | + public String getContact() { | ||
180 | + return contact; | ||
181 | + } | ||
182 | + | ||
183 | + /** | ||
184 | + * Set the contact details of the module owner. | ||
185 | + * | ||
186 | + * @param contact the contact details of YANG owner. | ||
187 | + */ | ||
188 | + public void setContact(String contact) { | ||
189 | + this.contact = contact; | ||
190 | + } | ||
191 | + | ||
192 | + /** | ||
193 | + * Get the description of module. | ||
194 | + * | ||
195 | + * @return the description of YANG module. | ||
196 | + */ | ||
197 | + public String getDescription() { | ||
198 | + return description; | ||
199 | + } | ||
200 | + | ||
201 | + /** | ||
202 | + * Set the description of module. | ||
203 | + * | ||
204 | + * @param description set the description of YANG module. | ||
205 | + */ | ||
206 | + public void setDescription(String description) { | ||
207 | + this.description = description; | ||
208 | + } | ||
209 | + | ||
210 | + /** | ||
211 | + * Get the list of imported modules. | ||
212 | + * | ||
213 | + * @return the list of imported modules. | ||
214 | + */ | ||
215 | + public List<YangImport> getImportList() { | ||
216 | + return importList; | ||
217 | + } | ||
218 | + | ||
219 | + /** | ||
220 | + * prevent setting the import list from outside. | ||
221 | + * | ||
222 | + * @param importList the import list to set. | ||
223 | + */ | ||
224 | + private void setImportList(List<YangImport> importList) { | ||
225 | + this.importList = importList; | ||
226 | + } | ||
227 | + | ||
228 | + /** | ||
229 | + * Add the imported module information to the import list. | ||
230 | + * | ||
231 | + * @param importedModule module being imported. | ||
232 | + */ | ||
233 | + public void addImportedInfo(YangImport importedModule) { | ||
234 | + | ||
235 | + if (getImportList() == null) { | ||
236 | + setImportList(new LinkedList<YangImport>()); | ||
237 | + } | ||
238 | + | ||
239 | + getImportList().add(importedModule); | ||
240 | + | ||
241 | + return; | ||
242 | + } | ||
243 | + | ||
244 | + /** | ||
245 | + * Get the list of included sub modules. | ||
246 | + * | ||
247 | + * @return the included list of sub modules. | ||
248 | + */ | ||
249 | + public List<YangInclude> getIncludeList() { | ||
250 | + return includeList; | ||
251 | + } | ||
252 | + | ||
253 | + /** | ||
254 | + * Set the list of included sub modules. | ||
255 | + * | ||
256 | + * @param includeList the included list to set. | ||
257 | + */ | ||
258 | + private void setIncludeList(List<YangInclude> includeList) { | ||
259 | + this.includeList = includeList; | ||
260 | + } | ||
261 | + | ||
262 | + /** | ||
263 | + * Add the included sub module information to the include list. | ||
264 | + * | ||
265 | + * @param includeModule submodule being included. | ||
266 | + */ | ||
267 | + public void addIncludedInfo(YangInclude includeModule) { | ||
268 | + | ||
269 | + if (getIncludeList() == null) { | ||
270 | + setIncludeList(new LinkedList<YangInclude>()); | ||
271 | + } | ||
272 | + | ||
273 | + getIncludeList().add(includeModule); | ||
274 | + return; | ||
275 | + } | ||
276 | + | ||
277 | + /** | ||
278 | + * Get the list of leaves in module. | ||
279 | + * | ||
280 | + * @return the list of leaves. | ||
281 | + */ | ||
282 | + @SuppressWarnings("rawtypes") | ||
283 | + public List<YangLeaf> getListOfLeaf() { | ||
284 | + return listOfLeaf; | ||
285 | + } | ||
286 | + | ||
287 | + /** | ||
288 | + * Set the list of leaf in module. | ||
289 | + * | ||
290 | + * @param leafsList the list of leaf to set. | ||
291 | + */ | ||
292 | + @SuppressWarnings("rawtypes") | ||
293 | + private void setListOfLeaf(List<YangLeaf> leafsList) { | ||
294 | + listOfLeaf = leafsList; | ||
295 | + } | ||
296 | + | ||
297 | + /** | ||
298 | + * Add a leaf in module. | ||
299 | + * | ||
300 | + * @param leaf the leaf to be added. | ||
301 | + */ | ||
302 | + @SuppressWarnings("rawtypes") | ||
303 | + public void addLeaf(YangLeaf<?> leaf) { | ||
304 | + if (getListOfLeaf() == null) { | ||
305 | + setListOfLeaf(new LinkedList<YangLeaf>()); | ||
306 | + } | ||
307 | + | ||
308 | + getListOfLeaf().add(leaf); | ||
309 | + } | ||
310 | + | ||
311 | + /** | ||
312 | + * Get the list of leaf-list from module. | ||
313 | + * | ||
314 | + * @return the list of leaf-list. | ||
315 | + */ | ||
316 | + @SuppressWarnings("rawtypes") | ||
317 | + public List<YangLeafList> getListOfLeafList() { | ||
318 | + return listOfLeafList; | ||
319 | + } | ||
320 | + | ||
321 | + /** | ||
322 | + * Set the list of leaf-list in module. | ||
323 | + * | ||
324 | + * @param listOfLeafList the list of leaf-list to set. | ||
325 | + */ | ||
326 | + @SuppressWarnings("rawtypes") | ||
327 | + private void setListOfLeafList(List<YangLeafList> listOfLeafList) { | ||
328 | + this.listOfLeafList = listOfLeafList; | ||
329 | + } | ||
330 | + | ||
331 | + /** | ||
332 | + * Add a leaf-list in module. | ||
333 | + * | ||
334 | + * @param leafList the leaf-list to be added. | ||
335 | + */ | ||
336 | + @SuppressWarnings("rawtypes") | ||
337 | + public void addLeafList(YangLeafList<?> leafList) { | ||
338 | + if (getListOfLeafList() == null) { | ||
339 | + setListOfLeafList(new LinkedList<YangLeafList>()); | ||
340 | + } | ||
341 | + | ||
342 | + getListOfLeafList().add(leafList); | ||
343 | + } | ||
344 | + | ||
345 | + /** | ||
346 | + * Get the name space of module elements. | ||
347 | + * | ||
348 | + * @return the nameSpace. | ||
349 | + */ | ||
350 | + public YangNameSpace getNameSpace() { | ||
351 | + return nameSpace; | ||
352 | + } | ||
353 | + | ||
354 | + /** | ||
355 | + * Set the name space of module elements. | ||
356 | + * | ||
357 | + * @param nameSpace the nameSpace to set. | ||
358 | + */ | ||
359 | + public void setNameSpace(YangNameSpace nameSpace) { | ||
360 | + this.nameSpace = nameSpace; | ||
361 | + } | ||
362 | + | ||
363 | + /** | ||
364 | + * Get the modules organization. | ||
365 | + * | ||
366 | + * @return the organization. | ||
367 | + */ | ||
368 | + public String getOrganization() { | ||
369 | + return organization; | ||
370 | + } | ||
371 | + | ||
372 | + /** | ||
373 | + * Set the modules organization. | ||
374 | + * | ||
375 | + * @param org the organization to set. | ||
376 | + */ | ||
377 | + public void setOrganization(String org) { | ||
378 | + this.organization = org; | ||
379 | + } | ||
380 | + | ||
381 | + /** | ||
382 | + * Get the prefix. | ||
383 | + * | ||
384 | + * @return the prefix | ||
385 | + */ | ||
386 | + public String getPrefix() { | ||
387 | + return prefix; | ||
388 | + } | ||
389 | + | ||
390 | + /** | ||
391 | + * Set the prefix. | ||
392 | + * | ||
393 | + * @param prefix the prefix to set. | ||
394 | + */ | ||
395 | + public void setPrefix(String prefix) { | ||
396 | + this.prefix = prefix; | ||
397 | + } | ||
398 | + | ||
399 | + /** | ||
400 | + * Get the textual reference. | ||
401 | + * | ||
402 | + * @return the reference. | ||
403 | + */ | ||
404 | + public String getReference() { | ||
405 | + return reference; | ||
406 | + } | ||
407 | + | ||
408 | + /** | ||
409 | + * Set the textual reference. | ||
410 | + * | ||
411 | + * @param reference the reference to set. | ||
412 | + */ | ||
413 | + public void setReference(String reference) { | ||
414 | + this.reference = reference; | ||
415 | + } | ||
416 | + | ||
417 | + /** | ||
418 | + * Get the revision. | ||
419 | + * | ||
420 | + * @return the revision. | ||
421 | + */ | ||
422 | + public YangRevision getRevision() { | ||
423 | + return revision; | ||
424 | + } | ||
425 | + | ||
426 | + /** | ||
427 | + * Set the revision. | ||
428 | + * | ||
429 | + * @param revision the revision to set. | ||
430 | + */ | ||
431 | + public void setRevision(YangRevision revision) { | ||
432 | + this.revision = revision; | ||
433 | + } | ||
434 | + | ||
435 | + /** | ||
436 | + * Get the version. | ||
437 | + * | ||
438 | + * @return the version. | ||
439 | + */ | ||
440 | + public byte getVersion() { | ||
441 | + return version; | ||
442 | + } | ||
443 | + | ||
444 | + /** | ||
445 | + * Set the version. | ||
446 | + * | ||
447 | + * @param version the version to set. | ||
448 | + */ | ||
449 | + public void setVersion(byte version) { | ||
450 | + this.version = version; | ||
451 | + } | ||
452 | + | ||
453 | + /** | ||
454 | + * Returns the type of the parsed data. | ||
455 | + * | ||
456 | + * @return returns MODULE_DATA. | ||
457 | + */ | ||
458 | + public ParsableDataType getParsableDataType() { | ||
459 | + return ParsableDataType.MODULE_DATA; | ||
460 | + } | ||
461 | + | ||
462 | + /** | ||
463 | + * Validate the data on entering the corresponding parse tree node. | ||
464 | + * | ||
465 | + * @throws DataModelException a violation of data model rules | ||
466 | + */ | ||
467 | + public void validateDataOnEntry() throws DataModelException { | ||
468 | + // TODO auto-generated method stub, to be implemented by parser | ||
469 | + } | ||
470 | + | ||
471 | + /** | ||
472 | + * Validate the data on exiting the corresponding parse tree node. | ||
473 | + * | ||
474 | + * @throws DataModelException a violation of data model rules | ||
475 | + */ | ||
476 | + public void validateDataOnExit() throws DataModelException { | ||
477 | + // TODO auto-generated method stub, to be implemented by parser | ||
478 | + } | ||
479 | +} |
-
Please register or login to post a comment