Bug 1411-4: MDSAL Binding2 Generator Impl
[mdsal.git] / binding2 / mdsal-binding2-generator-impl / src / main / twirl / org / opendaylight / mdsal / binding2 / yangTemplateWriteDataSchemaNode.scala.txt
1 @*
2  * Copyright (c) 2016 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
9 @**********************************************************
10 * Twirl YangTemplate for generating yang snippets.        *
11 * Twirl is transformed to Scala and compiled. Then,       *
12 * it can be called from Java with particular input        *
13 * parameters to render desired output code.               *
14 *                                                         *
15 * Note: we should introduce our own format instead of txt *
16 ***********************************************************@
17
18 @import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode
19 @import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode
20 @import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode
21 @import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode
22 @import org.opendaylight.yangtools.yang.model.api.DataSchemaNode
23 @import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode
24 @import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode
25 @import org.opendaylight.yangtools.yang.model.api.ListSchemaNode
26 @import org.opendaylight.yangtools.yang.model.api.SchemaNode
27 @import org.opendaylight.yangtools.yang.model.api.Status
28 @import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode
29
30 @(dataSchemaNode: DataSchemaNode)
31 @if(dataSchemaNode.isInstanceOf[ContainerSchemaNode]) {
32     @writeContSchemaNode(dataSchemaNode.asInstanceOf[ContainerSchemaNode])
33 }
34 @if(dataSchemaNode.isInstanceOf[AnyXmlSchemaNode]) {
35     anyxml @{dataSchemaNode.asInstanceOf[AnyXmlSchemaNode].getQName().getLocalName()}
36     @if(dataSchemaNode.asInstanceOf[AnyXmlSchemaNode].getStatus() != Status.CURRENT) {
37         ;
38     } else {
39         {
40             status @{dataSchemaNode.asInstanceOf[AnyXmlSchemaNode].getStatus()};
41         }
42     }
43 }
44 @if(dataSchemaNode.isInstanceOf[LeafSchemaNode]) {
45     leaf @{dataSchemaNode.asInstanceOf[LeafSchemaNode].getQName().getLocalName()} {
46         type @{dataSchemaNode.asInstanceOf[LeafSchemaNode].getType().getQName().getLocalName()};
47     }
48     @if(dataSchemaNode.asInstanceOf[LeafSchemaNode].getStatus() != Status.CURRENT) {
49         status @{dataSchemaNode.asInstanceOf[LeafSchemaNode].getStatus()};
50     }
51 }
52 @if(dataSchemaNode.isInstanceOf[LeafListSchemaNode]) {
53     leaf-list @{dataSchemaNode.asInstanceOf[LeafListSchemaNode].getQName().getLocalName()} {
54         type @{dataSchemaNode.asInstanceOf[LeafListSchemaNode].getType().getQName().getLocalName()};
55     }
56     @if(dataSchemaNode.asInstanceOf[LeafListSchemaNode].getStatus() != Status.CURRENT) {
57         status @{dataSchemaNode.asInstanceOf[LeafListSchemaNode].getStatus()};
58     }
59 }
60 @if(dataSchemaNode.isInstanceOf[ChoiceCaseNode]) {
61     case @{dataSchemaNode.asInstanceOf[ChoiceCaseNode].getQName().getLocalName()} {
62         @for(childNode <- dataSchemaNode.asInstanceOf[ChoiceCaseNode].getChildNodes()) {
63             @yangTemplateWriteDataSchemaNode(childNode)
64         }
65     }
66     @if(dataSchemaNode.asInstanceOf[ChoiceCaseNode].getStatus() != Status.CURRENT) {
67         status @{dataSchemaNode.asInstanceOf[ChoiceCaseNode].getStatus()};
68     }
69 }
70 @if(dataSchemaNode.isInstanceOf[ChoiceSchemaNode]) {
71     choice @{dataSchemaNode.asInstanceOf[ChoiceSchemaNode].getQName().getLocalName()} {
72         @for(childNode <- dataSchemaNode.asInstanceOf[ChoiceSchemaNode].getCases()) {
73             @yangTemplateWriteDataSchemaNode(childNode)
74         }
75     }
76     @if(dataSchemaNode.asInstanceOf[ChoiceSchemaNode].getStatus() != Status.CURRENT) {
77         status @{dataSchemaNode.asInstanceOf[ChoiceSchemaNode].getStatus()};
78     }
79 }
80 @if(dataSchemaNode.isInstanceOf[ListSchemaNode]) {
81     @writeListSchemaNode(dataSchemaNode.asInstanceOf[ListSchemaNode])
82 }
83
84 @writeContSchemaNode(container: ContainerSchemaNode) = {
85     container @{container.getQName().getLocalName()} {
86         @if(container.getChildNodes() != null && !container.getChildNodes().isEmpty()) {
87             @yangTemplateWriteDataSchemaNodes(container.getChildNodes())
88         }
89         @if(container.getAvailableAugmentations() != null && !container.getAvailableAugmentations().isEmpty()) {
90             @yangTemplateWriteAugments(container.getAvailableAugmentations())
91         }
92         @if(container.getGroupings() != null && !container.getGroupings().isEmpty()) {
93             @yangTemplateWriteGroupingDefs(container.getGroupings())
94         }
95         @if(container.getUses() != null && !container.getUses().isEmpty()) {
96             @yangTemplateWriteUsesNodes(container.getUses())
97         }
98         @if(container.getStatus() != Status.CURRENT) {
99             status @{container.getStatus()};
100         }
101         @if(container.getUnknownSchemaNodes() != null && !container.getUnknownSchemaNodes().isEmpty()) {
102             @yangTemplateWriteUnknownSchemaNodes(container.getUnknownSchemaNodes())
103         }
104     }
105 }
106
107 @writeListSchemaNode(list: ListSchemaNode) = {
108     list @{list.getQName().getLocalName()} {
109         key "@for(listKey <- list.getKeyDefinition()) {
110             @{listKey.getLocalName()}
111         }"
112         @if(list.getChildNodes() != null && !list.getChildNodes().isEmpty()) {
113             @yangTemplateWriteDataSchemaNodes(list.getChildNodes())
114         }
115         @if(list.getAvailableAugmentations() != null && !list.getAvailableAugmentations().isEmpty()) {
116             @yangTemplateWriteAugments(list.getAvailableAugmentations())
117         }
118         @if(list.getGroupings() != null && !list.getGroupings().isEmpty()) {
119             @yangTemplateWriteGroupingDefs(list.getGroupings())
120         }
121         @if(list.getUses() != null && !list.getUses().isEmpty()) {
122             @yangTemplateWriteUsesNodes(list.getUses())
123         }
124         @if(list.getStatus() != Status.CURRENT) {
125             status @{list.getStatus()};
126         }
127         @if(list.getUnknownSchemaNodes() != null && !list.getUnknownSchemaNodes().isEmpty()) {
128             @yangTemplateWriteUnknownSchemaNodes(list.getUnknownSchemaNodes())
129         }
130     }
131 }