blob: 1942b016173d3bd2d5140a80ec775d783f941479 [file] [log] [blame]
Bharat saraswal870c56f2016-02-20 21:57:16 +05301/*
Brian O'Connor5ab426f2016-04-09 01:19:45 -07002 * Copyright 2016-present Open Networking Laboratory
Bharat saraswal870c56f2016-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
Vinod Kumar S38046502016-03-23 15:30:27 +053019import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo;
Bharat saraswale2d51d62016-03-23 19:40:35 +053020
21import static org.onosproject.yangutils.translator.tojava.utils.ClassDefinitionGenerator.generateClassDefinition;
22import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
Bharat saraswald72411a2016-04-19 01:00:16 +053023import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getEnumJavaAttribute;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053024import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getSmallCase;
25import static org.onosproject.yangutils.utils.UtilConstants.ARRAY_LIST;
26import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED_INFO;
Bharat saraswale2d51d62016-03-23 19:40:35 +053027import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053028import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS;
Bharat saraswald72411a2016-04-19 01:00:16 +053029import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
Bharat saraswale2d51d62016-03-23 19:40:35 +053030import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_CLOSE_BRACKET;
31import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_OPEN_BRACKET;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053032import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
33import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
Bharat saraswale2d51d62016-03-23 19:40:35 +053034import static org.onosproject.yangutils.utils.UtilConstants.IMPORT;
35import static org.onosproject.yangutils.utils.UtilConstants.LIST;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053036import static org.onosproject.yangutils.utils.UtilConstants.NEW;
Bharat saraswale2d51d62016-03-23 19:40:35 +053037import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
Bharat saraswalcc1cdab2016-04-16 02:28:25 +053038import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
Bharat saraswale2d51d62016-03-23 19:40:35 +053039import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
40import static org.onosproject.yangutils.utils.UtilConstants.PRIVATE;
41import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
42import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
Bharat saraswald72411a2016-04-19 01:00:16 +053043import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
44import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.ENUM_ATTRIBUTE;
Bharat saraswal870c56f2016-02-20 21:57:16 +053045
46/**
Bharat saraswald9822e92016-04-05 15:13:44 +053047 * Represents utility class to generate the java snippet.
Bharat saraswal870c56f2016-02-20 21:57:16 +053048 */
49public final class JavaCodeSnippetGen {
50
51 /**
Bharat saraswald9822e92016-04-05 15:13:44 +053052 * Creates an instance of java code snippet gen.
Bharat saraswal870c56f2016-02-20 21:57:16 +053053 */
54 private JavaCodeSnippetGen() {
55 }
56
57 /**
Bharat saraswald9822e92016-04-05 15:13:44 +053058 * Returns the java file header comment.
Bharat saraswal870c56f2016-02-20 21:57:16 +053059 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +053060 * @return the java file header comment
Bharat saraswal870c56f2016-02-20 21:57:16 +053061 */
62 public static String getFileHeaderComment() {
63
64 /**
65 * TODO return the file header.
66 */
67 return null;
68 }
69
70 /**
Bharat saraswald9822e92016-04-05 15:13:44 +053071 * Returns the textual java code information corresponding to the import list.
Bharat saraswal870c56f2016-02-20 21:57:16 +053072 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +053073 * @param importInfo import info
Bharat saraswal870c56f2016-02-20 21:57:16 +053074 * @return the textual java code information corresponding to the import
Vinod Kumar Sc4216002016-03-03 19:55:30 +053075 * list
Bharat saraswal870c56f2016-02-20 21:57:16 +053076 */
Vinod Kumar S38046502016-03-23 15:30:27 +053077 public static String getImportText(JavaQualifiedTypeInfo importInfo) {
Bharat saraswale2d51d62016-03-23 19:40:35 +053078 return IMPORT + importInfo.getPkgInfo() + PERIOD + importInfo.getClassInfo() + SEMI_COLAN + NEW_LINE;
Bharat saraswal870c56f2016-02-20 21:57:16 +053079 }
80
81 /**
Bharat saraswald9822e92016-04-05 15:13:44 +053082 * Returns based on the file type and the YANG name of the file, generate the class
Bharat saraswal870c56f2016-02-20 21:57:16 +053083 * / interface definition start.
84 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +053085 * @param genFileTypes type of file being generated
86 * @param yangName YANG name
87 * @return corresponding textual java code information
Bharat saraswal870c56f2016-02-20 21:57:16 +053088 */
Vinod Kumar Sc4216002016-03-03 19:55:30 +053089 public static String getJavaClassDefStart(int genFileTypes, String yangName) {
Vinod Kumar S38046502016-03-23 15:30:27 +053090
Bharat saraswal870c56f2016-02-20 21:57:16 +053091 /*
92 * get the camel case name for java class / interface.
93 */
janani bde4ffab2016-04-15 16:18:30 +053094 yangName = getCamelCase(yangName, null);
Bharat saraswale2d51d62016-03-23 19:40:35 +053095 return generateClassDefinition(genFileTypes, yangName);
Bharat saraswal870c56f2016-02-20 21:57:16 +053096 }
97
98 /**
Bharat saraswald9822e92016-04-05 15:13:44 +053099 * Returns the textual java code for attribute definition in class.
Bharat saraswal870c56f2016-02-20 21:57:16 +0530100 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530101 * @param javaAttributeTypePkg Package of the attribute type
102 * @param javaAttributeType java attribute type
103 * @param javaAttributeName name of the attribute
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530104 * @param isList is list attribute
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530105 * @return the textual java code for attribute definition in class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530106 */
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530107 public static String getJavaAttributeDefination(String javaAttributeTypePkg, String javaAttributeType,
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530108 String javaAttributeName, boolean isList) {
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530109
Bharat saraswale2d51d62016-03-23 19:40:35 +0530110 String attributeDefination = PRIVATE + SPACE;
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530111
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530112 if (!isList) {
113 if (javaAttributeTypePkg != null) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530114 attributeDefination = attributeDefination + javaAttributeTypePkg + PERIOD;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530115 }
116
Bharat saraswale2d51d62016-03-23 19:40:35 +0530117 attributeDefination = attributeDefination + javaAttributeType + SPACE + javaAttributeName + SEMI_COLAN
118 + NEW_LINE;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530119 } else {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530120 attributeDefination = attributeDefination + LIST + DIAMOND_OPEN_BRACKET;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530121 if (javaAttributeTypePkg != null) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530122 attributeDefination = attributeDefination + javaAttributeTypePkg + PERIOD;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530123 }
124
Bharat saraswale2d51d62016-03-23 19:40:35 +0530125 attributeDefination = attributeDefination + javaAttributeType + DIAMOND_CLOSE_BRACKET + SPACE
126 + javaAttributeName + SEMI_COLAN + NEW_LINE;
Bharat saraswal594bc6d2016-02-22 22:15:21 +0530127 }
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530128 return attributeDefination;
Bharat saraswal594bc6d2016-02-22 22:15:21 +0530129 }
130
131 /**
132 * Returns list attribute string.
133 *
134 * @param type attribute type
135 * @return list attribute string
136 */
137 public static String getListAttribute(String type) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530138 return LIST + DIAMOND_OPEN_BRACKET + type + DIAMOND_CLOSE_BRACKET;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530139 }
140
141 /**
Bharat saraswalcc1cdab2016-04-16 02:28:25 +0530142 * Returns attribute of augmented info for generated impl file.
143 *
144 * @return attribute of augmented info for generated impl file
145 */
146 public static String getAugmentedInfoAttribute() {
147 return FOUR_SPACE_INDENTATION + PRIVATE + SPACE + getListAttribute(AUGMENTED_INFO) + SPACE
148 + getSmallCase(AUGMENTED_INFO) + LIST + SPACE + EQUAL + SPACE + NEW + SPACE + ARRAY_LIST
149 + DIAMOND_OPEN_BRACKET + DIAMOND_CLOSE_BRACKET + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN
150 + NEW_LINE;
151 }
152
153 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530154 * Returns based on the file type and the YANG name of the file, generate the class
Bharat saraswal870c56f2016-02-20 21:57:16 +0530155 * / interface definition close.
156 *
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530157 * @return corresponding textual java code information
Bharat saraswal870c56f2016-02-20 21:57:16 +0530158 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530159 public static String getJavaClassDefClose() {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530160 return CLOSE_CURLY_BRACKET;
Bharat saraswal870c56f2016-02-20 21:57:16 +0530161 }
Bharat saraswald72411a2016-04-19 01:00:16 +0530162
163 /**
164 * Returns string for enum's attribute.
165 *
166 * @param name name of attribute
167 * @param value value of the enum
168 * @return string for enum's attribute
169 */
170 public static String generateEnumAttributeString(String name, int value) {
171 return getJavaDoc(ENUM_ATTRIBUTE, name, false) + FOUR_SPACE_INDENTATION + getEnumJavaAttribute(name)
172 + OPEN_PARENTHESIS + value + CLOSE_PARENTHESIS + COMMA + NEW_LINE;
173 }
174
Bharat saraswal870c56f2016-02-20 21:57:16 +0530175}