Merge "removed dead code that was causing a warning"
[controller.git] / opendaylight / sal / yang-prototype / code-generator / yang-model-parser-impl / src / main / java / org / opendaylight / controller / model / parser / builder / TypedefBuilder.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.SchemaNodeBuilder;\r
13 import org.opendaylight.controller.model.parser.api.TypeAwareBuilder;\r
14 import org.opendaylight.controller.model.parser.api.TypeDefinitionBuilder;\r
15 import org.opendaylight.controller.model.util.UnknownType;\r
16 import org.opendaylight.controller.model.util.YangTypesConverter;\r
17 import org.opendaylight.controller.yang.common.QName;\r
18 import org.opendaylight.controller.yang.model.api.ExtensionDefinition;\r
19 import org.opendaylight.controller.yang.model.api.SchemaPath;\r
20 import org.opendaylight.controller.yang.model.api.Status;\r
21 import org.opendaylight.controller.yang.model.api.TypeDefinition;\r
22 \r
23 \r
24 public class TypedefBuilder implements TypeDefinitionBuilder, SchemaNodeBuilder, TypeAwareBuilder {\r
25 \r
26         private final QName qname;\r
27         private SchemaPath schemaPath;\r
28         private TypeDefinition<?> baseType;\r
29 \r
30         private String description;\r
31         private String reference;\r
32         private Status status;\r
33 \r
34         TypedefBuilder(QName qname) {\r
35                 this.qname = qname;\r
36         }\r
37 \r
38         @Override\r
39         public TypeDefinition<? extends TypeDefinition<?>> build() {\r
40                 final TypeDefinition<?> type = YangTypesConverter.javaTypeForBaseYangType(qname);\r
41                 if(type != null) {\r
42                         return type;\r
43                 } else {\r
44                         if(baseType != null) {\r
45                                 // typedef\r
46                                 TypeDefinitionImpl instance = new TypeDefinitionImpl(qname);\r
47                                 instance.setDescription(description);\r
48                                 instance.setReference(reference);\r
49                                 instance.setStatus(status);\r
50                                 instance.setPath(schemaPath);\r
51                                 instance.setBaseType(baseType);\r
52                                 return instance;\r
53                         } else {\r
54                                 // type\r
55                                 final UnknownType.Builder unknownBuilder = new UnknownType.Builder(qname, description, reference);\r
56                                 unknownBuilder.status(status);\r
57                                 return unknownBuilder.build();\r
58                         }\r
59                 }\r
60         }\r
61 \r
62         @Override\r
63         public QName getQName() {\r
64                 return qname;\r
65         }\r
66 \r
67         @Override\r
68         public void setPath(final SchemaPath schemaPath) {\r
69                 this.schemaPath = schemaPath;\r
70         }\r
71 \r
72         @Override\r
73         public void setDescription(final String description) {\r
74                 this.description = description;\r
75         }\r
76 \r
77         @Override\r
78         public void setReference(final String reference) {\r
79                 this.reference = reference;\r
80         }\r
81 \r
82         @Override\r
83         public void setStatus(final Status status) {\r
84                 if(status != null) {\r
85                         this.status = status;\r
86                 }\r
87         }\r
88 \r
89         @Override\r
90         public TypeDefinition<?> getType() {\r
91                 return baseType;\r
92         }\r
93 \r
94         @Override\r
95         public void setType(TypeDefinition<?> baseType) {\r
96                 this.baseType = baseType;\r
97         }\r
98 \r
99         @Override\r
100         public TypeDefinition<?> getBaseType() {\r
101                 return baseType;\r
102         }\r
103 \r
104 \r
105 \r
106         private static class TypeDefinitionImpl<T extends TypeDefinition<T>> implements TypeDefinition<T> {\r
107 \r
108                 private final QName qname;\r
109                 private SchemaPath path;\r
110                 private String description;\r
111                 private String reference;\r
112                 private Status status = Status.CURRENT;\r
113                 private T baseType;\r
114 \r
115                 private TypeDefinitionImpl(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                 private void setPath(SchemaPath path) {\r
129                         this.path = path;\r
130                 }\r
131 \r
132                 @Override\r
133                 public String getDescription() {\r
134                         return description;\r
135                 }\r
136                 private void setDescription(String description) {\r
137                         this.description = description;\r
138                 }\r
139 \r
140                 @Override\r
141                 public String getReference() {\r
142                         return reference;\r
143                 }\r
144                 private void setReference(String reference) {\r
145                         this.reference = reference;\r
146                 }\r
147 \r
148                 @Override\r
149                 public Status getStatus() {\r
150                         return status;\r
151                 }\r
152                 private void setStatus(Status status) {\r
153                         this.status = status;\r
154                 }\r
155 \r
156                 @Override\r
157                 public T getBaseType() {\r
158                         return baseType;\r
159                 }\r
160                 private void setBaseType(T type) {\r
161                         this.baseType = type;\r
162                 }\r
163 \r
164                 @Override\r
165                 public String getUnits() {\r
166                         // TODO Auto-generated method stub\r
167                         return null;\r
168                 }\r
169 \r
170                 @Override\r
171                 public Object getDefaultValue() {\r
172                         // TODO Auto-generated method stub\r
173                         return null;\r
174                 }\r
175 \r
176                 @Override\r
177                 public List<ExtensionDefinition> getExtensionSchemaNodes() {\r
178                         // TODO Auto-generated method stub\r
179                         return null;\r
180                 }\r
181 \r
182                 @Override\r
183                 public String toString() {\r
184                         final StringBuilder sb = new StringBuilder(TypeDefinitionImpl.class.getSimpleName());\r
185                         sb.append("[");\r
186                         sb.append("qname="+ qname);\r
187                         sb.append(", path="+ path);\r
188                         sb.append(", description="+ description);\r
189                         sb.append(", reference="+ reference);\r
190                         sb.append(", status="+ status);\r
191                         sb.append(", baseType="+ baseType +"]");\r
192                         return sb.toString();\r
193                 }\r
194         }\r
195 \r
196 }\r