blob: cc5cc6cbb0b7fb487b9d88fa26b3523476f0b213 [file] [log] [blame]
Bharat saraswal4bf8b152016-02-25 02:26:43 +05301/*
Brian O'Connor5ab426f2016-04-09 01:19:45 -07002 * Copyright 2016-present Open Networking Laboratory
Bharat saraswal4bf8b152016-02-25 02:26:43 +05303 *
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
17package org.onosproject.yangutils.translator.tojava.utils;
18
19import org.onosproject.yangutils.datamodel.YangDataTypes;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053020import org.onosproject.yangutils.datamodel.YangDerivedInfo;
Bharat saraswald72411a2016-04-19 01:00:16 +053021import org.onosproject.yangutils.datamodel.YangEnumeration;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053022import org.onosproject.yangutils.datamodel.YangNode;
Bharat saraswal4bf8b152016-02-25 02:26:43 +053023import org.onosproject.yangutils.datamodel.YangType;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053024import org.onosproject.yangutils.datamodel.YangTypeDef;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053025import org.onosproject.yangutils.datamodel.YangUnion;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053026import org.onosproject.yangutils.translator.exception.TranslatorException;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053027import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053028import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
Bharat saraswald72411a2016-04-19 01:00:16 +053029import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaEnumeration;
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053030import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModule;
31import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaSubModule;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053032import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaTypeDef;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053033import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaUnion;
Bharat saraswale2d51d62016-03-23 19:40:35 +053034
Bharat saraswale2d51d62016-03-23 19:40:35 +053035import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
janani b4a6711a2016-05-17 13:12:22 +053036import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCapitalCase;
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +053037import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getRootPackage;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053038import static org.onosproject.yangutils.utils.UtilConstants.BIG_INTEGER;
Bharat saraswale2d51d62016-03-23 19:40:35 +053039import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE;
40import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_WRAPPER;
41import static org.onosproject.yangutils.utils.UtilConstants.BYTE;
42import static org.onosproject.yangutils.utils.UtilConstants.BYTE_WRAPPER;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053043import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
Bharat saraswalc0e04842016-05-12 13:16:57 +053044import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_METHOD_NAME;
Bharat saraswale2d51d62016-03-23 19:40:35 +053045import static org.onosproject.yangutils.utils.UtilConstants.INT;
46import static org.onosproject.yangutils.utils.UtilConstants.INTEGER_WRAPPER;
47import static org.onosproject.yangutils.utils.UtilConstants.JAVA_LANG;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053048import static org.onosproject.yangutils.utils.UtilConstants.JAVA_MATH;
Bharat saraswale2d51d62016-03-23 19:40:35 +053049import static org.onosproject.yangutils.utils.UtilConstants.LONG;
50import static org.onosproject.yangutils.utils.UtilConstants.LONG_WRAPPER;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053051import static org.onosproject.yangutils.utils.UtilConstants.NEW;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053052import static org.onosproject.yangutils.utils.UtilConstants.PARSE_BYTE;
53import static org.onosproject.yangutils.utils.UtilConstants.PARSE_INT;
54import static org.onosproject.yangutils.utils.UtilConstants.PARSE_LONG;
55import static org.onosproject.yangutils.utils.UtilConstants.PARSE_SHORT;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053056import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
Bharat saraswale2d51d62016-03-23 19:40:35 +053057import static org.onosproject.yangutils.utils.UtilConstants.SHORT;
58import static org.onosproject.yangutils.utils.UtilConstants.SHORT_WRAPPER;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053059import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
Bharat saraswale2d51d62016-03-23 19:40:35 +053060import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
Bharat saraswal4bf8b152016-02-25 02:26:43 +053061
62/**
Bharat saraswald9822e92016-04-05 15:13:44 +053063 * Represents java data types info corresponding to YANG type.
Bharat saraswal4bf8b152016-02-25 02:26:43 +053064 */
65public final class AttributesJavaDataType {
66
67 /**
Bharat saraswald9822e92016-04-05 15:13:44 +053068 * Creates an instance of attribute java data type.
Bharat saraswal4bf8b152016-02-25 02:26:43 +053069 */
70 private AttributesJavaDataType() {
71 }
72
73 /**
Vinod Kumar Sc4216002016-03-03 19:55:30 +053074 * Returns java type.
Bharat saraswal4bf8b152016-02-25 02:26:43 +053075 *
76 * @param yangType YANG type
Vinod Kumar Sc4216002016-03-03 19:55:30 +053077 * @return java type
Bharat saraswal4bf8b152016-02-25 02:26:43 +053078 */
Vinod Kumar Sc4216002016-03-03 19:55:30 +053079 public static String getJavaDataType(YangType<?> yangType) {
Bharat saraswale2d51d62016-03-23 19:40:35 +053080
Vinod Kumar Sc4216002016-03-03 19:55:30 +053081 YangDataTypes type = yangType.getDataType();
Bharat saraswal4bf8b152016-02-25 02:26:43 +053082
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053083 switch (type) {
84 case INT8:
85 return BYTE;
86 case INT16:
87 return SHORT;
88 case INT32:
89 return INT;
90 case INT64:
91 return LONG;
92 case UINT8:
93 return SHORT;
94 case UINT16:
95 return INT;
96 case UINT32:
97 return LONG;
98 case UINT64:
99 return BIG_INTEGER;
100 case DECIMAL64:
101 //TODO: DECIMAL64.
102 case STRING:
103 return STRING_DATA_TYPE;
104 case BOOLEAN:
105 return BOOLEAN_DATA_TYPE;
106 default:
107 throw new TranslatorException("given data type is not supported.");
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530108 }
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530109 }
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530110
111 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530112 * Returns from string method parsed string.
113 *
114 * @param targetDataType target data type
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530115 * @param yangType YANG type
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530116 * @return parsed string
117 */
118 public static String getParseFromStringMethod(String targetDataType, YangType<?> yangType) {
119
120 YangDataTypes type = yangType.getDataType();
121
122 switch (type) {
123 case INT8:
124 return BYTE_WRAPPER + PERIOD + PARSE_BYTE;
125 case INT16:
126 return SHORT_WRAPPER + PERIOD + PARSE_SHORT;
127 case INT32:
128 return INTEGER_WRAPPER + PERIOD + PARSE_INT;
129 case INT64:
130 return LONG_WRAPPER + PERIOD + PARSE_LONG;
131 case UINT8:
132 return SHORT_WRAPPER + PERIOD + PARSE_SHORT;
133 case UINT16:
134 return INTEGER_WRAPPER + PERIOD + PARSE_INT;
135 case UINT32:
136 return LONG_WRAPPER + PERIOD + PARSE_LONG;
137 case UINT64:
138 return NEW + SPACE + BIG_INTEGER;
139 case DECIMAL64:
140 //TODO: DECIMAL64.
141 case STRING:
142 return EMPTY_STRING;
143 case BOOLEAN:
144 return BOOLEAN_DATA_TYPE;
145 case ENUMERATION:
146 //TODO:ENUMERATION.
147 case BITS:
148 //TODO:BITS
149 case BINARY:
150 //TODO:BINARY
151 case DERIVED:
Bharat saraswalc0e04842016-05-12 13:16:57 +0530152 return targetDataType + PERIOD + FROM_STRING_METHOD_NAME;
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530153 default:
154 throw new TranslatorException("given data type is not supported.");
155 }
156 }
157
158 /**
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530159 * Returns java import class.
160 *
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530161 * @param yangType YANG type
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530162 * @param isListAttr if the attribute need to be a list
163 * @return java import class
164 */
165 public static String getJavaImportClass(YangType<?> yangType, boolean isListAttr) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530166
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530167 YangDataTypes type = yangType.getDataType();
168
169 if (isListAttr) {
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530170 switch (type) {
171 case INT8:
172 return BYTE_WRAPPER;
173 case INT16:
174 return SHORT_WRAPPER;
175 case INT32:
176 return INTEGER_WRAPPER;
177 case INT64:
178 return LONG_WRAPPER;
179 case UINT8:
180 return SHORT_WRAPPER;
181 case UINT16:
182 return INTEGER_WRAPPER;
183 case UINT32:
184 return LONG_WRAPPER;
185 case UINT64:
186 return BIG_INTEGER;
187 case DECIMAL64:
188 //TODO: DECIMAL64.
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530189 break;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530190 case STRING:
191 return STRING_DATA_TYPE;
192 case BOOLEAN:
193 return BOOLEAN_WRAPPER;
194 case ENUMERATION:
janani b4a6711a2016-05-17 13:12:22 +0530195 return getCapitalCase(
Bharat saraswald72411a2016-04-19 01:00:16 +0530196 getCamelCase(((YangJavaEnumeration) yangType.getDataTypeExtendedInfo()).getName(), null));
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530197 case BITS:
198 //TODO:BITS
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530199 break;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530200 case BINARY:
201 //TODO:BINARY
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530202 break;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530203 case LEAFREF:
204 //TODO:LEAFREF
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530205 break;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530206 case IDENTITYREF:
207 //TODO:IDENTITYREF
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530208 break;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530209 case EMPTY:
210 return BOOLEAN_WRAPPER;
211 case UNION:
janani b4a6711a2016-05-17 13:12:22 +0530212 return getCapitalCase(getCamelCase(((YangJavaUnion) yangType.getDataTypeExtendedInfo()).getName(),
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530213 null));
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530214 case INSTANCE_IDENTIFIER:
215 //TODO:INSTANCE_IDENTIFIER
216 case DERIVED:
janani b4a6711a2016-05-17 13:12:22 +0530217 return getCapitalCase(getCamelCase(yangType.getDataTypeName(), null));
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530218 default:
Bharat saraswald72411a2016-04-19 01:00:16 +0530219 throw new TranslatorException("given data type is not supported.");
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530220 }
221 } else {
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530222 switch (type) {
223 case UINT64:
224 return BIG_INTEGER;
225 case DECIMAL64:
226 //TODO: DECIMAL64.
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530227 break;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530228 case STRING:
229 return STRING_DATA_TYPE;
230 case ENUMERATION:
janani b4a6711a2016-05-17 13:12:22 +0530231 return getCapitalCase(
Bharat saraswald72411a2016-04-19 01:00:16 +0530232 getCamelCase(((YangJavaEnumeration) yangType.getDataTypeExtendedInfo()).getName(), null));
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530233 case BITS:
234 //TODO:BITS
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530235 break;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530236 case BINARY:
237 //TODO:BINARY
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530238 break;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530239 case LEAFREF:
240 //TODO:LEAFREF
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530241 break;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530242 case IDENTITYREF:
243 //TODO:IDENTITYREF
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530244 break;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530245 case EMPTY:
246 //TODO:EMPTY
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530247 break;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530248 case UNION:
janani b4a6711a2016-05-17 13:12:22 +0530249 return getCapitalCase(getCamelCase(((YangJavaUnion) yangType.getDataTypeExtendedInfo()).getName(),
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530250 null));
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530251 case INSTANCE_IDENTIFIER:
252 //TODO:INSTANCE_IDENTIFIER
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530253 break;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530254 case DERIVED:
janani b4a6711a2016-05-17 13:12:22 +0530255 return getCapitalCase(getCamelCase(yangType.getDataTypeName(), null));
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530256 default:
257 return null;
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530258 }
259 }
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530260 return null;
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530261 }
262
263 /**
264 * Returns java import package.
265 *
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530266 * @param yangType YANG type
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530267 * @param isListAttr if the attribute is of list type
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530268 * @param classInfo java import class info
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530269 * @return java import package
270 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530271 public static String getJavaImportPackage(YangType<?> yangType, boolean isListAttr, String classInfo) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530272
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530273 YangDataTypes type = yangType.getDataType();
274
275 if (isListAttr) {
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530276 switch (type) {
277 case INT8:
278 case INT16:
279 case INT32:
280 case INT64:
281 case UINT8:
282 case UINT16:
283 case UINT32:
284 case STRING:
285 case BOOLEAN:
286 return JAVA_LANG;
287 case UINT64:
288 return JAVA_MATH;
289 case DECIMAL64:
290 //TODO: DECIMAL64.
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530291 break;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530292 case ENUMERATION:
Bharat saraswald72411a2016-04-19 01:00:16 +0530293 return getEnumsPackage(yangType);
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530294 case BITS:
295 //TODO:BITS
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530296 break;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530297 case BINARY:
298 //TODO:BINARY
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530299 break;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530300 case LEAFREF:
301 //TODO:LEAFREF
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530302 break;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530303 case IDENTITYREF:
304 //TODO:IDENTITYREF
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530305 break;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530306 case EMPTY:
307 //TODO:EMPTY
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530308 break;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530309 case UNION:
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530310 return getUnionPackage(yangType);
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530311 case INSTANCE_IDENTIFIER:
312 //TODO:INSTANCE_IDENTIFIER
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530313 break;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530314 case DERIVED:
315 return getTypDefsPackage(yangType);
316 default:
Bharat saraswald72411a2016-04-19 01:00:16 +0530317 throw new TranslatorException("given data type is not supported.");
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530318 }
319 } else {
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530320 switch (type) {
321 case UINT64:
Bharat saraswalc0e04842016-05-12 13:16:57 +0530322 return JAVA_MATH;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530323 case DECIMAL64:
324 //TODO: DECIMAL64
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530325 break;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530326 case STRING:
327 return JAVA_LANG;
328 case ENUMERATION:
Bharat saraswald72411a2016-04-19 01:00:16 +0530329 return getEnumsPackage(yangType);
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530330 case BITS:
331 //TODO:BITS
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530332 break;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530333 case BINARY:
334 //TODO:BINARY
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530335 break;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530336 case LEAFREF:
337 //TODO:LEAFREF
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530338 break;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530339 case IDENTITYREF:
340 //TODO:IDENTITYREF
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530341 break;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530342 case EMPTY:
343 //TODO:EMPTY
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530344 break;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530345 case UNION:
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530346 return getUnionPackage(yangType);
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530347 case INSTANCE_IDENTIFIER:
348 //TODO:INSTANCE_IDENTIFIER
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530349 break;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530350 case DERIVED:
351 return getTypDefsPackage(yangType);
352 default:
353 return null;
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530354 }
355 }
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530356 return null;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530357 }
358
359 /**
360 * Returns java package for typedef node.
361 *
362 * @param type YANG type
363 * @return java package for typedef node
364 */
365 private static String getTypDefsPackage(YangType<?> type) {
366 Object var = type.getDataTypeExtendedInfo();
367 if (!(var instanceof YangDerivedInfo)) {
368 throw new TranslatorException("type should have been derived.");
369 }
370
371 if (!(((YangDerivedInfo<?>) var).getReferredTypeDef() instanceof YangTypeDef)) {
372 throw new TranslatorException("derived info is not an instance of typedef.");
373 }
374
375 YangJavaTypeDef typedef = (YangJavaTypeDef) ((YangDerivedInfo<?>) var).getReferredTypeDef();
376 if (typedef.getJavaFileInfo().getPackage() == null) {
377 return getPackageFromParent(typedef.getParent());
378 }
379 return typedef.getJavaFileInfo().getPackage();
380 }
381
382 /**
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530383 * Returns java package for union node.
384 *
385 * @param type YANG type
386 * @return java package for union node
387 */
388 private static String getUnionPackage(YangType<?> type) {
389
390 if (!(type.getDataTypeExtendedInfo() instanceof YangUnion)) {
391 throw new TranslatorException("type should have been union.");
392 }
393
394 YangJavaUnion union = (YangJavaUnion) type.getDataTypeExtendedInfo();
395 if (union.getJavaFileInfo().getPackage() == null) {
396 return getPackageFromParent(union.getParent());
397 }
398 return union.getJavaFileInfo().getPackage();
399 }
400
401 /**
Bharat saraswald72411a2016-04-19 01:00:16 +0530402 * Returns YANG enumeration's java package.
403 *
404 * @param type YANG type
405 * @return YANG enumeration's java package
406 */
407 private static String getEnumsPackage(YangType<?> type) {
408
409 if (!(type.getDataTypeExtendedInfo() instanceof YangEnumeration)) {
410 throw new TranslatorException("type should have been enumeration.");
411 }
412 YangJavaEnumeration enumeration = (YangJavaEnumeration) type.getDataTypeExtendedInfo();
413 if (enumeration.getJavaFileInfo().getPackage() == null) {
414 return getPackageFromParent(enumeration.getParent());
415 }
416 return enumeration.getJavaFileInfo().getPackage();
417 }
418
419 /**
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530420 * Returns package from parent node.
421 *
422 * @param parent parent YANG node
423 * @return java package from parent node
424 */
425 private static String getPackageFromParent(YangNode parent) {
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530426 if (!(parent instanceof JavaFileInfoContainer)) {
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530427 throw new TranslatorException("invalid child node is being processed.");
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530428 }
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530429 JavaFileInfo parentInfo = ((JavaFileInfoContainer) parent).getJavaFileInfo();
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +0530430 if (parentInfo.getPackage() == null) {
431 if (parent instanceof YangJavaModule) {
432 YangJavaModule module = (YangJavaModule) parent;
433 String modulePkg = getRootPackage(module.getVersion(), module.getNameSpace().getUri(), module
434 .getRevision().getRevDate());
435 return modulePkg + PERIOD + getCamelCase(module.getName(), null).toLowerCase();
436 } else if (parent instanceof YangJavaSubModule) {
437 YangJavaSubModule submodule = (YangJavaSubModule) parent;
438 String subModulePkg = getRootPackage(submodule.getVersion(),
439 submodule.getNameSpaceFromModule(submodule.getBelongsTo()),
440 submodule.getRevision().getRevDate());
441 return subModulePkg + PERIOD + getCamelCase(submodule.getName(), null).toLowerCase();
442 }
443 }
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530444 return parentInfo.getPackage() + PERIOD + parentInfo.getJavaName().toLowerCase();
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530445 }
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530446}