Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 1 | /* |
Brian O'Connor | 5ab426f | 2016-04-09 01:19:45 -0700 | [diff] [blame] | 2 | * Copyright 2016-present Open Networking Laboratory |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 3 | * |
| 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 | |
| 17 | package org.onosproject.yangutils.translator.tojava.utils; |
| 18 | |
| 19 | import java.io.File; |
| 20 | import java.io.IOException; |
| 21 | import java.util.List; |
Vinod Kumar S | e4b9b0c | 2016-04-30 21:09:15 +0530 | [diff] [blame] | 22 | |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 23 | import org.onosproject.yangutils.datamodel.YangAugment; |
Bharat saraswal | ab4c6ba | 2016-05-17 14:19:38 +0530 | [diff] [blame] | 24 | import org.onosproject.yangutils.datamodel.YangNode; |
VinodKumarS-Huawei | cb3a1f5 | 2016-05-10 17:58:57 +0530 | [diff] [blame] | 25 | import org.onosproject.yangutils.translator.exception.TranslatorException; |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 26 | import org.onosproject.yangutils.translator.tojava.JavaFileInfo; |
Bharat saraswal | ab4c6ba | 2016-05-17 14:19:38 +0530 | [diff] [blame] | 27 | import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer; |
VinodKumarS-Huawei | cb3a1f5 | 2016-05-10 17:58:57 +0530 | [diff] [blame] | 28 | import org.onosproject.yangutils.translator.tojava.TempJavaBeanFragmentFiles; |
Bharat saraswal | c0e0484 | 2016-05-12 13:16:57 +0530 | [diff] [blame] | 29 | import org.onosproject.yangutils.translator.tojava.TempJavaEnumerationFragmentFiles; |
Vinod Kumar S | e4b9b0c | 2016-04-30 21:09:15 +0530 | [diff] [blame] | 30 | import org.onosproject.yangutils.translator.tojava.TempJavaFragmentFiles; |
VinodKumarS-Huawei | cb3a1f5 | 2016-05-10 17:58:57 +0530 | [diff] [blame] | 31 | import org.onosproject.yangutils.translator.tojava.TempJavaServiceFragmentFiles; |
| 32 | import org.onosproject.yangutils.translator.tojava.TempJavaTypeFragmentFiles; |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 33 | import org.onosproject.yangutils.utils.io.impl.CopyrightHeader; |
| 34 | import org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType; |
Gaurav Agrawal | 8a5af14 | 2016-06-15 13:58:01 +0530 | [diff] [blame] | 35 | import org.onosproject.yangutils.utils.io.impl.YangPluginConfig; |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 36 | |
| 37 | import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_CLASS_MASK; |
| 38 | import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_INTERFACE_MASK; |
Bharat saraswal | d72411a | 2016-04-19 01:00:16 +0530 | [diff] [blame] | 39 | import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_ENUM_CLASS; |
VinodKumarS-Huawei | cb3a1f5 | 2016-05-10 17:58:57 +0530 | [diff] [blame] | 40 | import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_CLASS; |
| 41 | import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_LISTENER_INTERFACE; |
Bharat saraswal | 33dfa01 | 2016-05-17 19:59:16 +0530 | [diff] [blame] | 42 | import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_SUBJECT_CLASS; |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 43 | import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_IDENTITY_CLASS; |
VinodKumarS-Huawei | cb3a1f5 | 2016-05-10 17:58:57 +0530 | [diff] [blame] | 44 | import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER; |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 45 | import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_TYPEDEF_CLASS; |
Gaurav Agrawal | 338735b | 2016-04-18 18:53:11 +0530 | [diff] [blame] | 46 | import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_UNION_CLASS; |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 47 | import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.IMPL_CLASS_MASK; |
| 48 | import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.INTERFACE_MASK; |
Bharat saraswal | c0e0484 | 2016-05-12 13:16:57 +0530 | [diff] [blame] | 49 | import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.ATTRIBUTES_MASK; |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 50 | import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.AUGMENTE_CLASS_CONSTRUCTOR_MASK; |
Gaurav Agrawal | 338735b | 2016-04-18 18:53:11 +0530 | [diff] [blame] | 51 | import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.CONSTRUCTOR_FOR_TYPE_MASK; |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 52 | import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.CONSTRUCTOR_IMPL_MASK; |
Bharat saraswal | d72411a | 2016-04-19 01:00:16 +0530 | [diff] [blame] | 53 | import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.ENUM_IMPL_MASK; |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 54 | import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.EQUALS_IMPL_MASK; |
Bharat saraswal | 33dfa01 | 2016-05-17 19:59:16 +0530 | [diff] [blame] | 55 | import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.EVENT_ENUM_MASK; |
| 56 | import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.EVENT_METHOD_MASK; |
| 57 | import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.EVENT_SUBJECT_ATTRIBUTE_MASK; |
| 58 | import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.EVENT_SUBJECT_GETTER_MASK; |
| 59 | import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.EVENT_SUBJECT_SETTER_MASK; |
Vinod Kumar S | e4b9b0c | 2016-04-30 21:09:15 +0530 | [diff] [blame] | 60 | import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.FROM_STRING_IMPL_MASK; |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 61 | import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.GETTER_FOR_CLASS_MASK; |
| 62 | import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.GETTER_FOR_INTERFACE_MASK; |
| 63 | import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.HASH_CODE_IMPL_MASK; |
Gaurav Agrawal | 338735b | 2016-04-18 18:53:11 +0530 | [diff] [blame] | 64 | import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.OF_STRING_IMPL_MASK; |
Gaurav Agrawal | 5652766 | 2016-04-20 15:49:17 +0530 | [diff] [blame] | 65 | import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.RPC_IMPL_MASK; |
VinodKumarS-Huawei | cb3a1f5 | 2016-05-10 17:58:57 +0530 | [diff] [blame] | 66 | import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.RPC_INTERFACE_MASK; |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 67 | import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.SETTER_FOR_CLASS_MASK; |
| 68 | import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.SETTER_FOR_INTERFACE_MASK; |
| 69 | import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.TO_STRING_IMPL_MASK; |
Bharat saraswal | ab4c6ba | 2016-05-17 14:19:38 +0530 | [diff] [blame] | 70 | import static org.onosproject.yangutils.translator.tojava.utils.ClassDefinitionGenerator.generateClassDefinition; |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 71 | import static org.onosproject.yangutils.utils.UtilConstants.BUILDER; |
Shankara-Huawei | df7b9ca | 2016-07-14 11:35:34 +0530 | [diff] [blame] | 72 | import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET; |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 73 | import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT; |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 74 | import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE; |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 75 | import static org.onosproject.yangutils.utils.UtilConstants.PACKAGE; |
Bharat saraswal | 33dfa01 | 2016-05-17 19:59:16 +0530 | [diff] [blame] | 76 | import static org.onosproject.yangutils.utils.UtilConstants.PERIOD; |
janani b | dd1314f | 2016-05-19 17:39:50 +0530 | [diff] [blame] | 77 | import static org.onosproject.yangutils.utils.UtilConstants.REGEX_FOR_ANY_STRING_ENDING_WITH_SERVICE; |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 78 | import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN; |
| 79 | import static org.onosproject.yangutils.utils.UtilConstants.SLASH; |
| 80 | import static org.onosproject.yangutils.utils.UtilConstants.SPACE; |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 81 | import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.BUILDER_CLASS; |
| 82 | import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.BUILDER_INTERFACE; |
Bharat saraswal | d72411a | 2016-04-19 01:00:16 +0530 | [diff] [blame] | 83 | import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.ENUM_CLASS; |
VinodKumarS-Huawei | cb3a1f5 | 2016-05-10 17:58:57 +0530 | [diff] [blame] | 84 | import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.EVENT; |
| 85 | import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.EVENT_LISTENER; |
Bharat saraswal | 33dfa01 | 2016-05-17 19:59:16 +0530 | [diff] [blame] | 86 | import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.EVENT_SUBJECT_CLASS; |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 87 | import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.IMPL_CLASS; |
| 88 | import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.INTERFACE; |
Gaurav Agrawal | 5652766 | 2016-04-20 15:49:17 +0530 | [diff] [blame] | 89 | import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.RPC_INTERFACE; |
Bharat saraswal | c0e0484 | 2016-05-12 13:16:57 +0530 | [diff] [blame] | 90 | import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.RPC_MANAGER; |
VinodKumarS-Huawei | 2ee9e7e | 2016-06-01 14:30:22 +0530 | [diff] [blame] | 91 | import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc; |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 92 | import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase; |
| 93 | import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase; |
| 94 | import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getJavaPackageFromPackagePath; |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 95 | import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.insertDataIntoJavaFile; |
Bharat saraswal | 33dfa01 | 2016-05-17 19:59:16 +0530 | [diff] [blame] | 96 | import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.parsePkg; |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 97 | |
| 98 | /** |
Bharat saraswal | d9822e9 | 2016-04-05 15:13:44 +0530 | [diff] [blame] | 99 | * Represents utilities for java file generator. |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 100 | */ |
| 101 | public final class JavaFileGeneratorUtils { |
| 102 | |
| 103 | /** |
Bharat saraswal | d9822e9 | 2016-04-05 15:13:44 +0530 | [diff] [blame] | 104 | * Creates an instance of java file generator util. |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 105 | */ |
| 106 | private JavaFileGeneratorUtils() { |
| 107 | } |
| 108 | |
| 109 | /** |
| 110 | * Returns a file object for generated file. |
| 111 | * |
VinodKumarS-Huawei | 2ee9e7e | 2016-06-01 14:30:22 +0530 | [diff] [blame] | 112 | * @param fileName file name |
| 113 | * @param filePath file package path |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 114 | * @param extension file extension |
VinodKumarS-Huawei | 2ee9e7e | 2016-06-01 14:30:22 +0530 | [diff] [blame] | 115 | * @param handle cached file handle |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 116 | * @return file object |
| 117 | */ |
| 118 | public static File getFileObject(String filePath, String fileName, String extension, JavaFileInfo handle) { |
| 119 | |
| 120 | return new File(handle.getBaseCodeGenPath() + filePath + SLASH + fileName + extension); |
| 121 | } |
| 122 | |
| 123 | /** |
Bharat saraswal | d9822e9 | 2016-04-05 15:13:44 +0530 | [diff] [blame] | 124 | * Returns data stored in temporary files. |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 125 | * |
VinodKumarS-Huawei | 2ee9e7e | 2016-06-01 14:30:22 +0530 | [diff] [blame] | 126 | * @param generatedTempFiles temporary file types |
Vinod Kumar S | e4b9b0c | 2016-04-30 21:09:15 +0530 | [diff] [blame] | 127 | * @param tempJavaFragmentFiles temp java fragment files |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 128 | * @param absolutePath absolute path |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 129 | * @return data stored in temporary files |
| 130 | * @throws IOException when failed to get the data from temporary file handle |
| 131 | */ |
Vinod Kumar S | e4b9b0c | 2016-04-30 21:09:15 +0530 | [diff] [blame] | 132 | public static String getDataFromTempFileHandle(int generatedTempFiles, |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 133 | TempJavaFragmentFiles tempJavaFragmentFiles, String absolutePath) |
Vinod Kumar S | e4b9b0c | 2016-04-30 21:09:15 +0530 | [diff] [blame] | 134 | throws IOException { |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 135 | |
VinodKumarS-Huawei | cb3a1f5 | 2016-05-10 17:58:57 +0530 | [diff] [blame] | 136 | TempJavaTypeFragmentFiles typeFragmentFiles = null; |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 137 | |
VinodKumarS-Huawei | cb3a1f5 | 2016-05-10 17:58:57 +0530 | [diff] [blame] | 138 | if (tempJavaFragmentFiles instanceof TempJavaTypeFragmentFiles) { |
| 139 | typeFragmentFiles = (TempJavaTypeFragmentFiles) tempJavaFragmentFiles; |
| 140 | } |
| 141 | |
| 142 | TempJavaBeanFragmentFiles beanFragmentFiles = null; |
| 143 | |
| 144 | if (tempJavaFragmentFiles instanceof TempJavaBeanFragmentFiles) { |
| 145 | beanFragmentFiles = (TempJavaBeanFragmentFiles) tempJavaFragmentFiles; |
| 146 | } |
| 147 | |
| 148 | TempJavaServiceFragmentFiles serviceFragmentFiles = null; |
| 149 | if (tempJavaFragmentFiles instanceof TempJavaServiceFragmentFiles) { |
| 150 | serviceFragmentFiles = (TempJavaServiceFragmentFiles) tempJavaFragmentFiles; |
| 151 | } |
Bharat saraswal | 33dfa01 | 2016-05-17 19:59:16 +0530 | [diff] [blame] | 152 | |
Bharat saraswal | c0e0484 | 2016-05-12 13:16:57 +0530 | [diff] [blame] | 153 | if ((generatedTempFiles & ATTRIBUTES_MASK) != 0) { |
| 154 | return tempJavaFragmentFiles |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 155 | .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getAttributesTempFileHandle(), |
| 156 | absolutePath); |
Bharat saraswal | c0e0484 | 2016-05-12 13:16:57 +0530 | [diff] [blame] | 157 | } else if ((generatedTempFiles & GETTER_FOR_INTERFACE_MASK) != 0) { |
Vinod Kumar S | e4b9b0c | 2016-04-30 21:09:15 +0530 | [diff] [blame] | 158 | return tempJavaFragmentFiles |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 159 | .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getGetterInterfaceTempFileHandle(), |
| 160 | absolutePath); |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 161 | } else if ((generatedTempFiles & SETTER_FOR_INTERFACE_MASK) != 0) { |
Vinod Kumar S | e4b9b0c | 2016-04-30 21:09:15 +0530 | [diff] [blame] | 162 | return tempJavaFragmentFiles |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 163 | .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getSetterInterfaceTempFileHandle(), |
| 164 | absolutePath); |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 165 | } else if ((generatedTempFiles & GETTER_FOR_CLASS_MASK) != 0) { |
Vinod Kumar S | e4b9b0c | 2016-04-30 21:09:15 +0530 | [diff] [blame] | 166 | return tempJavaFragmentFiles |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 167 | .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getGetterImplTempFileHandle(), |
| 168 | absolutePath); |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 169 | } else if ((generatedTempFiles & SETTER_FOR_CLASS_MASK) != 0) { |
Vinod Kumar S | e4b9b0c | 2016-04-30 21:09:15 +0530 | [diff] [blame] | 170 | return tempJavaFragmentFiles |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 171 | .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getSetterImplTempFileHandle(), |
| 172 | absolutePath); |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 173 | } else if ((generatedTempFiles & CONSTRUCTOR_IMPL_MASK) != 0) { |
VinodKumarS-Huawei | cb3a1f5 | 2016-05-10 17:58:57 +0530 | [diff] [blame] | 174 | if (beanFragmentFiles == null) { |
| 175 | throw new TranslatorException("Required constructor info is missing."); |
| 176 | } |
| 177 | return beanFragmentFiles |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 178 | .getTemporaryDataFromFileHandle(beanFragmentFiles.getConstructorImplTempFileHandle(), |
| 179 | absolutePath); |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 180 | } else if ((generatedTempFiles & HASH_CODE_IMPL_MASK) != 0) { |
Vinod Kumar S | e4b9b0c | 2016-04-30 21:09:15 +0530 | [diff] [blame] | 181 | return tempJavaFragmentFiles |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 182 | .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getHashCodeImplTempFileHandle(), |
| 183 | absolutePath); |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 184 | } else if ((generatedTempFiles & EQUALS_IMPL_MASK) != 0) { |
Vinod Kumar S | e4b9b0c | 2016-04-30 21:09:15 +0530 | [diff] [blame] | 185 | return tempJavaFragmentFiles |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 186 | .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getEqualsImplTempFileHandle(), |
| 187 | absolutePath); |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 188 | } else if ((generatedTempFiles & TO_STRING_IMPL_MASK) != 0) { |
Vinod Kumar S | e4b9b0c | 2016-04-30 21:09:15 +0530 | [diff] [blame] | 189 | return tempJavaFragmentFiles |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 190 | .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getToStringImplTempFileHandle(), |
| 191 | absolutePath); |
| 192 | } else if ((generatedTempFiles & AUGMENTE_CLASS_CONSTRUCTOR_MASK) != 0) { |
| 193 | return tempJavaFragmentFiles |
| 194 | .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getAugmentConstructorImplTempFileHandle(), |
| 195 | absolutePath); |
Gaurav Agrawal | 338735b | 2016-04-18 18:53:11 +0530 | [diff] [blame] | 196 | } else if ((generatedTempFiles & OF_STRING_IMPL_MASK) != 0) { |
VinodKumarS-Huawei | cb3a1f5 | 2016-05-10 17:58:57 +0530 | [diff] [blame] | 197 | if (typeFragmentFiles == null) { |
| 198 | throw new TranslatorException("Required of string implementation info is missing."); |
| 199 | } |
| 200 | return typeFragmentFiles |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 201 | .getTemporaryDataFromFileHandle(typeFragmentFiles.getOfStringImplTempFileHandle(), absolutePath); |
VinodKumarS-Huawei | cb3a1f5 | 2016-05-10 17:58:57 +0530 | [diff] [blame] | 202 | } else if ((generatedTempFiles & CONSTRUCTOR_FOR_TYPE_MASK) != 0) { |
| 203 | if (typeFragmentFiles == null) { |
| 204 | throw new TranslatorException("Required constructor implementation info is missing."); |
| 205 | } |
| 206 | return typeFragmentFiles |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 207 | .getTemporaryDataFromFileHandle(typeFragmentFiles.getConstructorForTypeTempFileHandle(), |
| 208 | absolutePath); |
Gaurav Agrawal | 5652766 | 2016-04-20 15:49:17 +0530 | [diff] [blame] | 209 | } else if ((generatedTempFiles & FROM_STRING_IMPL_MASK) != 0) { |
Vinod Kumar S | e4b9b0c | 2016-04-30 21:09:15 +0530 | [diff] [blame] | 210 | return tempJavaFragmentFiles |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 211 | .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getFromStringImplTempFileHandle(), |
| 212 | absolutePath); |
Bharat saraswal | c0e0484 | 2016-05-12 13:16:57 +0530 | [diff] [blame] | 213 | } else if ((generatedTempFiles & ENUM_IMPL_MASK) != 0) { |
| 214 | if (!(tempJavaFragmentFiles instanceof TempJavaEnumerationFragmentFiles)) { |
| 215 | throw new TranslatorException("Required enum info is missing."); |
| 216 | } |
| 217 | TempJavaEnumerationFragmentFiles enumFragmentFiles = |
| 218 | (TempJavaEnumerationFragmentFiles) tempJavaFragmentFiles; |
| 219 | return enumFragmentFiles |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 220 | .getTemporaryDataFromFileHandle(enumFragmentFiles.getEnumClassTempFileHandle(), absolutePath); |
VinodKumarS-Huawei | cb3a1f5 | 2016-05-10 17:58:57 +0530 | [diff] [blame] | 221 | } else if ((generatedTempFiles & RPC_INTERFACE_MASK) != 0) { |
| 222 | if (serviceFragmentFiles == null) { |
| 223 | throw new TranslatorException("Required rpc interface info is missing."); |
| 224 | } |
| 225 | return serviceFragmentFiles |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 226 | .getTemporaryDataFromFileHandle(serviceFragmentFiles.getRpcInterfaceTempFileHandle(), |
| 227 | absolutePath); |
Gaurav Agrawal | 5652766 | 2016-04-20 15:49:17 +0530 | [diff] [blame] | 228 | } else if ((generatedTempFiles & RPC_IMPL_MASK) != 0) { |
VinodKumarS-Huawei | cb3a1f5 | 2016-05-10 17:58:57 +0530 | [diff] [blame] | 229 | if (serviceFragmentFiles == null) { |
| 230 | throw new TranslatorException("Required rpc implementation info is missing."); |
| 231 | } |
| 232 | return serviceFragmentFiles |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 233 | .getTemporaryDataFromFileHandle(serviceFragmentFiles.getRpcImplTempFileHandle(), |
| 234 | absolutePath); |
Bharat saraswal | 33dfa01 | 2016-05-17 19:59:16 +0530 | [diff] [blame] | 235 | } else if ((generatedTempFiles & EVENT_ENUM_MASK) != 0) { |
| 236 | if (serviceFragmentFiles == null) { |
| 237 | throw new TranslatorException("Required rpc implementation info is missing."); |
| 238 | } |
| 239 | return serviceFragmentFiles |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 240 | .getTemporaryDataFromFileHandle(serviceFragmentFiles.getEventEnumTempFileHandle(), |
| 241 | absolutePath); |
Bharat saraswal | 33dfa01 | 2016-05-17 19:59:16 +0530 | [diff] [blame] | 242 | } else if ((generatedTempFiles & EVENT_METHOD_MASK) != 0) { |
| 243 | if (serviceFragmentFiles == null) { |
| 244 | throw new TranslatorException("Required rpc implementation info is missing."); |
| 245 | } |
| 246 | return serviceFragmentFiles |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 247 | .getTemporaryDataFromFileHandle(serviceFragmentFiles.getEventMethodTempFileHandle(), |
| 248 | absolutePath); |
Bharat saraswal | 33dfa01 | 2016-05-17 19:59:16 +0530 | [diff] [blame] | 249 | } else if ((generatedTempFiles & EVENT_SUBJECT_GETTER_MASK) != 0) { |
| 250 | if (serviceFragmentFiles == null) { |
| 251 | throw new TranslatorException("Required rpc implementation info is missing."); |
| 252 | } |
| 253 | return serviceFragmentFiles |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 254 | .getTemporaryDataFromFileHandle(serviceFragmentFiles.getEventSubjectGetterTempFileHandle(), |
| 255 | absolutePath); |
Bharat saraswal | 33dfa01 | 2016-05-17 19:59:16 +0530 | [diff] [blame] | 256 | } else if ((generatedTempFiles & EVENT_SUBJECT_SETTER_MASK) != 0) { |
| 257 | if (serviceFragmentFiles == null) { |
| 258 | throw new TranslatorException("Required rpc implementation info is missing."); |
| 259 | } |
| 260 | return serviceFragmentFiles |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 261 | .getTemporaryDataFromFileHandle(serviceFragmentFiles.getEventSubjectSetterTempFileHandle(), |
| 262 | absolutePath); |
Bharat saraswal | 33dfa01 | 2016-05-17 19:59:16 +0530 | [diff] [blame] | 263 | } else if ((generatedTempFiles & EVENT_SUBJECT_ATTRIBUTE_MASK) != 0) { |
| 264 | if (serviceFragmentFiles == null) { |
| 265 | throw new TranslatorException("Required rpc implementation info is missing."); |
| 266 | } |
| 267 | return serviceFragmentFiles |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 268 | .getTemporaryDataFromFileHandle(serviceFragmentFiles.getEventSubjectAttributeTempFileHandle(), |
| 269 | absolutePath); |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 270 | } |
| 271 | return null; |
| 272 | } |
| 273 | |
| 274 | /** |
Bharat saraswal | d9822e9 | 2016-04-05 15:13:44 +0530 | [diff] [blame] | 275 | * Initiates generation of file based on generated file type. |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 276 | * |
VinodKumarS-Huawei | 2ee9e7e | 2016-06-01 14:30:22 +0530 | [diff] [blame] | 277 | * @param file generated file |
| 278 | * @param className generated file class name |
| 279 | * @param genType generated file type |
| 280 | * @param imports imports for the file |
| 281 | * @param pkg generated file package |
Bharat saraswal | 33dfa01 | 2016-05-17 19:59:16 +0530 | [diff] [blame] | 282 | * @param pluginConfig plugin configurations |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 283 | * @throws IOException when fails to generate a file |
| 284 | */ |
sangyun-han | 19f8d35 | 2016-05-30 19:33:27 +0900 | [diff] [blame] | 285 | public static void initiateJavaFileGeneration(File file, String className, int genType, List<String> imports, |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 286 | String pkg, YangPluginConfig pluginConfig) |
Vinod Kumar S | e4b9b0c | 2016-04-30 21:09:15 +0530 | [diff] [blame] | 287 | throws IOException { |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 288 | |
| 289 | try { |
| 290 | file.createNewFile(); |
sangyun-han | 19f8d35 | 2016-05-30 19:33:27 +0900 | [diff] [blame] | 291 | appendContents(file, className, genType, imports, pkg, pluginConfig); |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 292 | } catch (IOException e) { |
| 293 | throw new IOException("Failed to create " + file.getName() + " class file."); |
| 294 | } |
| 295 | } |
| 296 | |
| 297 | /** |
Bharat saraswal | ab4c6ba | 2016-05-17 14:19:38 +0530 | [diff] [blame] | 298 | * Initiates generation of file based on generated file type. |
| 299 | * |
VinodKumarS-Huawei | 2ee9e7e | 2016-06-01 14:30:22 +0530 | [diff] [blame] | 300 | * @param file generated file |
| 301 | * @param genType generated file type |
| 302 | * @param imports imports for the file |
| 303 | * @param curNode current YANG node |
Bharat saraswal | ab4c6ba | 2016-05-17 14:19:38 +0530 | [diff] [blame] | 304 | * @param className class name |
| 305 | * @throws IOException when fails to generate a file |
| 306 | */ |
sangyun-han | 19f8d35 | 2016-05-30 19:33:27 +0900 | [diff] [blame] | 307 | public static void initiateJavaFileGeneration(File file, int genType, List<String> imports, |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 308 | YangNode curNode, String className) |
VinodKumarS-Huawei | 2ee9e7e | 2016-06-01 14:30:22 +0530 | [diff] [blame] | 309 | throws IOException { |
Bharat saraswal | ab4c6ba | 2016-05-17 14:19:38 +0530 | [diff] [blame] | 310 | |
| 311 | try { |
| 312 | file.createNewFile(); |
sangyun-han | 19f8d35 | 2016-05-30 19:33:27 +0900 | [diff] [blame] | 313 | appendContents(file, genType, imports, curNode, className); |
Bharat saraswal | ab4c6ba | 2016-05-17 14:19:38 +0530 | [diff] [blame] | 314 | } catch (IOException e) { |
| 315 | throw new IOException("Failed to create " + file.getName() + " class file."); |
| 316 | } |
| 317 | } |
| 318 | |
| 319 | /** |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 320 | * Appends all the contents into a generated java file. |
| 321 | * |
VinodKumarS-Huawei | 2ee9e7e | 2016-06-01 14:30:22 +0530 | [diff] [blame] | 322 | * @param file generated file |
| 323 | * @param genType generated file type |
sangyun-han | 19f8d35 | 2016-05-30 19:33:27 +0900 | [diff] [blame] | 324 | * @param importsList list of java imports |
VinodKumarS-Huawei | 2ee9e7e | 2016-06-01 14:30:22 +0530 | [diff] [blame] | 325 | * @param curNode current YANG node |
| 326 | * @param className class name |
sangyun-han | 19f8d35 | 2016-05-30 19:33:27 +0900 | [diff] [blame] | 327 | * @throws IOException |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 328 | */ |
sangyun-han | 19f8d35 | 2016-05-30 19:33:27 +0900 | [diff] [blame] | 329 | private static void appendContents(File file, int genType, List<String> importsList, YangNode curNode, |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 330 | String className) |
VinodKumarS-Huawei | 2ee9e7e | 2016-06-01 14:30:22 +0530 | [diff] [blame] | 331 | throws IOException { |
Bharat saraswal | ab4c6ba | 2016-05-17 14:19:38 +0530 | [diff] [blame] | 332 | |
| 333 | JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo(); |
| 334 | |
Bharat saraswal | 33dfa01 | 2016-05-17 19:59:16 +0530 | [diff] [blame] | 335 | String name = javaFileInfo.getJavaName(); |
Bharat saraswal | ab4c6ba | 2016-05-17 14:19:38 +0530 | [diff] [blame] | 336 | String path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath(); |
Bharat saraswal | ab4c6ba | 2016-05-17 14:19:38 +0530 | [diff] [blame] | 337 | |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 338 | YangNode augmentedNode = null; |
| 339 | if (curNode instanceof YangAugment) { |
| 340 | augmentedNode = ((YangAugment) curNode).getAugmentedNode(); |
| 341 | } |
Bharat saraswal | 33dfa01 | 2016-05-17 19:59:16 +0530 | [diff] [blame] | 342 | String pkgString = null; |
sangyun-han | 19f8d35 | 2016-05-30 19:33:27 +0900 | [diff] [blame] | 343 | if (genType == GENERATE_EVENT_CLASS |
| 344 | || genType == GENERATE_EVENT_LISTENER_INTERFACE |
| 345 | || genType == GENERATE_EVENT_SUBJECT_CLASS) { |
janani b | dd1314f | 2016-05-19 17:39:50 +0530 | [diff] [blame] | 346 | pkgString = parsePackageString((path + PERIOD + name).toLowerCase(), importsList); |
Bharat saraswal | 33dfa01 | 2016-05-17 19:59:16 +0530 | [diff] [blame] | 347 | } else { |
| 348 | pkgString = parsePackageString(path, importsList); |
| 349 | } |
sangyun-han | 19f8d35 | 2016-05-30 19:33:27 +0900 | [diff] [blame] | 350 | switch (genType) { |
VinodKumarS-Huawei | 2ee9e7e | 2016-06-01 14:30:22 +0530 | [diff] [blame] | 351 | case INTERFACE_MASK: |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 352 | if (augmentedNode != null) { |
| 353 | appendHeaderContents(file, pkgString, importsList, augmentedNode); |
| 354 | } else { |
| 355 | appendHeaderContents(file, pkgString, importsList); |
| 356 | } |
VinodKumarS-Huawei | 2ee9e7e | 2016-06-01 14:30:22 +0530 | [diff] [blame] | 357 | write(file, genType, INTERFACE, curNode, className); |
| 358 | break; |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 359 | case IMPL_CLASS_MASK: |
| 360 | appendHeaderContents(file, pkgString, importsList); |
| 361 | write(file, genType, IMPL_CLASS, curNode, className); |
| 362 | break; |
| 363 | case BUILDER_CLASS_MASK: |
| 364 | write(file, genType, BUILDER_CLASS, curNode, className); |
| 365 | break; |
| 366 | case BUILDER_INTERFACE_MASK: |
| 367 | write(file, genType, BUILDER_INTERFACE, curNode, className); |
| 368 | break; |
VinodKumarS-Huawei | 2ee9e7e | 2016-06-01 14:30:22 +0530 | [diff] [blame] | 369 | case GENERATE_SERVICE_AND_MANAGER: |
| 370 | appendHeaderContents(file, pkgString, importsList); |
| 371 | write(file, genType, RPC_INTERFACE, curNode, className); |
| 372 | break; |
| 373 | case GENERATE_EVENT_CLASS: |
| 374 | appendHeaderContents(file, pkgString, importsList); |
| 375 | write(file, genType, EVENT, curNode, className); |
| 376 | break; |
| 377 | case GENERATE_EVENT_LISTENER_INTERFACE: |
| 378 | appendHeaderContents(file, pkgString, importsList); |
| 379 | write(file, genType, EVENT_LISTENER, curNode, className); |
| 380 | break; |
| 381 | case GENERATE_EVENT_SUBJECT_CLASS: |
| 382 | appendHeaderContents(file, pkgString, importsList); |
| 383 | write(file, genType, EVENT_SUBJECT_CLASS, curNode, className); |
| 384 | break; |
Shankara-Huawei | df7b9ca | 2016-07-14 11:35:34 +0530 | [diff] [blame] | 385 | case GENERATE_IDENTITY_CLASS: |
| 386 | appendHeaderContents(file, pkgString, importsList); |
| 387 | write(file, genType, EVENT_SUBJECT_CLASS, curNode, className); |
| 388 | insertDataIntoJavaFile(file, CLOSE_CURLY_BRACKET); |
| 389 | break; |
VinodKumarS-Huawei | 2ee9e7e | 2016-06-01 14:30:22 +0530 | [diff] [blame] | 390 | default: |
| 391 | break; |
Bharat saraswal | ab4c6ba | 2016-05-17 14:19:38 +0530 | [diff] [blame] | 392 | } |
| 393 | } |
| 394 | |
| 395 | /** |
| 396 | * Appends all the contents into a generated java file. |
| 397 | * |
VinodKumarS-Huawei | 2ee9e7e | 2016-06-01 14:30:22 +0530 | [diff] [blame] | 398 | * @param file generated file |
| 399 | * @param fileName generated file name |
| 400 | * @param genType generated file type |
| 401 | * @param importsList list of java imports |
| 402 | * @param pkg generated file package |
sangyun-han | 19f8d35 | 2016-05-30 19:33:27 +0900 | [diff] [blame] | 403 | * @param pluginConfig plugin configurations |
Bharat saraswal | ab4c6ba | 2016-05-17 14:19:38 +0530 | [diff] [blame] | 404 | * @throws IOException when fails to append contents |
| 405 | */ |
sangyun-han | 19f8d35 | 2016-05-30 19:33:27 +0900 | [diff] [blame] | 406 | private static void appendContents(File file, String fileName, int genType, List<String> importsList, String pkg, |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 407 | YangPluginConfig pluginConfig) |
Vinod Kumar S | e4b9b0c | 2016-04-30 21:09:15 +0530 | [diff] [blame] | 408 | throws IOException { |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 409 | |
| 410 | String pkgString = parsePackageString(pkg, importsList); |
| 411 | |
sangyun-han | 19f8d35 | 2016-05-30 19:33:27 +0900 | [diff] [blame] | 412 | switch (genType) { |
VinodKumarS-Huawei | 2ee9e7e | 2016-06-01 14:30:22 +0530 | [diff] [blame] | 413 | case GENERATE_TYPEDEF_CLASS: |
| 414 | appendHeaderContents(file, pkgString, importsList); |
| 415 | write(file, fileName, genType, IMPL_CLASS, pluginConfig); |
| 416 | break; |
VinodKumarS-Huawei | 2ee9e7e | 2016-06-01 14:30:22 +0530 | [diff] [blame] | 417 | case GENERATE_UNION_CLASS: |
| 418 | appendHeaderContents(file, pkgString, importsList); |
| 419 | write(file, fileName, genType, IMPL_CLASS, pluginConfig); |
| 420 | break; |
| 421 | case GENERATE_ENUM_CLASS: |
| 422 | appendHeaderContents(file, pkgString, importsList); |
| 423 | write(file, fileName, genType, ENUM_CLASS, pluginConfig); |
| 424 | break; |
| 425 | default: |
| 426 | break; |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 427 | } |
| 428 | } |
| 429 | |
| 430 | /** |
| 431 | * Removes base directory path from package and generates package string for file. |
| 432 | * |
VinodKumarS-Huawei | 2ee9e7e | 2016-06-01 14:30:22 +0530 | [diff] [blame] | 433 | * @param javaPkg generated java package |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 434 | * @param importsList list of imports |
| 435 | * @return package string |
| 436 | */ |
| 437 | private static String parsePackageString(String javaPkg, List<String> importsList) { |
| 438 | |
Bharat saraswal | 33dfa01 | 2016-05-17 19:59:16 +0530 | [diff] [blame] | 439 | javaPkg = parsePkg(getJavaPackageFromPackagePath(javaPkg)); |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 440 | if (importsList != null) { |
| 441 | if (!importsList.isEmpty()) { |
| 442 | return PACKAGE + SPACE + javaPkg + SEMI_COLAN + NEW_LINE; |
| 443 | } else { |
| 444 | return PACKAGE + SPACE + javaPkg + SEMI_COLAN; |
| 445 | } |
| 446 | } else { |
| 447 | return PACKAGE + SPACE + javaPkg + SEMI_COLAN; |
| 448 | } |
| 449 | } |
| 450 | |
| 451 | /** |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 452 | * Appends other contents to interface, impl and typedef classes. |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 453 | * for example : ONOS copyright, imports and package. |
Gaurav Agrawal | 338735b | 2016-04-18 18:53:11 +0530 | [diff] [blame] | 454 | * |
VinodKumarS-Huawei | 2ee9e7e | 2016-06-01 14:30:22 +0530 | [diff] [blame] | 455 | * @param file generated file |
| 456 | * @param pkg generated package |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 457 | * @param importsList list of imports |
Gaurav Agrawal | 338735b | 2016-04-18 18:53:11 +0530 | [diff] [blame] | 458 | * @throws IOException when fails to append contents |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 459 | */ |
Vinod Kumar S | e4b9b0c | 2016-04-30 21:09:15 +0530 | [diff] [blame] | 460 | private static void appendHeaderContents(File file, String pkg, List<String> importsList) |
| 461 | throws IOException { |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 462 | |
| 463 | insertDataIntoJavaFile(file, CopyrightHeader.getCopyrightHeader()); |
| 464 | insertDataIntoJavaFile(file, pkg); |
| 465 | |
| 466 | /* |
| 467 | * TODO: add the file header using |
| 468 | * JavaCodeSnippetGen.getFileHeaderComment |
| 469 | */ |
| 470 | |
| 471 | if (importsList != null) { |
| 472 | insertDataIntoJavaFile(file, NEW_LINE); |
| 473 | for (String imports : importsList) { |
| 474 | insertDataIntoJavaFile(file, imports); |
| 475 | } |
| 476 | } |
| 477 | } |
| 478 | |
| 479 | /** |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 480 | * Appends other contents to interface and impl classes when augmented node is not null. |
| 481 | * for example : ONOS copyright, imports and package. |
| 482 | * |
| 483 | * @param file generated file |
| 484 | * @param pkg generated package |
| 485 | * @param augmentedNode augmented node |
| 486 | * @param importsList list of imports |
| 487 | * @throws IOException when fails to append contents |
| 488 | */ |
| 489 | private static void appendHeaderContents(File file, String pkg, List<String> importsList, YangNode augmentedNode) |
| 490 | throws IOException { |
| 491 | |
| 492 | insertDataIntoJavaFile(file, CopyrightHeader.getCopyrightHeader()); |
| 493 | insertDataIntoJavaFile(file, pkg); |
| 494 | |
| 495 | /* |
| 496 | * TODO: add the file header using |
| 497 | * JavaCodeSnippetGen.getFileHeaderComment |
| 498 | */ |
| 499 | |
| 500 | if (importsList != null) { |
| 501 | insertDataIntoJavaFile(file, NEW_LINE); |
| 502 | for (String imports : importsList) { |
| 503 | if (!imports.contains(getCapitalCase(DEFAULT) + getCapitalCase(getCamelCase(augmentedNode.getName(), |
| 504 | null))) |
| 505 | && !imports.contains(getCapitalCase(getCamelCase(augmentedNode.getName(), null)) + BUILDER)) { |
| 506 | insertDataIntoJavaFile(file, imports); |
| 507 | } |
| 508 | } |
| 509 | } |
| 510 | } |
| 511 | |
| 512 | /** |
Bharat saraswal | d9822e9 | 2016-04-05 15:13:44 +0530 | [diff] [blame] | 513 | * Writes data to the specific generated file. |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 514 | * |
VinodKumarS-Huawei | 2ee9e7e | 2016-06-01 14:30:22 +0530 | [diff] [blame] | 515 | * @param file generated file |
| 516 | * @param genType generated file type |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 517 | * @param javaDocType java doc type |
VinodKumarS-Huawei | 2ee9e7e | 2016-06-01 14:30:22 +0530 | [diff] [blame] | 518 | * @param curNode current YANG node |
| 519 | * @param fileName file name |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 520 | * @throws IOException when fails to write into a file |
| 521 | */ |
Bharat saraswal | ab4c6ba | 2016-05-17 14:19:38 +0530 | [diff] [blame] | 522 | private static void write(File file, int genType, JavaDocType javaDocType, YangNode curNode, String fileName) |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 523 | throws IOException { |
Bharat saraswal | ab4c6ba | 2016-05-17 14:19:38 +0530 | [diff] [blame] | 524 | |
Bharat saraswal | 33dfa01 | 2016-05-17 19:59:16 +0530 | [diff] [blame] | 525 | YangPluginConfig pluginConfig = ((JavaFileInfoContainer) curNode).getJavaFileInfo().getPluginConfig(); |
Bharat saraswal | c0e0484 | 2016-05-12 13:16:57 +0530 | [diff] [blame] | 526 | if ((genType & GENERATE_SERVICE_AND_MANAGER) != 0) { |
janani b | dd1314f | 2016-05-19 17:39:50 +0530 | [diff] [blame] | 527 | if (!fileName.matches(REGEX_FOR_ANY_STRING_ENDING_WITH_SERVICE)) { |
| 528 | insertDataIntoJavaFile(file, getJavaDoc(RPC_MANAGER, fileName, false, pluginConfig)); |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 529 | insertDataIntoJavaFile(file, JavaCodeSnippetGen.addComponentString()); |
Bharat saraswal | c0e0484 | 2016-05-12 13:16:57 +0530 | [diff] [blame] | 530 | } else { |
Bharat saraswal | 33dfa01 | 2016-05-17 19:59:16 +0530 | [diff] [blame] | 531 | insertDataIntoJavaFile(file, getJavaDoc(javaDocType, fileName, false, pluginConfig)); |
Bharat saraswal | c0e0484 | 2016-05-12 13:16:57 +0530 | [diff] [blame] | 532 | } |
| 533 | } else { |
Bharat saraswal | 33dfa01 | 2016-05-17 19:59:16 +0530 | [diff] [blame] | 534 | insertDataIntoJavaFile(file, getJavaDoc(javaDocType, fileName, false, pluginConfig)); |
Bharat saraswal | c0e0484 | 2016-05-12 13:16:57 +0530 | [diff] [blame] | 535 | } |
Bharat saraswal | ab4c6ba | 2016-05-17 14:19:38 +0530 | [diff] [blame] | 536 | insertDataIntoJavaFile(file, generateClassDefinition(genType, fileName, curNode)); |
| 537 | } |
| 538 | |
| 539 | /** |
| 540 | * Writes data to the specific generated file. |
| 541 | * |
VinodKumarS-Huawei | 2ee9e7e | 2016-06-01 14:30:22 +0530 | [diff] [blame] | 542 | * @param file generated file |
| 543 | * @param fileName file name |
| 544 | * @param genType generated file type |
| 545 | * @param javaDocType java doc type |
sangyun-han | 19f8d35 | 2016-05-30 19:33:27 +0900 | [diff] [blame] | 546 | * @param pluginConfig plugin configurations |
sangyun-han | 38201bb | 2016-06-01 14:12:07 +0900 | [diff] [blame] | 547 | * @throws IOException when fails to write into a file |
Bharat saraswal | ab4c6ba | 2016-05-17 14:19:38 +0530 | [diff] [blame] | 548 | */ |
Bharat saraswal | 33dfa01 | 2016-05-17 19:59:16 +0530 | [diff] [blame] | 549 | private static void write(File file, String fileName, int genType, JavaDocType javaDocType, |
Bharat saraswal | b1170bd | 2016-07-14 13:26:18 +0530 | [diff] [blame] | 550 | YangPluginConfig pluginConfig) |
Bharat saraswal | ab4c6ba | 2016-05-17 14:19:38 +0530 | [diff] [blame] | 551 | throws IOException { |
Bharat saraswal | 33dfa01 | 2016-05-17 19:59:16 +0530 | [diff] [blame] | 552 | insertDataIntoJavaFile(file, getJavaDoc(javaDocType, fileName, false, pluginConfig)); |
Bharat saraswal | ab4c6ba | 2016-05-17 14:19:38 +0530 | [diff] [blame] | 553 | insertDataIntoJavaFile(file, generateClassDefinition(genType, fileName)); |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 554 | } |
| 555 | |
Bharat saraswal | e2d51d6 | 2016-03-23 19:40:35 +0530 | [diff] [blame] | 556 | } |