blob: 299f5ac2ca8db730c6aa902d05b7b6660453d1a7 [file] [log] [blame]
Bharat saraswal4bf8b152016-02-25 02:26:43 +05301/*
2 * Copyright 2016 Open Networking Laboratory
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
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/**
65 * Generates java file.
66 */
Bharat saraswal4bf8b152016-02-25 02:26:43 +053067public final class JavaFileGenerator {
68
Bharat saraswal4bf8b152016-02-25 02:26:43 +053069 /**
70 * Default constructor.
71 */
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 saraswal4bf8b152016-02-25 02:26:43 +053081 * @return interface file
Vinod Kumar Sc4216002016-03-03 19:55:30 +053082 * @throws IOException when fails to write in file
Bharat saraswal4bf8b152016-02-25 02:26:43 +053083 */
Vinod Kumar S38046502016-03-23 15:30:27 +053084 public static File generateInterfaceFile(File file, List<String> imports, YangNode curNode) throws IOException {
Vinod Kumar Sc4216002016-03-03 19:55:30 +053085
Vinod Kumar S38046502016-03-23 15:30:27 +053086 JavaFileInfo javaFileInfo = ((HasJavaFileInfo) curNode).getJavaFileInfo();
Bharat saraswal4bf8b152016-02-25 02:26:43 +053087
Vinod Kumar S38046502016-03-23 15:30:27 +053088 String className = getCaptialCase(javaFileInfo.getJavaName());
89 String path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
90
Bharat saraswale2d51d62016-03-23 19:40:35 +053091 initiateJavaFileGeneration(file, className, INTERFACE_MASK, imports, path);
Vinod Kumar S38046502016-03-23 15:30:27 +053092
93 /**
94 * Add getter methods to interface file.
95 */
96 try {
Bharat saraswale2d51d62016-03-23 19:40:35 +053097 /**
98 * Getter methods.
99 */
100 insertDataIntoJavaFile(file, getDataFromTempFileHandle(GETTER_FOR_INTERFACE_MASK, curNode));
Vinod Kumar S38046502016-03-23 15:30:27 +0530101 } catch (IOException e) {
102 throw new IOException("No data found in temporary java code fragment files for " + className
103 + " while interface file generation");
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530104 }
105 return file;
106 }
107
108 /**
109 * Return generated builder interface file for current node.
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530110 *
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530111 * @param file file
Vinod Kumar S38046502016-03-23 15:30:27 +0530112 * @param curNode current YANG node
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530113 * @return builder interface file
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530114 * @throws IOException when fails to write in file
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530115 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530116 public static File generateBuilderInterfaceFile(File file, YangNode curNode) throws IOException {
117
118 JavaFileInfo javaFileInfo = ((HasJavaFileInfo) curNode).getJavaFileInfo();
119
120 String className = getCaptialCase(javaFileInfo.getJavaName());
121 String path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
122
Bharat saraswale2d51d62016-03-23 19:40:35 +0530123 initiateJavaFileGeneration(file, className, BUILDER_INTERFACE_MASK, null, path);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530124 List<String> methods = new ArrayList<>();
125
Vinod Kumar S38046502016-03-23 15:30:27 +0530126 try {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530127 /**
128 * Getter methods.
129 */
130 methods.add(FOUR_SPACE_INDENTATION + getDataFromTempFileHandle(GETTER_FOR_INTERFACE_MASK, curNode));
131 /**
132 * Setter methods.
133 */
134 methods.add(NEW_LINE);
135 methods.add(FOUR_SPACE_INDENTATION + getDataFromTempFileHandle(SETTER_FOR_INTERFACE_MASK, curNode));
Vinod Kumar S38046502016-03-23 15:30:27 +0530136 } catch (IOException e) {
137 throw new IOException("No data found in temporary java code fragment files for " + className
138 + " while builder interface file generation");
Bharat saraswal8f2a6c52016-03-09 18:34:56 +0530139 }
Vinod Kumar S38046502016-03-23 15:30:27 +0530140
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530141 /**
142 * Add build method to builder interface file.
143 */
Bharat saraswale2d51d62016-03-23 19:40:35 +0530144 methods.add(
145 ((HasTempJavaCodeFragmentFiles) curNode).getTempJavaCodeFragmentFiles().addBuildMethodForInterface());
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530146
147 /**
148 * Add getters and setters in builder interface.
149 */
150 for (String method : methods) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530151 insertDataIntoJavaFile(file, method);
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530152 }
153
Bharat saraswale2d51d62016-03-23 19:40:35 +0530154 insertDataIntoJavaFile(file, CLOSE_CURLY_BRACKET + NEW_LINE);
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530155 return file;
156 }
157
158 /**
159 * Returns generated builder class file for current node.
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530160 *
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530161 * @param file file
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530162 * @param imports imports for the file
Vinod Kumar S38046502016-03-23 15:30:27 +0530163 * @param curNode current YANG node
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530164 * @return builder class file
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530165 * @throws IOException when fails to write in file
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530166 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530167 public static File generateBuilderClassFile(File file, List<String> imports, YangNode curNode) throws IOException {
168
169 JavaFileInfo javaFileInfo = ((HasJavaFileInfo) curNode).getJavaFileInfo();
170
171 String className = getCaptialCase(javaFileInfo.getJavaName());
172 String path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
173
Bharat saraswale2d51d62016-03-23 19:40:35 +0530174 initiateJavaFileGeneration(file, className, BUILDER_CLASS_MASK, imports, path);
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530175
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530176 List<String> methods = new ArrayList<>();
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530177
Vinod Kumar S38046502016-03-23 15:30:27 +0530178 /**
179 * Add attribute strings.
180 */
181 try {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530182 insertDataIntoJavaFile(file,
183 NEW_LINE + FOUR_SPACE_INDENTATION + getDataFromTempFileHandle(ATTRIBUTES_MASK, curNode));
Vinod Kumar S38046502016-03-23 15:30:27 +0530184 } catch (IOException e) {
185 throw new IOException("No data found in temporary java code fragment files for " + className
186 + " while builder class file generation");
Bharat saraswal8f2a6c52016-03-09 18:34:56 +0530187 }
Vinod Kumar S38046502016-03-23 15:30:27 +0530188
189 try {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530190 /**
191 * Getter methods.
192 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530193 methods.add(getDataFromTempFileHandle(GETTER_FOR_CLASS_MASK, curNode));
Bharat saraswale2d51d62016-03-23 19:40:35 +0530194 /**
195 * Setter methods.
196 */
197 methods.add(getDataFromTempFileHandle(SETTER_FOR_CLASS_MASK, curNode) + NEW_LINE);
Vinod Kumar S38046502016-03-23 15:30:27 +0530198 } catch (IOException e) {
199 throw new IOException("No data found in temporary java code fragment files for " + className
200 + " while builder class file generation");
201 }
202
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530203 /**
204 * Add default constructor and build method impl.
205 */
Bharat saraswale2d51d62016-03-23 19:40:35 +0530206 methods.add(((HasTempJavaCodeFragmentFiles) curNode).getTempJavaCodeFragmentFiles().addBuildMethodImpl());
207 methods.add(((HasTempJavaCodeFragmentFiles) curNode).getTempJavaCodeFragmentFiles()
208 .addDefaultConstructor(PUBLIC, BUILDER));
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530209
210 /**
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530211 * Add methods in builder class.
212 */
213 for (String method : methods) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530214 insertDataIntoJavaFile(file, method);
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530215 }
216 return file;
217 }
218
219 /**
220 * Returns generated impl class file for current node.
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530221 *
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530222 * @param file file
Vinod Kumar S38046502016-03-23 15:30:27 +0530223 * @param curNode current YANG node
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530224 * @return impl class file
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530225 * @throws IOException when fails to write in file
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530226 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530227 public static File generateImplClassFile(File file, YangNode curNode)
228 throws IOException {
229
230 JavaFileInfo javaFileInfo = ((HasJavaFileInfo) curNode).getJavaFileInfo();
231
232 String className = getCaptialCase(javaFileInfo.getJavaName());
233 String path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
234
Bharat saraswale2d51d62016-03-23 19:40:35 +0530235 initiateJavaFileGeneration(file, className, IMPL_CLASS_MASK, null, path);
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530236
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530237 List<String> methods = new ArrayList<>();
Bharat saraswal8f2a6c52016-03-09 18:34:56 +0530238
Vinod Kumar S38046502016-03-23 15:30:27 +0530239 /**
240 * Add attribute strings.
241 */
242 try {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530243 insertDataIntoJavaFile(file,
244 NEW_LINE + FOUR_SPACE_INDENTATION + getDataFromTempFileHandle(ATTRIBUTES_MASK, curNode));
Vinod Kumar S38046502016-03-23 15:30:27 +0530245 } catch (IOException e) {
246 throw new IOException("No data found in temporary java code fragment files for " + className
247 + " while impl class file generation");
248 }
Bharat saraswal8f2a6c52016-03-09 18:34:56 +0530249
Bharat saraswale2d51d62016-03-23 19:40:35 +0530250 insertDataIntoJavaFile(file, NEW_LINE);
Vinod Kumar S38046502016-03-23 15:30:27 +0530251 try {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530252 /**
253 * Getter methods.
254 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530255 methods.add(getDataFromTempFileHandle(GETTER_FOR_CLASS_MASK, curNode));
Bharat saraswale2d51d62016-03-23 19:40:35 +0530256 /**
257 * Hash code method.
258 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530259 methods.add(getHashCodeMethodClose(getHashCodeMethodOpen() + partString(
Bharat saraswale2d51d62016-03-23 19:40:35 +0530260 getDataFromTempFileHandle(HASH_CODE_IMPL_MASK, curNode).replace(NEW_LINE, EMPTY_STRING))));
261 /**
262 * Equals method.
263 */
264 methods.add(getEqualsMethodClose(
265 getEqualsMethodOpen(className + IMPL) + getDataFromTempFileHandle(EQUALS_IMPL_MASK, curNode)));
266 /**
267 * To string method.
268 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530269 methods.add(getToStringMethodOpen() + getDataFromTempFileHandle(TO_STRING_IMPL_MASK, curNode)
270 + getToStringMethodClose());
Bharat saraswal8f2a6c52016-03-09 18:34:56 +0530271
Vinod Kumar S38046502016-03-23 15:30:27 +0530272 } catch (IOException e) {
273 throw new IOException("No data found in temporary java code fragment files for " + className
274 + " while impl class file generation");
Bharat saraswal8f2a6c52016-03-09 18:34:56 +0530275 }
276
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530277 try {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530278 /**
279 * Constructor.
280 */
Vinod Kumar S38046502016-03-23 15:30:27 +0530281 methods.add(getConstructorStart(className) + getDataFromTempFileHandle(CONSTRUCTOR_IMPL_MASK, curNode)
Bharat saraswale2d51d62016-03-23 19:40:35 +0530282 + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET);
Vinod Kumar S38046502016-03-23 15:30:27 +0530283 } catch (IOException e) {
284 throw new IOException("No data found in temporary java code fragment files for " + className
285 + " while impl class file generation");
Vinod Kumar Sc4216002016-03-03 19:55:30 +0530286 }
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530287 /**
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530288 * Add methods in impl class.
289 */
290 for (String method : methods) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530291 insertDataIntoJavaFile(file, FOUR_SPACE_INDENTATION + method + NEW_LINE);
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530292 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530293 insertDataIntoJavaFile(file, CLOSE_CURLY_BRACKET + NEW_LINE);
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530294
295 return file;
296 }
297
298 /**
Bharat saraswale2d51d62016-03-23 19:40:35 +0530299 * Generate class file for type def.
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530300 *
Bharat saraswale2d51d62016-03-23 19:40:35 +0530301 * @param file generated file
Vinod Kumar S38046502016-03-23 15:30:27 +0530302 * @param curNode current YANG node
Bharat saraswale2d51d62016-03-23 19:40:35 +0530303 * @param imports imports for file
304 * @return type def class file
305 * @throws IOException when fails to generate class file
306 */
307 public static File generateTypeDefClassFile(File file, YangNode curNode, List<String> imports) throws IOException {
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530308
Bharat saraswale2d51d62016-03-23 19:40:35 +0530309 JavaFileInfo javaFileInfo = ((HasJavaFileInfo) curNode).getJavaFileInfo();
Vinod Kumar S38046502016-03-23 15:30:27 +0530310
Bharat saraswale2d51d62016-03-23 19:40:35 +0530311 String className = getCaptialCase(javaFileInfo.getJavaName());
312 String path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530313
Bharat saraswale2d51d62016-03-23 19:40:35 +0530314 initiateJavaFileGeneration(file, className, GENERATE_TYPEDEF_CLASS, imports, path);
Vinod Kumar S38046502016-03-23 15:30:27 +0530315
Bharat saraswale2d51d62016-03-23 19:40:35 +0530316 List<String> methods = new ArrayList<>();
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530317
Bharat saraswale2d51d62016-03-23 19:40:35 +0530318 /**
319 * Add attribute strings.
Vinod Kumar S38046502016-03-23 15:30:27 +0530320 */
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530321 try {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530322 insertDataIntoJavaFile(file,
323 NEW_LINE + FOUR_SPACE_INDENTATION + getDataFromTempFileHandle(ATTRIBUTES_MASK, curNode));
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530324 } catch (IOException e) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530325 throw new IOException("No data found in temporary java code fragment files for " + className
326 + " while type def class file generation");
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530327 }
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530328
Bharat saraswale2d51d62016-03-23 19:40:35 +0530329 /**
330 * Default constructor.
331 */
332 methods.add(((HasTempJavaCodeFragmentFiles) curNode).getTempJavaCodeFragmentFiles()
333 .addDefaultConstructor(PRIVATE, EMPTY_STRING));
Vinod Kumar S38046502016-03-23 15:30:27 +0530334
Bharat saraswale2d51d62016-03-23 19:40:35 +0530335 /**
336 * Constructor.
337 */
338 methods.add(((HasTempJavaCodeFragmentFiles) curNode).getTempJavaCodeFragmentFiles()
339 .addTypeDefConstructor());
340
341 /**
342 * Of method.
343 */
344 methods.add(((HasTempJavaCodeFragmentFiles) curNode).getTempJavaCodeFragmentFiles().addOfMethod());
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530345 try {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530346
347 /**
348 * Getter method.
349 */
350 methods.add(getDataFromTempFileHandle(GETTER_FOR_CLASS_MASK, curNode));
351
352 /**
353 * Setter method.
354 */
355 methods.add(((HasTempJavaCodeFragmentFiles) curNode).getTempJavaCodeFragmentFiles().addTypeDefsSetter());
356
357 /**
358 * Hash code method.
359 */
360 methods.add(getHashCodeMethodClose(getHashCodeMethodOpen() + partString(
361 getDataFromTempFileHandle(HASH_CODE_IMPL_MASK, curNode).replace(NEW_LINE, EMPTY_STRING))));
362
363 /**
364 * Equals method.
365 */
366 methods.add(getEqualsMethodClose(getEqualsMethodOpen(className + EMPTY_STRING)
367 + getDataFromTempFileHandle(EQUALS_IMPL_MASK, curNode)));
368
369 /**
370 * To string method.
371 */
372 methods.add(getToStringMethodOpen() + getDataFromTempFileHandle(TO_STRING_IMPL_MASK, curNode)
373 + getToStringMethodClose());
374
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530375 } catch (IOException e) {
Bharat saraswale2d51d62016-03-23 19:40:35 +0530376 throw new IOException("No data found in temporary java code fragment files for " + className
377 + " while tyoe def class file generation");
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530378 }
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530379
Bharat saraswale2d51d62016-03-23 19:40:35 +0530380 for (String method : methods) {
381 insertDataIntoJavaFile(file, method);
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530382 }
Bharat saraswale2d51d62016-03-23 19:40:35 +0530383 insertDataIntoJavaFile(file, CLOSE_CURLY_BRACKET + NEW_LINE);
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530384
Bharat saraswale2d51d62016-03-23 19:40:35 +0530385 return file;
Bharat saraswal2f00b4b2016-03-04 20:08:09 +0530386 }
Bharat saraswal4bf8b152016-02-25 02:26:43 +0530387}