blob: 4cdf2e3fa088a83eb3ebe3f87e1a27801ab2bfc0 [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 saraswal68fa0d12016-04-19 01:00:16 +053030import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getEnumJavaAttribute;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053031import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getDefaultDefinition;
32import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getImportString;
Bharat saraswal0663aff2016-10-18 23:16:14 +053033import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getOpenCloseParaWithValue;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053034import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.signatureClose;
Bharat saraswal54e4bab2016-10-05 23:32:14 +053035import static org.onosproject.yangutils.utils.UtilConstants.BIT_SET;
Bharat saraswal68fa0d12016-04-19 01:00:16 +053036import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
Bharat saraswal84366c52016-03-23 19:40:35 +053037import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_CLOSE_BRACKET;
38import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_OPEN_BRACKET;
Bharat saraswal8beac342016-08-04 02:00:03 +053039import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053040import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
Bharat saraswald14cbe82016-07-14 13:26:18 +053041import static org.onosproject.yangutils.utils.UtilConstants.ENUM;
Bharat saraswale2bc60d2016-04-16 02:28:25 +053042import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
43import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
Bharat saraswalaf413b82016-07-14 15:18:20 +053044import static org.onosproject.yangutils.utils.UtilConstants.HASH_MAP;
Bharat saraswald14cbe82016-07-14 13:26:18 +053045import static org.onosproject.yangutils.utils.UtilConstants.INT;
Bharat saraswal64e7e232016-07-14 23:33:55 +053046import static org.onosproject.yangutils.utils.UtilConstants.INT_MAX_RANGE_ATTR;
47import static org.onosproject.yangutils.utils.UtilConstants.INT_MIN_RANGE_ATTR;
Bharat saraswal84366c52016-03-23 19:40:35 +053048import static org.onosproject.yangutils.utils.UtilConstants.LIST;
Bharat saraswal64e7e232016-07-14 23:33:55 +053049import static org.onosproject.yangutils.utils.UtilConstants.LONG_MAX_RANGE_ATTR;
50import static org.onosproject.yangutils.utils.UtilConstants.LONG_MIN_RANGE_ATTR;
Bharat saraswalaf413b82016-07-14 15:18:20 +053051import static org.onosproject.yangutils.utils.UtilConstants.NEW;
Bharat saraswal84366c52016-03-23 19:40:35 +053052import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
Bharat saraswal54e4bab2016-10-05 23:32:14 +053053import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CLOSE_BRACKET_STRING;
Bharat saraswal94844d62016-10-13 13:28:03 +053054import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CLOSE_DIAMOND_STRING;
Bharat saraswal84366c52016-03-23 19:40:35 +053055import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
56import static org.onosproject.yangutils.utils.UtilConstants.PRIVATE;
Bharat saraswald14cbe82016-07-14 13:26:18 +053057import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
Vidyashree Ramab3670472016-08-06 15:49:56 +053058import static org.onosproject.yangutils.utils.UtilConstants.QUEUE;
Bharat saraswal748fc3c2016-09-06 16:38:20 +053059import static org.onosproject.yangutils.utils.UtilConstants.QUOTES;
60import static org.onosproject.yangutils.utils.UtilConstants.SCHEMA_NAME;
Bharat saraswal94844d62016-10-13 13:28:03 +053061import static org.onosproject.yangutils.utils.UtilConstants.SELECT_LEAF;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053062import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLON;
Vidyashree Ramab3670472016-08-06 15:49:56 +053063import static org.onosproject.yangutils.utils.UtilConstants.SET;
Bharat saraswal54e4bab2016-10-05 23:32:14 +053064import static org.onosproject.yangutils.utils.UtilConstants.SET_VALUE_PARA;
Bharat saraswal2da23bf2016-08-25 15:28:39 +053065import static org.onosproject.yangutils.utils.UtilConstants.SHORT_MAX_RANGE_ATTR;
66import static org.onosproject.yangutils.utils.UtilConstants.SHORT_MIN_RANGE_ATTR;
Bharat saraswal84366c52016-03-23 19:40:35 +053067import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
Bharat saraswal748fc3c2016-09-06 16:38:20 +053068import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
Bharat saraswald14cbe82016-07-14 13:26:18 +053069import static org.onosproject.yangutils.utils.UtilConstants.TYPE;
Bharat saraswal2da23bf2016-08-25 15:28:39 +053070import static org.onosproject.yangutils.utils.UtilConstants.UINT8_MAX_RANGE_ATTR;
71import static org.onosproject.yangutils.utils.UtilConstants.UINT8_MIN_RANGE_ATTR;
Bharat saraswal64e7e232016-07-14 23:33:55 +053072import static org.onosproject.yangutils.utils.UtilConstants.UINT_MAX_RANGE_ATTR;
73import static org.onosproject.yangutils.utils.UtilConstants.UINT_MIN_RANGE_ATTR;
74import static org.onosproject.yangutils.utils.UtilConstants.ULONG_MAX_RANGE_ATTR;
75import static org.onosproject.yangutils.utils.UtilConstants.ULONG_MIN_RANGE_ATTR;
Bharat saraswal94844d62016-10-13 13:28:03 +053076import static org.onosproject.yangutils.utils.UtilConstants.VALUE_LEAF;
77import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO_MAP;
Bharat saraswal68fa0d12016-04-19 01:00:16 +053078import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.ENUM_ATTRIBUTE;
Bharat saraswal748fc3c2016-09-06 16:38:20 +053079import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.enumJavaDocForInnerClass;
Bharat saraswald14cbe82016-07-14 13:26:18 +053080import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
Bharat saraswal9fab16b2016-09-23 23:27:24 +053081import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +053082
Bharat saraswal97459962016-02-20 21:57:16 +053083/**
Bharat saraswal63f26fb2016-04-05 15:13:44 +053084 * Represents utility class to generate the java snippet.
Bharat saraswal97459962016-02-20 21:57:16 +053085 */
86public final class JavaCodeSnippetGen {
87
Gaurav Agrawal3b57f362016-09-07 13:16:35 +053088 // No instantiation.
Bharat saraswal97459962016-02-20 21:57:16 +053089 private JavaCodeSnippetGen() {
90 }
91
92 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +053093 * Returns the java file header comment.
Bharat saraswal97459962016-02-20 21:57:16 +053094 *
Vinod Kumar S08710982016-03-03 19:55:30 +053095 * @return the java file header comment
Bharat saraswal97459962016-02-20 21:57:16 +053096 */
97 public static String getFileHeaderComment() {
98
Bharat saraswal8beac342016-08-04 02:00:03 +053099 /*
Bharat saraswal97459962016-02-20 21:57:16 +0530100 * TODO return the file header.
101 */
102 return null;
103 }
104
105 /**
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530106 * Returns the textual java code information corresponding to the import
107 * list.
Bharat saraswal97459962016-02-20 21:57:16 +0530108 *
Vinod Kumar S08710982016-03-03 19:55:30 +0530109 * @param importInfo import info
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530110 * @return the textual java code information corresponding to the import
111 * list
Bharat saraswal97459962016-02-20 21:57:16 +0530112 */
Shankara-Huaweib7564772016-08-02 18:13:13 +0530113 static String getImportText(JavaQualifiedTypeInfoTranslator importInfo) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530114 return getImportString(importInfo.getPkgInfo(), importInfo
115 .getClassInfo());
Bharat saraswal97459962016-02-20 21:57:16 +0530116 }
117
118 /**
Bharat saraswal63f26fb2016-04-05 15:13:44 +0530119 * Returns the textual java code for attribute definition in class.
Bharat saraswal97459962016-02-20 21:57:16 +0530120 *
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530121 * @param typePkg Package of the attribute type
122 * @param attrType java attribute type
123 * @param attrName name of the attribute
124 * @param isList is list attribute
125 * @param accessType attribute access type
126 * @param annotation compiler annotation
Bharat saraswal64e7e232016-07-14 23:33:55 +0530127 * @return the textual java code for attribute definition in class
Bharat saraswal97459962016-02-20 21:57:16 +0530128 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530129 public static String getJavaAttributeDefinition(String typePkg,
130 String attrType,
131 String attrName,
132 boolean isList,
133 String accessType,
134 YangCompilerAnnotation annotation) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530135 StringBuilder attrDef = new StringBuilder(FOUR_SPACE_INDENTATION);
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530136 attrDef.append(accessType).append(SPACE);
Vinod Kumar S08710982016-03-03 19:55:30 +0530137
Bharat saraswal022dae92016-03-04 20:08:09 +0530138 if (!isList) {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530139 if (typePkg != null) {
140 attrDef.append(typePkg).append(PERIOD);
Bharat saraswal022dae92016-03-04 20:08:09 +0530141 }
142
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530143 attrDef.append(attrType).append(SPACE)
Bharat saraswal94844d62016-10-13 13:28:03 +0530144 .append(attrName);
145 //Initialize select leaf/value leaf/ augment map attribute.
146 if (attrName.equals(SELECT_LEAF) || attrName.equals(VALUE_LEAF)) {
147 attrDef.append(SPACE).append(EQUAL).append(SPACE).append(NEW)
148 .append(SPACE).append(BIT_SET)
149 .append(OPEN_CLOSE_BRACKET_STRING);
150 } else if (attrName.equals(YANG_AUGMENTED_INFO_MAP)) {
151 attrDef.append(SPACE).append(EQUAL).append(SPACE).append(NEW)
152 .append(SPACE).append(HASH_MAP)
153 .append(OPEN_CLOSE_DIAMOND_STRING)
154 .append(OPEN_CLOSE_BRACKET_STRING);
155 }
156
157 attrDef.append(signatureClose());
Bharat saraswal022dae92016-03-04 20:08:09 +0530158 } else {
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530159 // Add starting definition.
160 addAttrStartDef(annotation, attrDef);
161
162 if (typePkg != null) {
163 attrDef.append(typePkg).append(PERIOD);
Vidyashree Ramab3670472016-08-06 15:49:56 +0530164 }
165
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530166 attrDef.append(attrType);
Bharat saraswal022dae92016-03-04 20:08:09 +0530167
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530168 // Add ending definition.
Bharat saraswal0663aff2016-10-18 23:16:14 +0530169 addAttrEndDef(attrDef, attrName);
Bharat saraswal5e3c45c2016-02-22 22:15:21 +0530170 }
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530171 return attrDef.toString();
Bharat saraswal97459962016-02-20 21:57:16 +0530172 }
173
174 /**
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530175 * Adds starting attribute definition.
176 *
177 * @param annotation compiler annotation
178 * @param attrDef JAVA attribute definition
179 */
180 private static void addAttrStartDef(YangCompilerAnnotation annotation,
181 StringBuilder attrDef) {
182 if (annotation != null &&
183 annotation.getYangAppDataStructure() != null) {
184 switch (annotation.getYangAppDataStructure().getDataStructure()) {
185 case QUEUE: {
186 attrDef.append(QUEUE)
187 .append(DIAMOND_OPEN_BRACKET);
188 break;
189 }
190 case SET: {
191 attrDef.append(SET)
192 .append(DIAMOND_OPEN_BRACKET);
193 break;
194 }
195 default: {
196 attrDef.append(LIST)
197 .append(DIAMOND_OPEN_BRACKET);
198 }
199 }
200 } else {
201 attrDef.append(LIST).append(DIAMOND_OPEN_BRACKET);
202 }
203 }
204
205 /**
206 * Adds ending attribute definition.
207 *
Bharat saraswal0663aff2016-10-18 23:16:14 +0530208 * @param attrDef JAVA attribute definition
209 * @param attrName name of attribute
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530210 */
Bharat saraswal0663aff2016-10-18 23:16:14 +0530211 private static void addAttrEndDef(StringBuilder attrDef, String attrName) {
212 attrDef.append(DIAMOND_CLOSE_BRACKET).append(SPACE)
213 .append(attrName).append(signatureClose());
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530214 }
215
216 /**
Bharat saraswal68fa0d12016-04-19 01:00:16 +0530217 * Returns string for enum's attribute.
218 *
Bharat saraswal748fc3c2016-09-06 16:38:20 +0530219 * @param name name of attribute
220 * @param value value of the enum
221 * @return string for enum's attribute
222 */
223 public static String generateEnumAttributeString(String name, int value) {
224 String enumName = getEnumJavaAttribute(name);
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530225 return enumJavaDocForInnerClass(name) + EIGHT_SPACE_INDENTATION +
Bharat saraswal0663aff2016-10-18 23:16:14 +0530226 enumName.toUpperCase() + getOpenCloseParaWithValue(
227 value + EMPTY_STRING) + COMMA + NEW_LINE;
Bharat saraswal748fc3c2016-09-06 16:38:20 +0530228 }
229
230 /**
231 * Returns string for enum's attribute for enum class.
232 *
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530233 * @param name name of attribute
234 * @param value value of the enum
Bharat saraswal68fa0d12016-04-19 01:00:16 +0530235 * @return string for enum's attribute
236 */
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530237 public static String generateEnumAttributeStringWithSchemaName(
238 String name, int value) {
Bharat saraswal748fc3c2016-09-06 16:38:20 +0530239 String enumName = getEnumJavaAttribute(name);
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530240 String str = value + COMMA + SPACE + QUOTES + name + QUOTES;
241 return getJavaDoc(ENUM_ATTRIBUTE, name, false, null) +
Bharat saraswal0663aff2016-10-18 23:16:14 +0530242 FOUR_SPACE_INDENTATION + enumName.toUpperCase() +
243 getOpenCloseParaWithValue(str) + COMMA + NEW_LINE;
Bharat saraswal68fa0d12016-04-19 01:00:16 +0530244 }
245
Bharat saraswald14cbe82016-07-14 13:26:18 +0530246 /**
Bharat saraswald14cbe82016-07-14 13:26:18 +0530247 * Returns sorted import list.
248 *
249 * @param imports import list
250 * @return sorted import list
251 */
252 public static List<String> sortImports(List<String> imports) {
253 sort(imports);
254 return imports;
255 }
256
257 /**
258 * Returns event enum start.
259 *
260 * @return event enum start
261 */
Bharat saraswal64e7e232016-07-14 23:33:55 +0530262 static String getEventEnumTypeStart() {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530263 return NEW_LINE + FOUR_SPACE_INDENTATION +
264 getDefaultDefinition(ENUM, TYPE, PUBLIC);
Bharat saraswald14cbe82016-07-14 13:26:18 +0530265 }
266
267 /**
268 * Adds listener's imports.
269 *
270 * @param curNode currentYangNode.
271 * @param imports import list
272 * @param operation add or remove
Bharat saraswald14cbe82016-07-14 13:26:18 +0530273 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530274 public static void addListenersImport(YangNode curNode,
275 List<String> imports,
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530276 Operation operation) {
Bharat saraswal8beac342016-08-04 02:00:03 +0530277 String thisImport;
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530278 TempJavaServiceFragmentFiles tempFiles =
279 ((JavaCodeGeneratorInfo) curNode).getTempJavaCodeFragmentFiles()
280 .getServiceTempFiles();
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530281 thisImport = tempFiles.getJavaImportData().getListenerServiceImport();
282 performOperationOnImports(imports, thisImport, operation);
Bharat saraswald14cbe82016-07-14 13:26:18 +0530283 }
284
285 /**
286 * Performs given operations on import list.
287 *
288 * @param imports list of imports
289 * @param curImport current import
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530290 * @param operation ADD or REMOVE
Bharat saraswald14cbe82016-07-14 13:26:18 +0530291 * @return import list
292 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530293 private static List<String> performOperationOnImports(List<String> imports,
294 String curImport,
295 Operation operation) {
296 switch (operation) {
297 case ADD:
298 imports.add(curImport);
299 break;
300 case REMOVE:
301 imports.remove(curImport);
302 break;
303 default:
304 throw new TranslatorException("Invalid operation type");
Bharat saraswald14cbe82016-07-14 13:26:18 +0530305 }
306 sortImports(imports);
307 return imports;
308 }
309
310 /**
Bharat saraswald14cbe82016-07-14 13:26:18 +0530311 * Returns integer attribute for enum's class to get the values.
312 *
313 * @param className enum's class name
314 * @return enum's attribute
315 */
Bharat saraswal64e7e232016-07-14 23:33:55 +0530316 static String getEnumsValueAttribute(String className) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530317 return getJavaAttributeDefinition(null, INT, className,
318 false, PRIVATE, null) +
319 getJavaAttributeDefinition(null, STRING_DATA_TYPE, SCHEMA_NAME,
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530320 false, PRIVATE, null) + NEW_LINE;
Bharat saraswald14cbe82016-07-14 13:26:18 +0530321 }
322
323 /**
Bharat saraswal64e7e232016-07-14 23:33:55 +0530324 * Adds attribute for int ranges.
325 *
326 * @param modifier modifier for attribute
327 * @param addFirst true if int need to be added fist.
328 * @return attribute for int ranges
329 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530330 static String addStaticAttributeIntRange(String modifier,
331 boolean addFirst) {
Bharat saraswal64e7e232016-07-14 23:33:55 +0530332 if (addFirst) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530333 return getTypeConflictAttributeStrings(modifier,
334 INT_MIN_RANGE_ATTR,
335 INT_MAX_RANGE_ATTR);
Bharat saraswal64e7e232016-07-14 23:33:55 +0530336 }
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530337 return getTypeConflictAttributeStrings(modifier,
338 UINT_MIN_RANGE_ATTR,
339 UINT_MAX_RANGE_ATTR);
Bharat saraswal64e7e232016-07-14 23:33:55 +0530340 }
341
342 /**
343 * Adds attribute for long ranges.
344 *
345 * @param modifier modifier for attribute
346 * @param addFirst if need to be added first
347 * @return attribute for long ranges
348 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530349 static String addStaticAttributeLongRange(String modifier,
350 boolean addFirst) {
Bharat saraswal64e7e232016-07-14 23:33:55 +0530351 if (addFirst) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530352 return getTypeConflictAttributeStrings(modifier,
353 LONG_MIN_RANGE_ATTR,
354 LONG_MAX_RANGE_ATTR);
Bharat saraswal64e7e232016-07-14 23:33:55 +0530355 }
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530356 return getTypeConflictAttributeStrings(modifier,
357 ULONG_MIN_RANGE_ATTR,
358 ULONG_MAX_RANGE_ATTR);
Bharat saraswal64e7e232016-07-14 23:33:55 +0530359 }
Bharat saraswal8beac342016-08-04 02:00:03 +0530360
361 /**
Bharat saraswal2da23bf2016-08-25 15:28:39 +0530362 * Adds attribute for long ranges.
363 *
364 * @param modifier modifier for attribute
365 * @param addFirst if need to be added first
366 * @return attribute for long ranges
367 */
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530368 static String addStaticAttributeShortRange(String modifier,
369 boolean addFirst) {
Bharat saraswal2da23bf2016-08-25 15:28:39 +0530370 if (addFirst) {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530371 return getTypeConflictAttributeStrings(modifier,
372 SHORT_MIN_RANGE_ATTR,
373 SHORT_MAX_RANGE_ATTR);
Bharat saraswal2da23bf2016-08-25 15:28:39 +0530374 }
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530375 return getTypeConflictAttributeStrings(modifier,
376 UINT8_MIN_RANGE_ATTR,
377 UINT8_MAX_RANGE_ATTR);
378 }
379
380 /**
381 * Returns attribute for conflicting type in union.
382 *
383 * @param modifier modifier
384 * @param attr1 attribute one
385 * @param att2 attribute two
386 * @return attribute for conflicting type in union
387 */
388 private static String getTypeConflictAttributeStrings(String modifier,
389 String attr1,
390 String att2) {
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530391 return FOUR_SPACE_INDENTATION + modifier + SPACE +
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530392 attr1 + FOUR_SPACE_INDENTATION + modifier +
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530393 SPACE + att2 + NEW_LINE;
Bharat saraswal2da23bf2016-08-25 15:28:39 +0530394 }
395
396 /**
Bharat saraswal8beac342016-08-04 02:00:03 +0530397 * Returns operation type enum.
398 *
399 * @return operation type enum
400 */
401 static String getOperationTypeEnum() {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530402 return " /**\n" +
403 " * Specify the node specific operation in protocols " +
404 "like NETCONF.\n" +
405 " * Applicable in protocol edit operation, not applicable" +
406 " in query operation\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +0530407 " */\n" +
Bharat saraswal94844d62016-10-13 13:28:03 +0530408 " public static enum OnosYangOpType {\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +0530409 " MERGE,\n" +
410 " REPLACE,\n" +
411 " CREATE,\n" +
412 " DELETE,\n" +
VinodKumarS-Huawei8f164222016-08-31 15:47:30 +0530413 " REMOVE,\n" +
414 " NONE\n" +
Bharat saraswal8beac342016-08-04 02:00:03 +0530415 " }\n";
416 }
417
418 /**
Bharat saraswale3175d32016-08-31 17:50:11 +0530419 * Returns attribute in constructor for yang augmented info map.
420 *
Gaurav Agrawal3b57f362016-09-07 13:16:35 +0530421 * @return augment info map
Bharat saraswale3175d32016-08-31 17:50:11 +0530422 */
423 static String getYangAugmentedMapObjectForConstruct() {
Bharat saraswal9fab16b2016-09-23 23:27:24 +0530424 return " this.yangAugmentedInfoMap = builderObject" +
425 ".yangAugmentedInfoMap();\n";
Bharat saraswale3175d32016-08-31 17:50:11 +0530426 }
Bharat saraswal54e4bab2016-10-05 23:32:14 +0530427
428 /**
429 * Returns set value parameter for union class.
430 *
431 * @return set value parameter for union class.
432 */
433 static String getSetValueParaForUnionClass() {
434 String[] array = {NEW_LINE, SEMI_COLON};
435 return new StringBuilder().append(trimAtLast(
436 getJavaAttributeDefinition(null, BIT_SET, SET_VALUE_PARA,
437 false, PRIVATE, null), array))
438 .append(SPACE).append(EQUAL).append(SPACE).append(NEW)
439 .append(SPACE).append(BIT_SET).append(OPEN_CLOSE_BRACKET_STRING)
440 .append(signatureClose()).toString();
441 }
Bharat saraswal97459962016-02-20 21:57:16 +0530442}