blob: 96db5c3f1fffb4d26d4084d6d1f5c0a738c5fdeb [file] [log] [blame]
Bharat saraswal97459962016-02-20 21:57:16 +05301/*
Brian O'Connor0f7908b2016-04-09 01:19:45 -07002 * Copyright 2016-present Open Networking Laboratory
Bharat saraswal97459962016-02-20 21:57:16 +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
Vidyashree Ramab3670472016-08-06 15:49:56 +053019import org.onosproject.yangutils.datamodel.YangCompilerAnnotation;
Bharat saraswald14cbe82016-07-14 13:26:18 +053020import org.onosproject.yangutils.datamodel.YangNode;
Gaurav Agrawal3b57f362016-09-07 13:16:35 +053021import org.onosproject.yangutils.translator.exception.TranslatorException;
Bharat saraswalaf413b82016-07-14 15:18:20 +053022import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
Shankara-Huaweib7564772016-08-02 18:13:13 +053023import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator;
Bharat saraswalaf413b82016-07-14 15:18:20 +053024import org.onosproject.yangutils.translator.tojava.TempJavaServiceFragmentFiles;
Gaurav Agrawal3b57f362016-09-07 13:16:35 +053025import org.onosproject.yangutils.utils.UtilConstants.Operation;
Bharat saraswal84366c52016-03-23 19:40:35 +053026
Gaurav Agrawal3b57f362016-09-07 13:16:35 +053027import java.util.List;
28
29import static java.util.Collections.sort;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053030import static org.onosproject.yangutils.translator.tojava.utils.BracketType.OPEN_CLOSE_BRACKET_WITH_VALUE;
Bharat saraswal68fa0d12016-04-19 01:00:16 +053031import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getEnumJavaAttribute;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053032import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.brackets;
33import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getDefaultDefinition;
34import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getImportString;
35import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.signatureClose;
Bharat saraswal8beac342016-08-04 02:00:03 +053036import static org.onosproject.yangutils.utils.UtilConstants.ARRAY_LIST;
Bharat saraswal54e4bab2016-10-05 23:32:14 +053037import static org.onosproject.yangutils.utils.UtilConstants.BIT_SET;
Bharat saraswal68fa0d12016-04-19 01:00:16 +053038import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
Bharat saraswal84366c52016-03-23 19:40:35 +053039import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_CLOSE_BRACKET;
40import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_OPEN_BRACKET;
Bharat saraswal8beac342016-08-04 02:00:03 +053041import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053042import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
Bharat saraswald14cbe82016-07-14 13:26:18 +053043import static org.onosproject.yangutils.utils.UtilConstants.ENUM;
Bharat saraswale2bc60d2016-04-16 02:28:25 +053044import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
45import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
Bharat saraswalaf413b82016-07-14 15:18:20 +053046import static org.onosproject.yangutils.utils.UtilConstants.HASH_MAP;
Bharat saraswald14cbe82016-07-14 13:26:18 +053047import static org.onosproject.yangutils.utils.UtilConstants.INT;
Bharat saraswal64e7e232016-07-14 23:33:55 +053048import static org.onosproject.yangutils.utils.UtilConstants.INT_MAX_RANGE_ATTR;
49import static org.onosproject.yangutils.utils.UtilConstants.INT_MIN_RANGE_ATTR;
Bharat saraswal84366c52016-03-23 19:40:35 +053050import static org.onosproject.yangutils.utils.UtilConstants.LIST;
Bharat saraswal64e7e232016-07-14 23:33:55 +053051import static org.onosproject.yangutils.utils.UtilConstants.LONG_MAX_RANGE_ATTR;
52import static org.onosproject.yangutils.utils.UtilConstants.LONG_MIN_RANGE_ATTR;
Bharat saraswalaf413b82016-07-14 15:18:20 +053053import static org.onosproject.yangutils.utils.UtilConstants.NEW;
Bharat saraswal84366c52016-03-23 19:40:35 +053054import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
Bharat saraswal54e4bab2016-10-05 23:32:14 +053055import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CLOSE_BRACKET_STRING;
Bharat saraswal94844d62016-10-13 13:28:03 +053056import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CLOSE_DIAMOND_STRING;
Bharat saraswal84366c52016-03-23 19:40:35 +053057import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
58import static org.onosproject.yangutils.utils.UtilConstants.PRIVATE;
Bharat saraswald14cbe82016-07-14 13:26:18 +053059import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
Vidyashree Ramab3670472016-08-06 15:49:56 +053060import static org.onosproject.yangutils.utils.UtilConstants.QUEUE;
Bharat saraswal748fc3c2016-09-06 16:38:20 +053061import static org.onosproject.yangutils.utils.UtilConstants.QUOTES;
62import static org.onosproject.yangutils.utils.UtilConstants.SCHEMA_NAME;
Bharat saraswal94844d62016-10-13 13:28:03 +053063import static org.onosproject.yangutils.utils.UtilConstants.SELECT_LEAF;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053064import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLON;
Vidyashree Ramab3670472016-08-06 15:49:56 +053065import static org.onosproject.yangutils.utils.UtilConstants.SET;
Bharat saraswal54e4bab2016-10-05 23:32:14 +053066import static org.onosproject.yangutils.utils.UtilConstants.SET_VALUE_PARA;
Bharat saraswal2da23bf2016-08-25 15:28:39 +053067import static org.onosproject.yangutils.utils.UtilConstants.SHORT_MAX_RANGE_ATTR;
68import static org.onosproject.yangutils.utils.UtilConstants.SHORT_MIN_RANGE_ATTR;
Bharat saraswal84366c52016-03-23 19:40:35 +053069import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
Bharat saraswal748fc3c2016-09-06 16:38:20 +053070import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
Bharat saraswald14cbe82016-07-14 13:26:18 +053071import static org.onosproject.yangutils.utils.UtilConstants.TYPE;
Bharat saraswal2da23bf2016-08-25 15:28:39 +053072import static org.onosproject.yangutils.utils.UtilConstants.UINT8_MAX_RANGE_ATTR;
73import static org.onosproject.yangutils.utils.UtilConstants.UINT8_MIN_RANGE_ATTR;
Bharat saraswal64e7e232016-07-14 23:33:55 +053074import static org.onosproject.yangutils.utils.UtilConstants.UINT_MAX_RANGE_ATTR;
75import static org.onosproject.yangutils.utils.UtilConstants.UINT_MIN_RANGE_ATTR;
76import static org.onosproject.yangutils.utils.UtilConstants.ULONG_MAX_RANGE_ATTR;
77import static org.onosproject.yangutils.utils.UtilConstants.ULONG_MIN_RANGE_ATTR;
Bharat saraswal94844d62016-10-13 13:28:03 +053078import static org.onosproject.yangutils.utils.UtilConstants.VALUE_LEAF;
79import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO_MAP;
Bharat saraswal68fa0d12016-04-19 01:00:16 +053080import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.ENUM_ATTRIBUTE;
Bharat saraswal748fc3c2016-09-06 16:38:20 +053081import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.enumJavaDocForInnerClass;
Bharat saraswald14cbe82016-07-14 13:26:18 +053082import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053083import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +053084
Bharat saraswal97459962016-02-20 21:57:16 +053085/**
Bharat saraswal63f26fb2016-04-05 15:13:44 +053086 * Represents utility class to generate the java snippet.
Bharat saraswal97459962016-02-20 21:57:16 +053087 */
88public final class JavaCodeSnippetGen {
89
Gaurav Agrawal3b57f362016-09-07 13:16:35 +053090 // No instantiation.
Bharat saraswal97459962016-02-20 21:57:16 +053091 private JavaCodeSnippetGen() {
92 }
93
94 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +053095 * Returns the java file header comment.
Bharat saraswal97459962016-02-20 21:57:16 +053096 *
Vinod Kumar S08710982016-03-03 19:55:30 +053097 * @return the java file header comment
Bharat saraswal97459962016-02-20 21:57:16 +053098 */
99 public static String getFileHeaderComment() {
100
Bharat saraswal8beac342016-08-04 02:00:03 +0530101 /*
Bharat saraswal97459962016-02-20 21:57:16 +0530102 * TODO return the file header.
103 */
104 return null;
105 }
106
107 /**
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530108 * Returns the textual java code information corresponding to the import
109 * list.
Bharat saraswal97459962016-02-20 21:57:16 +0530110 *
Vinod Kumar S08710982016-03-03 19:55:30 +0530111 * @param importInfo import info
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530112 * @return the textual java code information corresponding to the import
113 * list
Bharat saraswal97459962016-02-20 21:57:16 +0530114 */
Shankara-Huaweib7564772016-08-02 18:13:13 +0530115 static String getImportText(JavaQualifiedTypeInfoTranslator importInfo) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530116 return getImportString(importInfo.getPkgInfo(), importInfo
117 .getClassInfo());
Bharat saraswal97459962016-02-20 21:57:16 +0530118 }
119
120 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +0530121 * Returns the textual java code for attribute definition in class.
Bharat saraswal97459962016-02-20 21:57:16 +0530122 *
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530123 * @param typePkg Package of the attribute type
124 * @param attrType java attribute type
125 * @param attrName name of the attribute
126 * @param isList is list attribute
127 * @param accessType attribute access type
128 * @param annotation compiler annotation
Bharat saraswal64e7e232016-07-14 23:33:55 +0530129 * @return the textual java code for attribute definition in class
Bharat saraswal97459962016-02-20 21:57:16 +0530130 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530131 public static String getJavaAttributeDefinition(String typePkg,
132 String attrType,
133 String attrName,
134 boolean isList,
135 String accessType,
136 YangCompilerAnnotation annotation) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530137 StringBuilder attrDef = new StringBuilder(FOUR_SPACE_INDENTATION);
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530138 attrDef.append(accessType).append(SPACE);
Vinod Kumar S08710982016-03-03 19:55:30 +0530139
Bharat saraswal022dae92016-03-04 20:08:09 +0530140 if (!isList) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530141 if (typePkg != null) {
142 attrDef.append(typePkg).append(PERIOD);
Bharat saraswal022dae92016-03-04 20:08:09 +0530143 }
144
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530145 attrDef.append(attrType).append(SPACE)
Bharat saraswal94844d62016-10-13 13:28:03 +0530146 .append(attrName);
147 //Initialize select leaf/value leaf/ augment map attribute.
148 if (attrName.equals(SELECT_LEAF) || attrName.equals(VALUE_LEAF)) {
149 attrDef.append(SPACE).append(EQUAL).append(SPACE).append(NEW)
150 .append(SPACE).append(BIT_SET)
151 .append(OPEN_CLOSE_BRACKET_STRING);
152 } else if (attrName.equals(YANG_AUGMENTED_INFO_MAP)) {
153 attrDef.append(SPACE).append(EQUAL).append(SPACE).append(NEW)
154 .append(SPACE).append(HASH_MAP)
155 .append(OPEN_CLOSE_DIAMOND_STRING)
156 .append(OPEN_CLOSE_BRACKET_STRING);
157 }
158
159 attrDef.append(signatureClose());
Bharat saraswal022dae92016-03-04 20:08:09 +0530160 } else {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530161 // Add starting definition.
162 addAttrStartDef(annotation, attrDef);
163
164 if (typePkg != null) {
165 attrDef.append(typePkg).append(PERIOD);
Vidyashree Ramab3670472016-08-06 15:49:56 +0530166 }
167
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530168 attrDef.append(attrType);
Bharat saraswal022dae92016-03-04 20:08:09 +0530169
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530170 // Add ending definition.
171 addAttrEndDef(annotation, attrDef, attrName);
Bharat saraswal5e3c45c2016-02-22 22:15:21 +0530172 }
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530173 return attrDef.toString();
Bharat saraswal97459962016-02-20 21:57:16 +0530174 }
175
176 /**
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530177 * Adds starting attribute definition.
178 *
179 * @param annotation compiler annotation
180 * @param attrDef JAVA attribute definition
181 */
182 private static void addAttrStartDef(YangCompilerAnnotation annotation,
183 StringBuilder attrDef) {
184 if (annotation != null &&
185 annotation.getYangAppDataStructure() != null) {
186 switch (annotation.getYangAppDataStructure().getDataStructure()) {
187 case QUEUE: {
188 attrDef.append(QUEUE)
189 .append(DIAMOND_OPEN_BRACKET);
190 break;
191 }
192 case SET: {
193 attrDef.append(SET)
194 .append(DIAMOND_OPEN_BRACKET);
195 break;
196 }
197 default: {
198 attrDef.append(LIST)
199 .append(DIAMOND_OPEN_BRACKET);
200 }
201 }
202 } else {
203 attrDef.append(LIST).append(DIAMOND_OPEN_BRACKET);
204 }
205 }
206
207 /**
208 * Adds ending attribute definition.
209 *
210 * @param annotation compiler annotation
211 * @param attrDef JAVA attribute definition
212 * @param attrName name of attribute
213 */
214 private static void addAttrEndDef(YangCompilerAnnotation annotation,
215 StringBuilder attrDef, String attrName) {
216 if (annotation != null &&
217 annotation.getYangAppDataStructure() != null) {
218 attrDef.append(DIAMOND_CLOSE_BRACKET).append(SPACE)
Bharat saraswal94844d62016-10-13 13:28:03 +0530219 .append(attrName).append(signatureClose());
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530220 } else {
221 attrDef.append(DIAMOND_CLOSE_BRACKET).append(SPACE).append(attrName)
222 .append(SPACE).append(EQUAL).append(SPACE).append(NEW)
Bharat saraswal94844d62016-10-13 13:28:03 +0530223 .append(SPACE).append(ARRAY_LIST).append(signatureClose());
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530224 }
225 }
226
227 /**
Bharat saraswal68fa0d12016-04-19 01:00:16 +0530228 * Returns string for enum's attribute.
229 *
Bharat saraswal748fc3c2016-09-06 16:38:20 +0530230 * @param name name of attribute
231 * @param value value of the enum
232 * @return string for enum's attribute
233 */
234 public static String generateEnumAttributeString(String name, int value) {
235 String enumName = getEnumJavaAttribute(name);
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530236 return enumJavaDocForInnerClass(name) + EIGHT_SPACE_INDENTATION +
237 enumName.toUpperCase() + brackets(OPEN_CLOSE_BRACKET_WITH_VALUE,
238 value + EMPTY_STRING, null) +
239 COMMA + NEW_LINE;
Bharat saraswal748fc3c2016-09-06 16:38:20 +0530240 }
241
242 /**
243 * Returns string for enum's attribute for enum class.
244 *
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530245 * @param name name of attribute
246 * @param value value of the enum
Bharat saraswal68fa0d12016-04-19 01:00:16 +0530247 * @return string for enum's attribute
248 */
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530249 public static String generateEnumAttributeStringWithSchemaName(
250 String name, int value) {
Bharat saraswal748fc3c2016-09-06 16:38:20 +0530251 String enumName = getEnumJavaAttribute(name);
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530252 String str = value + COMMA + SPACE + QUOTES + name + QUOTES;
253 return getJavaDoc(ENUM_ATTRIBUTE, name, false, null) +
254 FOUR_SPACE_INDENTATION + enumName.toUpperCase() + brackets(
255 OPEN_CLOSE_BRACKET_WITH_VALUE, str, null) + COMMA + NEW_LINE;
Bharat saraswal68fa0d12016-04-19 01:00:16 +0530256 }
257
Bharat saraswald14cbe82016-07-14 13:26:18 +0530258 /**
Bharat saraswald14cbe82016-07-14 13:26:18 +0530259 * Returns sorted import list.
260 *
261 * @param imports import list
262 * @return sorted import list
263 */
264 public static List<String> sortImports(List<String> imports) {
265 sort(imports);
266 return imports;
267 }
268
269 /**
270 * Returns event enum start.
271 *
272 * @return event enum start
273 */
Bharat saraswal64e7e232016-07-14 23:33:55 +0530274 static String getEventEnumTypeStart() {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530275 return NEW_LINE + FOUR_SPACE_INDENTATION +
276 getDefaultDefinition(ENUM, TYPE, PUBLIC);
Bharat saraswald14cbe82016-07-14 13:26:18 +0530277 }
278
279 /**
280 * Adds listener's imports.
281 *
282 * @param curNode currentYangNode.
283 * @param imports import list
284 * @param operation add or remove
Bharat saraswald14cbe82016-07-14 13:26:18 +0530285 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530286 public static void addListenersImport(YangNode curNode,
287 List<String> imports,
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530288 Operation operation) {
Bharat saraswal8beac342016-08-04 02:00:03 +0530289 String thisImport;
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530290 TempJavaServiceFragmentFiles tempFiles =
291 ((JavaCodeGeneratorInfo) curNode).getTempJavaCodeFragmentFiles()
292 .getServiceTempFiles();
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530293 thisImport = tempFiles.getJavaImportData().getListenerServiceImport();
294 performOperationOnImports(imports, thisImport, operation);
Bharat saraswald14cbe82016-07-14 13:26:18 +0530295 }
296
297 /**
298 * Performs given operations on import list.
299 *
300 * @param imports list of imports
301 * @param curImport current import
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530302 * @param operation ADD or REMOVE
Bharat saraswald14cbe82016-07-14 13:26:18 +0530303 * @return import list
304 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530305 private static List<String> performOperationOnImports(List<String> imports,
306 String curImport,
307 Operation operation) {
308 switch (operation) {
309 case ADD:
310 imports.add(curImport);
311 break;
312 case REMOVE:
313 imports.remove(curImport);
314 break;
315 default:
316 throw new TranslatorException("Invalid operation type");
Bharat saraswald14cbe82016-07-14 13:26:18 +0530317 }
318 sortImports(imports);
319 return imports;
320 }
321
322 /**
Bharat saraswald14cbe82016-07-14 13:26:18 +0530323 * Returns integer attribute for enum's class to get the values.
324 *
325 * @param className enum's class name
326 * @return enum's attribute
327 */
Bharat saraswal64e7e232016-07-14 23:33:55 +0530328 static String getEnumsValueAttribute(String className) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530329 return getJavaAttributeDefinition(null, INT, className,
330 false, PRIVATE, null) +
331 getJavaAttributeDefinition(null, STRING_DATA_TYPE, SCHEMA_NAME,
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530332 false, PRIVATE, null) + NEW_LINE;
Bharat saraswald14cbe82016-07-14 13:26:18 +0530333 }
334
335 /**
Bharat saraswal64e7e232016-07-14 23:33:55 +0530336 * Adds attribute for int ranges.
337 *
338 * @param modifier modifier for attribute
339 * @param addFirst true if int need to be added fist.
340 * @return attribute for int ranges
341 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530342 static String addStaticAttributeIntRange(String modifier,
343 boolean addFirst) {
Bharat saraswal64e7e232016-07-14 23:33:55 +0530344 if (addFirst) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530345 return getTypeConflictAttributeStrings(modifier,
346 INT_MIN_RANGE_ATTR,
347 INT_MAX_RANGE_ATTR);
Bharat saraswal64e7e232016-07-14 23:33:55 +0530348 }
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530349 return getTypeConflictAttributeStrings(modifier,
350 UINT_MIN_RANGE_ATTR,
351 UINT_MAX_RANGE_ATTR);
Bharat saraswal64e7e232016-07-14 23:33:55 +0530352 }
353
354 /**
355 * Adds attribute for long ranges.
356 *
357 * @param modifier modifier for attribute
358 * @param addFirst if need to be added first
359 * @return attribute for long ranges
360 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530361 static String addStaticAttributeLongRange(String modifier,
362 boolean addFirst) {
Bharat saraswal64e7e232016-07-14 23:33:55 +0530363 if (addFirst) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530364 return getTypeConflictAttributeStrings(modifier,
365 LONG_MIN_RANGE_ATTR,
366 LONG_MAX_RANGE_ATTR);
Bharat saraswal64e7e232016-07-14 23:33:55 +0530367 }
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530368 return getTypeConflictAttributeStrings(modifier,
369 ULONG_MIN_RANGE_ATTR,
370 ULONG_MAX_RANGE_ATTR);
Bharat saraswal64e7e232016-07-14 23:33:55 +0530371 }
Bharat saraswal8beac342016-08-04 02:00:03 +0530372
373 /**
Bharat saraswal2da23bf2016-08-25 15:28:39 +0530374 * Adds attribute for long ranges.
375 *
376 * @param modifier modifier for attribute
377 * @param addFirst if need to be added first
378 * @return attribute for long ranges
379 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530380 static String addStaticAttributeShortRange(String modifier,
381 boolean addFirst) {
Bharat saraswal2da23bf2016-08-25 15:28:39 +0530382 if (addFirst) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530383 return getTypeConflictAttributeStrings(modifier,
384 SHORT_MIN_RANGE_ATTR,
385 SHORT_MAX_RANGE_ATTR);
Bharat saraswal2da23bf2016-08-25 15:28:39 +0530386 }
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530387 return getTypeConflictAttributeStrings(modifier,
388 UINT8_MIN_RANGE_ATTR,
389 UINT8_MAX_RANGE_ATTR);
390 }
391
392 /**
393 * Returns attribute for conflicting type in union.
394 *
395 * @param modifier modifier
396 * @param attr1 attribute one
397 * @param att2 attribute two
398 * @return attribute for conflicting type in union
399 */
400 private static String getTypeConflictAttributeStrings(String modifier,
401 String attr1,
402 String att2) {
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530403 return FOUR_SPACE_INDENTATION + modifier + SPACE +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530404 attr1 + FOUR_SPACE_INDENTATION + modifier +
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530405 SPACE + att2 + NEW_LINE;
Bharat saraswal2da23bf2016-08-25 15:28:39 +0530406 }
407
408 /**
Bharat saraswal8beac342016-08-04 02:00:03 +0530409 * Returns operation type enum.
410 *
411 * @return operation type enum
412 */
413 static String getOperationTypeEnum() {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530414 return " /**\n" +
415 " * Specify the node specific operation in protocols " +
416 "like NETCONF.\n" +
417 " * Applicable in protocol edit operation, not applicable" +
418 " in query operation\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +0530419 " */\n" +
Bharat saraswal94844d62016-10-13 13:28:03 +0530420 " public static enum OnosYangOpType {\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +0530421 " MERGE,\n" +
422 " REPLACE,\n" +
423 " CREATE,\n" +
424 " DELETE,\n" +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530425 " REMOVE,\n" +
426 " NONE\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +0530427 " }\n";
428 }
429
430 /**
Bharat saraswale3175d32016-08-31 17:50:11 +0530431 * Returns attribute in constructor for yang augmented info map.
432 *
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530433 * @return augment info map
Bharat saraswale3175d32016-08-31 17:50:11 +0530434 */
435 static String getYangAugmentedMapObjectForConstruct() {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530436 return " this.yangAugmentedInfoMap = builderObject" +
437 ".yangAugmentedInfoMap();\n";
Bharat saraswale3175d32016-08-31 17:50:11 +0530438 }
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530439
440 /**
441 * Returns set value parameter for union class.
442 *
443 * @return set value parameter for union class.
444 */
445 static String getSetValueParaForUnionClass() {
446 String[] array = {NEW_LINE, SEMI_COLON};
447 return new StringBuilder().append(trimAtLast(
448 getJavaAttributeDefinition(null, BIT_SET, SET_VALUE_PARA,
449 false, PRIVATE, null), array))
450 .append(SPACE).append(EQUAL).append(SPACE).append(NEW)
451 .append(SPACE).append(BIT_SET).append(OPEN_CLOSE_BRACKET_STRING)
452 .append(signatureClose()).toString();
453 }
Bharat saraswal97459962016-02-20 21:57:16 +0530454}