blob: 4f363d839a99dda6986f685d5d39bcff2dd58bea [file] [log] [blame]
Bharat saraswale2d51d62016-03-23 19:40:35 +05301/*
Brian O'Connor5ab426f2016-04-09 01:19:45 -07002 * Copyright 2016-present Open Networking Laboratory
Bharat saraswale2d51d62016-03-23 19:40:35 +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 java.io.File;
20import java.io.IOException;
21import java.util.List;
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +053022
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +053023import org.onosproject.yangutils.translator.exception.TranslatorException;
Bharat saraswale2d51d62016-03-23 19:40:35 +053024import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +053025import org.onosproject.yangutils.translator.tojava.TempJavaBeanFragmentFiles;
Bharat saraswalc0e04842016-05-12 13:16:57 +053026import org.onosproject.yangutils.translator.tojava.TempJavaEnumerationFragmentFiles;
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +053027import org.onosproject.yangutils.translator.tojava.TempJavaFragmentFiles;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +053028import org.onosproject.yangutils.translator.tojava.TempJavaServiceFragmentFiles;
29import org.onosproject.yangutils.translator.tojava.TempJavaTypeFragmentFiles;
Bharat saraswale2d51d62016-03-23 19:40:35 +053030import org.onosproject.yangutils.utils.io.impl.CopyrightHeader;
31import org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType;
32
33import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_CLASS_MASK;
34import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_INTERFACE_MASK;
Bharat saraswald72411a2016-04-19 01:00:16 +053035import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_ENUM_CLASS;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +053036import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_CLASS;
37import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_LISTENER_INTERFACE;
38import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
Bharat saraswale2d51d62016-03-23 19:40:35 +053039import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_TYPEDEF_CLASS;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053040import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_UNION_CLASS;
Bharat saraswale2d51d62016-03-23 19:40:35 +053041import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.IMPL_CLASS_MASK;
42import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.INTERFACE_MASK;
Bharat saraswalc0e04842016-05-12 13:16:57 +053043import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.ATTRIBUTES_MASK;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053044import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.CONSTRUCTOR_FOR_TYPE_MASK;
Bharat saraswale2d51d62016-03-23 19:40:35 +053045import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.CONSTRUCTOR_IMPL_MASK;
Bharat saraswald72411a2016-04-19 01:00:16 +053046import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.ENUM_IMPL_MASK;
Bharat saraswale2d51d62016-03-23 19:40:35 +053047import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.EQUALS_IMPL_MASK;
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +053048import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.FROM_STRING_IMPL_MASK;
Bharat saraswale2d51d62016-03-23 19:40:35 +053049import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.GETTER_FOR_CLASS_MASK;
50import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.GETTER_FOR_INTERFACE_MASK;
51import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.HASH_CODE_IMPL_MASK;
Gaurav Agrawal338735b2016-04-18 18:53:11 +053052import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.OF_STRING_IMPL_MASK;
Gaurav Agrawal56527662016-04-20 15:49:17 +053053import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.RPC_IMPL_MASK;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +053054import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.RPC_INTERFACE_MASK;
Bharat saraswale2d51d62016-03-23 19:40:35 +053055import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.SETTER_FOR_CLASS_MASK;
56import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.SETTER_FOR_INTERFACE_MASK;
57import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.TO_STRING_IMPL_MASK;
58import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getJavaClassDefStart;
Bharat saraswal2f11f652016-03-25 18:19:46 +053059import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getJavaPackageFromPackagePath;
Bharat saraswald72411a2016-04-19 01:00:16 +053060import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getSmallCase;
61import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
62import static org.onosproject.yangutils.utils.UtilConstants.INT;
Bharat saraswalc0e04842016-05-12 13:16:57 +053063import static org.onosproject.yangutils.utils.UtilConstants.MANAGER;
Bharat saraswale2d51d62016-03-23 19:40:35 +053064import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
65import static org.onosproject.yangutils.utils.UtilConstants.ORG;
66import static org.onosproject.yangutils.utils.UtilConstants.PACKAGE;
Bharat saraswald72411a2016-04-19 01:00:16 +053067import static org.onosproject.yangutils.utils.UtilConstants.PRIVATE;
Bharat saraswale2d51d62016-03-23 19:40:35 +053068import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
Bharat saraswalc0e04842016-05-12 13:16:57 +053069import static org.onosproject.yangutils.utils.UtilConstants.SERVICE;
Bharat saraswale2d51d62016-03-23 19:40:35 +053070import static org.onosproject.yangutils.utils.UtilConstants.SLASH;
71import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
Bharat saraswalc0e04842016-05-12 13:16:57 +053072import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
Bharat saraswale2d51d62016-03-23 19:40:35 +053073import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.BUILDER_CLASS;
74import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.BUILDER_INTERFACE;
Bharat saraswald72411a2016-04-19 01:00:16 +053075import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.ENUM_CLASS;
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +053076import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.EVENT;
77import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.EVENT_LISTENER;
Bharat saraswale2d51d62016-03-23 19:40:35 +053078import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.IMPL_CLASS;
79import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.INTERFACE;
Gaurav Agrawal56527662016-04-20 15:49:17 +053080import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.RPC_INTERFACE;
Bharat saraswalc0e04842016-05-12 13:16:57 +053081import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.RPC_MANAGER;
Bharat saraswale2d51d62016-03-23 19:40:35 +053082import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.insertDataIntoJavaFile;
83
84/**
Bharat saraswald9822e92016-04-05 15:13:44 +053085 * Represents utilities for java file generator.
Bharat saraswale2d51d62016-03-23 19:40:35 +053086 */
87public final class JavaFileGeneratorUtils {
88
89 /**
Bharat saraswald9822e92016-04-05 15:13:44 +053090 * Creates an instance of java file generator util.
Bharat saraswale2d51d62016-03-23 19:40:35 +053091 */
92 private JavaFileGeneratorUtils() {
93 }
94
95 /**
96 * Returns a file object for generated file.
97 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +053098 * @param fileName file name
99 * @param filePath file package path
Bharat saraswale2d51d62016-03-23 19:40:35 +0530100 * @param extension file extension
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530101 * @param handle cached file handle
Bharat saraswale2d51d62016-03-23 19:40:35 +0530102 * @return file object
103 */
104 public static File getFileObject(String filePath, String fileName, String extension, JavaFileInfo handle) {
105
106 return new File(handle.getBaseCodeGenPath() + filePath + SLASH + fileName + extension);
107 }
108
109 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530110 * Returns data stored in temporary files.
Bharat saraswale2d51d62016-03-23 19:40:35 +0530111 *
112 * @param generatedTempFiles temporary file types
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530113 * @param tempJavaFragmentFiles temp java fragment files
Bharat saraswale2d51d62016-03-23 19:40:35 +0530114 * @return data stored in temporary files
115 * @throws IOException when failed to get the data from temporary file handle
116 */
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530117 public static String getDataFromTempFileHandle(int generatedTempFiles,
118 TempJavaFragmentFiles tempJavaFragmentFiles)
119 throws IOException {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530120
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530121 TempJavaTypeFragmentFiles typeFragmentFiles = null;
Bharat saraswale2d51d62016-03-23 19:40:35 +0530122
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530123 if (tempJavaFragmentFiles instanceof TempJavaTypeFragmentFiles) {
124 typeFragmentFiles = (TempJavaTypeFragmentFiles) tempJavaFragmentFiles;
125 }
126
127 TempJavaBeanFragmentFiles beanFragmentFiles = null;
128
129 if (tempJavaFragmentFiles instanceof TempJavaBeanFragmentFiles) {
130 beanFragmentFiles = (TempJavaBeanFragmentFiles) tempJavaFragmentFiles;
131 }
132
133 TempJavaServiceFragmentFiles serviceFragmentFiles = null;
134 if (tempJavaFragmentFiles instanceof TempJavaServiceFragmentFiles) {
135 serviceFragmentFiles = (TempJavaServiceFragmentFiles) tempJavaFragmentFiles;
136 }
Bharat saraswalc0e04842016-05-12 13:16:57 +0530137 if ((generatedTempFiles & ATTRIBUTES_MASK) != 0) {
138 return tempJavaFragmentFiles
139 .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getAttributesTempFileHandle());
140 } else if ((generatedTempFiles & GETTER_FOR_INTERFACE_MASK) != 0) {
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530141 return tempJavaFragmentFiles
142 .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getGetterInterfaceTempFileHandle());
Bharat saraswale2d51d62016-03-23 19:40:35 +0530143 } else if ((generatedTempFiles & SETTER_FOR_INTERFACE_MASK) != 0) {
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530144 return tempJavaFragmentFiles
145 .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getSetterInterfaceTempFileHandle());
Bharat saraswale2d51d62016-03-23 19:40:35 +0530146 } else if ((generatedTempFiles & GETTER_FOR_CLASS_MASK) != 0) {
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530147 return tempJavaFragmentFiles
148 .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getGetterImplTempFileHandle());
Bharat saraswale2d51d62016-03-23 19:40:35 +0530149 } else if ((generatedTempFiles & SETTER_FOR_CLASS_MASK) != 0) {
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530150 return tempJavaFragmentFiles
151 .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getSetterImplTempFileHandle());
Bharat saraswale2d51d62016-03-23 19:40:35 +0530152 } else if ((generatedTempFiles & CONSTRUCTOR_IMPL_MASK) != 0) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530153 if (beanFragmentFiles == null) {
154 throw new TranslatorException("Required constructor info is missing.");
155 }
156 return beanFragmentFiles
157 .getTemporaryDataFromFileHandle(beanFragmentFiles.getConstructorImplTempFileHandle());
Bharat saraswale2d51d62016-03-23 19:40:35 +0530158 } else if ((generatedTempFiles & HASH_CODE_IMPL_MASK) != 0) {
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530159 return tempJavaFragmentFiles
160 .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getHashCodeImplTempFileHandle());
Bharat saraswale2d51d62016-03-23 19:40:35 +0530161 } else if ((generatedTempFiles & EQUALS_IMPL_MASK) != 0) {
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530162 return tempJavaFragmentFiles
163 .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getEqualsImplTempFileHandle());
Bharat saraswale2d51d62016-03-23 19:40:35 +0530164 } else if ((generatedTempFiles & TO_STRING_IMPL_MASK) != 0) {
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530165 return tempJavaFragmentFiles
166 .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getToStringImplTempFileHandle());
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530167 } else if ((generatedTempFiles & OF_STRING_IMPL_MASK) != 0) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530168 if (typeFragmentFiles == null) {
169 throw new TranslatorException("Required of string implementation info is missing.");
170 }
171 return typeFragmentFiles
172 .getTemporaryDataFromFileHandle(typeFragmentFiles.getOfStringImplTempFileHandle());
173 } else if ((generatedTempFiles & CONSTRUCTOR_FOR_TYPE_MASK) != 0) {
174 if (typeFragmentFiles == null) {
175 throw new TranslatorException("Required constructor implementation info is missing.");
176 }
177 return typeFragmentFiles
178 .getTemporaryDataFromFileHandle(typeFragmentFiles.getConstructorForTypeTempFileHandle());
Gaurav Agrawal56527662016-04-20 15:49:17 +0530179 } else if ((generatedTempFiles & FROM_STRING_IMPL_MASK) != 0) {
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530180 return tempJavaFragmentFiles
Bharat saraswalc0e04842016-05-12 13:16:57 +0530181 .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getFromStringImplTempFileHandle());
182 } else if ((generatedTempFiles & ENUM_IMPL_MASK) != 0) {
183 if (!(tempJavaFragmentFiles instanceof TempJavaEnumerationFragmentFiles)) {
184 throw new TranslatorException("Required enum info is missing.");
185 }
186 TempJavaEnumerationFragmentFiles enumFragmentFiles =
187 (TempJavaEnumerationFragmentFiles) tempJavaFragmentFiles;
188 return enumFragmentFiles
189 .getTemporaryDataFromFileHandle(enumFragmentFiles.getEnumClassTempFileHandle());
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530190 } else if ((generatedTempFiles & RPC_INTERFACE_MASK) != 0) {
191 if (serviceFragmentFiles == null) {
192 throw new TranslatorException("Required rpc interface info is missing.");
193 }
194 return serviceFragmentFiles
195 .getTemporaryDataFromFileHandle(serviceFragmentFiles.getRpcInterfaceTempFileHandle());
Gaurav Agrawal56527662016-04-20 15:49:17 +0530196 } else if ((generatedTempFiles & RPC_IMPL_MASK) != 0) {
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530197 if (serviceFragmentFiles == null) {
198 throw new TranslatorException("Required rpc implementation info is missing.");
199 }
200 return serviceFragmentFiles
201 .getTemporaryDataFromFileHandle(serviceFragmentFiles.getRpcImplTempFileHandle());
Bharat saraswale2d51d62016-03-23 19:40:35 +0530202 }
203 return null;
204 }
205
206 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530207 * Initiates generation of file based on generated file type.
Bharat saraswale2d51d62016-03-23 19:40:35 +0530208 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530209 * @param file generated file
Bharat saraswale2d51d62016-03-23 19:40:35 +0530210 * @param className generated file class name
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530211 * @param type generated file type
212 * @param imports imports for the file
213 * @param pkg generated file package
Bharat saraswale2d51d62016-03-23 19:40:35 +0530214 * @throws IOException when fails to generate a file
215 */
216 public static void initiateJavaFileGeneration(File file, String className, int type, List<String> imports,
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530217 String pkg)
218 throws IOException {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530219
220 try {
221 file.createNewFile();
222 appendContents(file, className, type, imports, pkg);
223 } catch (IOException e) {
224 throw new IOException("Failed to create " + file.getName() + " class file.");
225 }
226 }
227
228 /**
229 * Appends all the contents into a generated java file.
230 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530231 * @param file generated file
232 * @param fileName generated file name
233 * @param type generated file type
234 * @param pkg generated file package
Bharat saraswale2d51d62016-03-23 19:40:35 +0530235 * @param importsList list of java imports.
236 * @throws IOException when fails to append contents
237 */
238 private static void appendContents(File file, String fileName, int type, List<String> importsList,
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530239 String pkg)
240 throws IOException {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530241
242 String pkgString = parsePackageString(pkg, importsList);
243
244 if ((type & IMPL_CLASS_MASK) != 0) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530245 write(file, fileName, type, IMPL_CLASS);
246 } else if ((type & BUILDER_INTERFACE_MASK) != 0) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530247 write(file, fileName, type, BUILDER_INTERFACE);
248 } else if ((type & GENERATE_TYPEDEF_CLASS) != 0) {
249 appendHeaderContents(file, pkgString, importsList);
250 write(file, fileName, type, IMPL_CLASS);
251 } else if ((type & INTERFACE_MASK) != 0) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530252 appendHeaderContents(file, pkgString, importsList);
253 write(file, fileName, type, INTERFACE);
254 } else if ((type & BUILDER_CLASS_MASK) != 0) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530255 appendHeaderContents(file, pkgString, importsList);
256 write(file, fileName, type, BUILDER_CLASS);
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530257 } else if ((type & GENERATE_UNION_CLASS) != 0) {
258 appendHeaderContents(file, pkgString, importsList);
259 write(file, fileName, type, IMPL_CLASS);
Bharat saraswald72411a2016-04-19 01:00:16 +0530260 } else if ((type & GENERATE_ENUM_CLASS) != 0) {
261 appendHeaderContents(file, pkgString, importsList);
262 write(file, fileName, type, ENUM_CLASS);
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530263 } else if ((type & GENERATE_SERVICE_AND_MANAGER) != 0) {
Gaurav Agrawal56527662016-04-20 15:49:17 +0530264 appendHeaderContents(file, pkgString, importsList);
265 write(file, fileName, type, RPC_INTERFACE);
VinodKumarS-Huaweicb3a1f52016-05-10 17:58:57 +0530266 } else if ((type & GENERATE_EVENT_CLASS) != 0) {
267 appendHeaderContents(file, pkgString, importsList);
268 write(file, fileName, type, EVENT);
269 } else if ((type & GENERATE_EVENT_LISTENER_INTERFACE) != 0) {
270 appendHeaderContents(file, pkgString, importsList);
271 write(file, fileName, type, EVENT_LISTENER);
Bharat saraswale2d51d62016-03-23 19:40:35 +0530272 }
273 }
274
275 /**
276 * Removes base directory path from package and generates package string for file.
277 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530278 * @param javaPkg generated java package
Bharat saraswale2d51d62016-03-23 19:40:35 +0530279 * @param importsList list of imports
280 * @return package string
281 */
282 private static String parsePackageString(String javaPkg, List<String> importsList) {
283
284 if (javaPkg.contains(ORG)) {
285 String[] strArray = javaPkg.split(ORG);
Bharat saraswal2f11f652016-03-25 18:19:46 +0530286 javaPkg = ORG + getJavaPackageFromPackagePath(strArray[1]);
Bharat saraswale2d51d62016-03-23 19:40:35 +0530287 }
288 if (importsList != null) {
289 if (!importsList.isEmpty()) {
290 return PACKAGE + SPACE + javaPkg + SEMI_COLAN + NEW_LINE;
291 } else {
292 return PACKAGE + SPACE + javaPkg + SEMI_COLAN;
293 }
294 } else {
295 return PACKAGE + SPACE + javaPkg + SEMI_COLAN;
296 }
297 }
298
299 /**
300 * Appends other contents to interface, builder and typedef classes.
301 * for example : ONOS copyright, imports and package.
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530302 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530303 * @param file generated file
304 * @param pkg generated package
Bharat saraswale2d51d62016-03-23 19:40:35 +0530305 * @param importsList list of imports
Gaurav Agrawal338735b2016-04-18 18:53:11 +0530306 * @throws IOException when fails to append contents
Bharat saraswale2d51d62016-03-23 19:40:35 +0530307 */
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530308 private static void appendHeaderContents(File file, String pkg, List<String> importsList)
309 throws IOException {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530310
311 insertDataIntoJavaFile(file, CopyrightHeader.getCopyrightHeader());
312 insertDataIntoJavaFile(file, pkg);
313
314 /*
315 * TODO: add the file header using
316 * JavaCodeSnippetGen.getFileHeaderComment
317 */
318
319 if (importsList != null) {
320 insertDataIntoJavaFile(file, NEW_LINE);
321 for (String imports : importsList) {
322 insertDataIntoJavaFile(file, imports);
323 }
324 }
325 }
326
327 /**
Bharat saraswald9822e92016-04-05 15:13:44 +0530328 * Writes data to the specific generated file.
Bharat saraswale2d51d62016-03-23 19:40:35 +0530329 *
Vinod Kumar Se4b9b0c2016-04-30 21:09:15 +0530330 * @param file generated file
331 * @param fileName file name
332 * @param genType generated file type
Bharat saraswale2d51d62016-03-23 19:40:35 +0530333 * @param javaDocType java doc type
334 * @throws IOException when fails to write into a file
335 */
336 private static void write(File file, String fileName, int genType, JavaDocType javaDocType)
337 throws IOException {
Bharat saraswalc0e04842016-05-12 13:16:57 +0530338 if ((genType & GENERATE_SERVICE_AND_MANAGER) != 0) {
339 if (!fileName.contains(SERVICE)) {
340 insertDataIntoJavaFile(file, getJavaDoc(RPC_MANAGER, fileName + MANAGER, false));
341 } else {
342 insertDataIntoJavaFile(file, getJavaDoc(javaDocType, fileName, false));
343 }
344 } else {
345 insertDataIntoJavaFile(file, getJavaDoc(javaDocType, fileName, false));
346 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530347 insertDataIntoJavaFile(file, getJavaClassDefStart(genType, fileName));
348 }
349
Bharat saraswald72411a2016-04-19 01:00:16 +0530350 /**
351 * Returns integer attribute for enum's class to get the values.
352 *
353 * @param className enum's class name
354 * @return enum's attribute
355 */
356 public static String getEnumsValueAttribute(String className) {
357 return NEW_LINE + FOUR_SPACE_INDENTATION + PRIVATE + SPACE + INT + SPACE + getSmallCase(className) + SEMI_COLAN
358 + NEW_LINE;
359 }
360
Bharat saraswale2d51d62016-03-23 19:40:35 +0530361}