blob: 7a30be816a3d895d26d6906acc9e9319c21f561e [file] [log] [blame]
Bharat saraswal4bf8b152016-02-25 02:26:43 +05301/*
Brian O'Connor5ab426f2016-04-09 01:19:45 -07002 * Copyright 2016-present Open Networking Laboratory
Bharat saraswal4bf8b152016-02-25 02:26:43 +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;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +053021import java.util.ArrayList;
Bharat saraswal4bf8b152016-02-25 02:26:43 +053022import java.util.List;
23
Vinod Kumar S38046502016-03-23 15:30:27 +053024import org.onosproject.yangutils.datamodel.YangNode;
25import org.onosproject.yangutils.translator.tojava.HasJavaFileInfo;
26import org.onosproject.yangutils.translator.tojava.HasTempJavaCodeFragmentFiles;
27import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
Vinod Kumar S38046502016-03-23 15:30:27 +053028
29import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_CLASS_MASK;
30import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_INTERFACE_MASK;
31import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_TYPEDEF_CLASS;
32import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.IMPL_CLASS_MASK;
33import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.INTERFACE_MASK;
34import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.ATTRIBUTES_MASK;
35import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.CONSTRUCTOR_IMPL_MASK;
36import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.EQUALS_IMPL_MASK;
37import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.GETTER_FOR_CLASS_MASK;
38import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.GETTER_FOR_INTERFACE_MASK;
39import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.HASH_CODE_IMPL_MASK;
40import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.SETTER_FOR_CLASS_MASK;
41import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.SETTER_FOR_INTERFACE_MASK;
42import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.TO_STRING_IMPL_MASK;
Bharat saraswale2d51d62016-03-23 19:40:35 +053043import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getDataFromTempFileHandle;
44import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.initiateJavaFileGeneration;
Vinod Kumar S38046502016-03-23 15:30:27 +053045import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCaptialCase;
Vinod Kumar S38046502016-03-23 15:30:27 +053046import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getConstructorStart;
Vinod Kumar S38046502016-03-23 15:30:27 +053047import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getEqualsMethodClose;
48import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getEqualsMethodOpen;
49import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getHashCodeMethodClose;
50import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getHashCodeMethodOpen;
51import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getToStringMethodClose;
52import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getToStringMethodOpen;
Bharat saraswale2d51d62016-03-23 19:40:35 +053053import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
54import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
55import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
56import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
57import static org.onosproject.yangutils.utils.UtilConstants.IMPL;
58import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
59import static org.onosproject.yangutils.utils.UtilConstants.PRIVATE;
60import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
61import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.insertDataIntoJavaFile;
Vinod Kumar S38046502016-03-23 15:30:27 +053062import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.partString;
Bharat saraswal4bf8b152016-02-25 02:26:43 +053063
Vinod Kumar Sc4216002016-03-03 19:55:30 +053064/**
Bharat saraswald9822e92016-04-05 15:13:44 +053065 * Representation of java file generator.
Vinod Kumar Sc4216002016-03-03 19:55:30 +053066 */
Bharat saraswal4bf8b152016-02-25 02:26:43 +053067public final class JavaFileGenerator {
68
Bharat saraswal4bf8b152016-02-25 02:26:43 +053069 /**
Bharat saraswald9822e92016-04-05 15:13:44 +053070 * Creates an instance of java file generator.
Bharat saraswal4bf8b152016-02-25 02:26:43 +053071 */
72 private JavaFileGenerator() {
73 }
74
75 /**
76 * Returns generated interface file for current node.
Vinod Kumar Sc4216002016-03-03 19:55:30 +053077 *
Bharat saraswal4bf8b152016-02-25 02:26:43 +053078 * @param file file
Bharat saraswal4bf8b152016-02-25 02:26:43 +053079 * @param imports imports for the file
Vinod Kumar S38046502016-03-23 15:30:27 +053080 * @param curNode current YANG node
Bharat saraswal2f11f652016-03-25 18:19:46 +053081 * @param isAttrPresent if any attribute is present or not
Bharat saraswal4bf8b152016-02-25 02:26:43 +053082 * @return interface file
Vinod Kumar Sc4216002016-03-03 19:55:30 +053083 * @throws IOException when fails to write in file
Bharat saraswal4bf8b152016-02-25 02:26:43 +053084 */
Bharat saraswal2f11f652016-03-25 18:19:46 +053085 public static File generateInterfaceFile(File file, List<String> imports, YangNode curNode, boolean isAttrPresent)
86 throws IOException {
Vinod Kumar Sc4216002016-03-03 19:55:30 +053087
Vinod Kumar S38046502016-03-23 15:30:27 +053088 JavaFileInfo javaFileInfo = ((HasJavaFileInfo) curNode).getJavaFileInfo();
Bharat saraswal4bf8b152016-02-25 02:26:43 +053089
Vinod Kumar S38046502016-03-23 15:30:27 +053090 String className = getCaptialCase(javaFileInfo.getJavaName());
91 String path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
92
Bharat saraswale2d51d62016-03-23 19:40:35 +053093 initiateJavaFileGeneration(file, className, INTERFACE_MASK, imports, path);
Bharat saraswal2f11f652016-03-25 18:19:46 +053094 if (isAttrPresent) {
Bharat saraswale2d51d62016-03-23 19:40:35 +053095 /**
Bharat saraswal2f11f652016-03-25 18:19:46 +053096 * Add getter methods to interface file.
Bharat saraswale2d51d62016-03-23 19:40:35 +053097 */
Bharat saraswal2f11f652016-03-25 18:19:46 +053098 try {
99 /**
100 * Getter methods.
101 */
102 insertDataIntoJavaFile(file, getDataFromTempFileHandle(GETTER_FOR_INTERFACE_MASK, curNode));
103 } catch (IOException e) {
104 throw new IOException("No data found in temporary java code fragment files for " + className
105 + " while interface file generation");
106 }
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530107 }
108 return file;
109 }
110
111 /**
112 * Return generated builder interface file for current node.
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530113 *
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530114 * @param file file
Vinod Kumar S38046502016-03-23 15:30:27 +0530115 * @param curNode current YANG node
Bharat saraswal2f11f652016-03-25 18:19:46 +0530116 * @param isAttrPresent if any attribute is present or not
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530117 * @return builder interface file
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530118 * @throws IOException when fails to write in file
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530119 */
Bharat saraswal2f11f652016-03-25 18:19:46 +0530120 public static File generateBuilderInterfaceFile(File file, YangNode curNode, boolean isAttrPresent)
121 throws IOException {
Vinod Kumar S38046502016-03-23 15:30:27 +0530122
123 JavaFileInfo javaFileInfo = ((HasJavaFileInfo) curNode).getJavaFileInfo();
124
125 String className = getCaptialCase(javaFileInfo.getJavaName());
126 String path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
127
Bharat saraswale2d51d62016-03-23 19:40:35 +0530128 initiateJavaFileGeneration(file, className, BUILDER_INTERFACE_MASK, null, path);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530129 List<String> methods = new ArrayList<>();
Bharat saraswal2f11f652016-03-25 18:19:46 +0530130 if (isAttrPresent) {
131 try {
132 /**
133 * Getter methods.
134 */
135 methods.add(FOUR_SPACE_INDENTATION + getDataFromTempFileHandle(GETTER_FOR_INTERFACE_MASK, curNode));
136 /**
137 * Setter methods.
138 */
139 methods.add(NEW_LINE);
140 methods.add(FOUR_SPACE_INDENTATION + getDataFromTempFileHandle(SETTER_FOR_INTERFACE_MASK, curNode));
141 } catch (IOException e) {
142 throw new IOException("No data found in temporary java code fragment files for " + className
143 + " while builder interface file generation");
144 }
Bharat saraswal8f2a6c52016-03-09 18:34:56 +0530145 }
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530146 /**
147 * Add build method to builder interface file.
148 */
Bharat saraswale2d51d62016-03-23 19:40:35 +0530149 methods.add(
150 ((HasTempJavaCodeFragmentFiles) curNode).getTempJavaCodeFragmentFiles().addBuildMethodForInterface());
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530151
152 /**
153 * Add getters and setters in builder interface.
154 */
155 for (String method : methods) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530156 insertDataIntoJavaFile(file, method);
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530157 }
158
Bharat saraswale2d51d62016-03-23 19:40:35 +0530159 insertDataIntoJavaFile(file, CLOSE_CURLY_BRACKET + NEW_LINE);
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530160 return file;
161 }
162
163 /**
164 * Returns generated builder class file for current node.
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530165 *
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530166 * @param file file
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530167 * @param imports imports for the file
Vinod Kumar S38046502016-03-23 15:30:27 +0530168 * @param curNode current YANG node
Bharat saraswal2f11f652016-03-25 18:19:46 +0530169 * @param isAttrPresent if any attribute is present or not
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530170 * @return builder class file
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530171 * @throws IOException when fails to write in file
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530172 */
Bharat saraswal2f11f652016-03-25 18:19:46 +0530173 public static File generateBuilderClassFile(File file, List<String> imports, YangNode curNode,
174 boolean isAttrPresent) throws IOException {
Vinod Kumar S38046502016-03-23 15:30:27 +0530175
176 JavaFileInfo javaFileInfo = ((HasJavaFileInfo) curNode).getJavaFileInfo();
177
178 String className = getCaptialCase(javaFileInfo.getJavaName());
179 String path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
180
Bharat saraswale2d51d62016-03-23 19:40:35 +0530181 initiateJavaFileGeneration(file, className, BUILDER_CLASS_MASK, imports, path);
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530182
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530183 List<String> methods = new ArrayList<>();
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530184
Bharat saraswal2f11f652016-03-25 18:19:46 +0530185 if (isAttrPresent) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530186 /**
Bharat saraswal2f11f652016-03-25 18:19:46 +0530187 * Add attribute strings.
Bharat saraswale2d51d62016-03-23 19:40:35 +0530188 */
Bharat saraswal2f11f652016-03-25 18:19:46 +0530189 try {
190 insertDataIntoJavaFile(file,
191 NEW_LINE + FOUR_SPACE_INDENTATION + getDataFromTempFileHandle(ATTRIBUTES_MASK, curNode));
192 } catch (IOException e) {
193 throw new IOException("No data found in temporary java code fragment files for " + className
194 + " while builder class file generation");
195 }
Vinod Kumar S38046502016-03-23 15:30:27 +0530196
Bharat saraswal2f11f652016-03-25 18:19:46 +0530197 try {
198 /**
199 * Getter methods.
200 */
201 methods.add(getDataFromTempFileHandle(GETTER_FOR_CLASS_MASK, curNode));
202 /**
203 * Setter methods.
204 */
205 methods.add(getDataFromTempFileHandle(SETTER_FOR_CLASS_MASK, curNode) + NEW_LINE);
206 } catch (IOException e) {
207 throw new IOException("No data found in temporary java code fragment files for " + className
208 + " while builder class file generation");
209 }
210 } else {
211 insertDataIntoJavaFile(file, NEW_LINE);
212 }
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530213 /**
214 * Add default constructor and build method impl.
215 */
Bharat saraswale2d51d62016-03-23 19:40:35 +0530216 methods.add(((HasTempJavaCodeFragmentFiles) curNode).getTempJavaCodeFragmentFiles().addBuildMethodImpl());
217 methods.add(((HasTempJavaCodeFragmentFiles) curNode).getTempJavaCodeFragmentFiles()
218 .addDefaultConstructor(PUBLIC, BUILDER));
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530219
220 /**
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530221 * Add methods in builder class.
222 */
223 for (String method : methods) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530224 insertDataIntoJavaFile(file, method);
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530225 }
226 return file;
227 }
228
229 /**
230 * Returns generated impl class file for current node.
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530231 *
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530232 * @param file file
Vinod Kumar S38046502016-03-23 15:30:27 +0530233 * @param curNode current YANG node
Bharat saraswal2f11f652016-03-25 18:19:46 +0530234 * @param isAttrPresent if any attribute is present or not
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530235 * @return impl class file
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530236 * @throws IOException when fails to write in file
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530237 */
Bharat saraswal2f11f652016-03-25 18:19:46 +0530238 public static File generateImplClassFile(File file, YangNode curNode, boolean isAttrPresent)
Vinod Kumar S38046502016-03-23 15:30:27 +0530239 throws IOException {
240
241 JavaFileInfo javaFileInfo = ((HasJavaFileInfo) curNode).getJavaFileInfo();
242
243 String className = getCaptialCase(javaFileInfo.getJavaName());
244 String path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
245
Bharat saraswale2d51d62016-03-23 19:40:35 +0530246 initiateJavaFileGeneration(file, className, IMPL_CLASS_MASK, null, path);
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530247
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530248 List<String> methods = new ArrayList<>();
Bharat saraswal2f11f652016-03-25 18:19:46 +0530249 if (isAttrPresent) {
250 /**
251 * Add attribute strings.
252 */
253 try {
254 insertDataIntoJavaFile(file,
255 NEW_LINE + FOUR_SPACE_INDENTATION + getDataFromTempFileHandle(ATTRIBUTES_MASK, curNode));
256 } catch (IOException e) {
257 throw new IOException("No data found in temporary java code fragment files for " + className
258 + " while impl class file generation");
259 }
Bharat saraswal8f2a6c52016-03-09 18:34:56 +0530260
Bharat saraswal2f11f652016-03-25 18:19:46 +0530261 insertDataIntoJavaFile(file, NEW_LINE);
262 try {
263 /**
264 * Getter methods.
265 */
266 methods.add(getDataFromTempFileHandle(GETTER_FOR_CLASS_MASK, curNode));
267
268 /**
269 * Hash code method.
270 */
271 methods.add(getHashCodeMethodClose(getHashCodeMethodOpen() + partString(
272 getDataFromTempFileHandle(HASH_CODE_IMPL_MASK, curNode).replace(NEW_LINE, EMPTY_STRING))));
273 /**
274 * Equals method.
275 */
276 methods.add(getEqualsMethodClose(
277 getEqualsMethodOpen(className + IMPL) + getDataFromTempFileHandle(EQUALS_IMPL_MASK, curNode)));
278 /**
279 * To string method.
280 */
281 methods.add(getToStringMethodOpen() + getDataFromTempFileHandle(TO_STRING_IMPL_MASK, curNode)
282 + getToStringMethodClose());
283
284 } catch (IOException e) {
285 throw new IOException("No data found in temporary java code fragment files for " + className
286 + " while impl class file generation");
287 }
288 } else {
289 insertDataIntoJavaFile(file, NEW_LINE);
Vinod Kumar S38046502016-03-23 15:30:27 +0530290 }
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530291 try {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530292 /**
293 * Constructor.
294 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530295 methods.add(getConstructorStart(className) + getDataFromTempFileHandle(CONSTRUCTOR_IMPL_MASK, curNode)
Bharat saraswale2d51d62016-03-23 19:40:35 +0530296 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET);
Vinod Kumar S38046502016-03-23 15:30:27 +0530297 } catch (IOException e) {
298 throw new IOException("No data found in temporary java code fragment files for " + className
299 + " while impl class file generation");
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530300 }
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530301 /**
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530302 * Add methods in impl class.
303 */
304 for (String method : methods) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530305 insertDataIntoJavaFile(file, FOUR_SPACE_INDENTATION + method + NEW_LINE);
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530306 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530307 insertDataIntoJavaFile(file, CLOSE_CURLY_BRACKET + NEW_LINE);
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530308
309 return file;
310 }
311
312 /**
Bharat saraswale2d51d62016-03-23 19:40:35 +0530313 * Generate class file for type def.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530314 *
Bharat saraswale2d51d62016-03-23 19:40:35 +0530315 * @param file generated file
Vinod Kumar S38046502016-03-23 15:30:27 +0530316 * @param curNode current YANG node
Bharat saraswale2d51d62016-03-23 19:40:35 +0530317 * @param imports imports for file
318 * @return type def class file
319 * @throws IOException when fails to generate class file
320 */
321 public static File generateTypeDefClassFile(File file, YangNode curNode, List<String> imports) throws IOException {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530322
Bharat saraswale2d51d62016-03-23 19:40:35 +0530323 JavaFileInfo javaFileInfo = ((HasJavaFileInfo) curNode).getJavaFileInfo();
Vinod Kumar S38046502016-03-23 15:30:27 +0530324
Bharat saraswale2d51d62016-03-23 19:40:35 +0530325 String className = getCaptialCase(javaFileInfo.getJavaName());
326 String path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530327
Bharat saraswale2d51d62016-03-23 19:40:35 +0530328 initiateJavaFileGeneration(file, className, GENERATE_TYPEDEF_CLASS, imports, path);
Vinod Kumar S38046502016-03-23 15:30:27 +0530329
Bharat saraswale2d51d62016-03-23 19:40:35 +0530330 List<String> methods = new ArrayList<>();
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530331
Bharat saraswale2d51d62016-03-23 19:40:35 +0530332 /**
333 * Add attribute strings.
Vinod Kumar S38046502016-03-23 15:30:27 +0530334 */
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530335 try {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530336 insertDataIntoJavaFile(file,
337 NEW_LINE + FOUR_SPACE_INDENTATION + getDataFromTempFileHandle(ATTRIBUTES_MASK, curNode));
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530338 } catch (IOException e) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530339 throw new IOException("No data found in temporary java code fragment files for " + className
340 + " while type def class file generation");
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530341 }
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530342
Bharat saraswale2d51d62016-03-23 19:40:35 +0530343 /**
344 * Default constructor.
345 */
346 methods.add(((HasTempJavaCodeFragmentFiles) curNode).getTempJavaCodeFragmentFiles()
347 .addDefaultConstructor(PRIVATE, EMPTY_STRING));
Vinod Kumar S38046502016-03-23 15:30:27 +0530348
Bharat saraswale2d51d62016-03-23 19:40:35 +0530349 /**
350 * Constructor.
351 */
352 methods.add(((HasTempJavaCodeFragmentFiles) curNode).getTempJavaCodeFragmentFiles()
353 .addTypeDefConstructor());
354
355 /**
356 * Of method.
357 */
358 methods.add(((HasTempJavaCodeFragmentFiles) curNode).getTempJavaCodeFragmentFiles().addOfMethod());
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530359 try {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530360
361 /**
362 * Getter method.
363 */
364 methods.add(getDataFromTempFileHandle(GETTER_FOR_CLASS_MASK, curNode));
365
366 /**
367 * Setter method.
368 */
369 methods.add(((HasTempJavaCodeFragmentFiles) curNode).getTempJavaCodeFragmentFiles().addTypeDefsSetter());
370
371 /**
372 * Hash code method.
373 */
374 methods.add(getHashCodeMethodClose(getHashCodeMethodOpen() + partString(
375 getDataFromTempFileHandle(HASH_CODE_IMPL_MASK, curNode).replace(NEW_LINE, EMPTY_STRING))));
376
377 /**
378 * Equals method.
379 */
380 methods.add(getEqualsMethodClose(getEqualsMethodOpen(className + EMPTY_STRING)
381 + getDataFromTempFileHandle(EQUALS_IMPL_MASK, curNode)));
382
383 /**
384 * To string method.
385 */
386 methods.add(getToStringMethodOpen() + getDataFromTempFileHandle(TO_STRING_IMPL_MASK, curNode)
387 + getToStringMethodClose());
388
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530389 } catch (IOException e) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530390 throw new IOException("No data found in temporary java code fragment files for " + className
391 + " while tyoe def class file generation");
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530392 }
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530393
Bharat saraswale2d51d62016-03-23 19:40:35 +0530394 for (String method : methods) {
395 insertDataIntoJavaFile(file, method);
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530396 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530397 insertDataIntoJavaFile(file, CLOSE_CURLY_BRACKET + NEW_LINE);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530398
Bharat saraswale2d51d62016-03-23 19:40:35 +0530399 return file;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530400 }
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530401}