blob: 6235b52bb893a36fa3726d649f7f83b4c069ece6 [file] [log] [blame]
Bharat saraswal039f59c2016-07-14 21:57:13 +05301/*
2 * Copyright 2016-present 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;
18
19import java.io.File;
20import java.io.IOException;
21import java.util.ArrayList;
22import java.util.List;
Bharat saraswal8beac342016-08-04 02:00:03 +053023
Bharat saraswal039f59c2016-07-14 21:57:13 +053024import org.onosproject.yangutils.datamodel.YangNode;
janani bb3be1332016-08-03 16:40:01 +053025import org.onosproject.yangutils.translator.tojava.utils.JavaExtendsListHolder;
Bharat saraswal748fc3c2016-09-06 16:38:20 +053026import org.onosproject.yangutils.utils.io.YangPluginConfig;
Bharat saraswal039f59c2016-07-14 21:57:13 +053027
28import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_SUBJECT_CLASS;
29import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.EVENT_ENUM_MASK;
30import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.EVENT_METHOD_MASK;
31import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.EVENT_SUBJECT_ATTRIBUTE_MASK;
32import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.EVENT_SUBJECT_GETTER_MASK;
33import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.EVENT_SUBJECT_SETTER_MASK;
34import static org.onosproject.yangutils.translator.tojava.JavaAttributeInfo.getAttributeInfoForTheData;
Shankara-Huaweib7564772016-08-02 18:13:13 +053035import static org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator.getQualifiedTypeInfoOfCurNode;
Bharat saraswal039f59c2016-07-14 21:57:13 +053036import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateEventFile;
37import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateEventListenerFile;
38import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateEventSubjectFile;
39import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getFileObject;
40import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getEnumJavaAttribute;
41import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getGetterForClass;
42import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getSetterForClass;
43import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
Bharat saraswal748fc3c2016-09-06 16:38:20 +053044import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
Bharat saraswal039f59c2016-07-14 21:57:13 +053045import static org.onosproject.yangutils.utils.UtilConstants.EVENT_STRING;
46import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
47import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
48import static org.onosproject.yangutils.utils.UtilConstants.SLASH;
Bharat saraswal64e7e232016-07-14 23:33:55 +053049import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.closeFile;
Bharat saraswal039f59c2016-07-14 21:57:13 +053050import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.GETTER_METHOD;
51import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.MANAGER_SETTER_METHOD;
Bharat saraswal748fc3c2016-09-06 16:38:20 +053052import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.enumJavaDocForInnerClass;
Bharat saraswal039f59c2016-07-14 21:57:13 +053053import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
54import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getAbsolutePackagePath;
55import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
56import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
57import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getSmallCase;
58
59/**
60 * Represent temporary java fragments for event files.
61 */
62public class TempJavaEventFragmentFiles
63 extends TempJavaFragmentFiles {
64 /**
65 * File name for generated class file for special type like union, typedef suffix.
66 */
Bharat saraswal64e7e232016-07-14 23:33:55 +053067 private static final String EVENT_SUBJECT_NAME_SUFFIX = "EventSubject";
Bharat saraswal039f59c2016-07-14 21:57:13 +053068
69 /**
70 * File name for event enum temp file.
71 */
Bharat saraswal039f59c2016-07-14 21:57:13 +053072 private static final String EVENT_ENUM_FILE_NAME = "EventEnum";
73
74 /**
75 * File name for event method temp file.
76 */
77 private static final String EVENT_METHOD_FILE_NAME = "EventMethod";
78
79 /**
80 * File name for event subject attribute temp file.
81 */
82 private static final String EVENT_SUBJECT_ATTRIBUTE_FILE_NAME = "EventSubjectAttribute";
83
84 /**
85 * File name for event subject getter temp file.
86 */
87 private static final String EVENT_SUBJECT_GETTER_FILE_NAME = "EventSubjectGetter";
88
89 /**
90 * File name for event subject setter temp file.
91 */
92 private static final String EVENT_SUBJECT_SETTER_FILE_NAME = "EventSubjectSetter";
93
94 /**
95 * File name for generated class file for special type like union, typedef suffix.
96 */
97 private static final String EVENT_FILE_NAME_SUFFIX = "Event";
98
99 /**
100 * File name for generated class file for special type like union, typedef suffix.
101 */
Bharat saraswalaab24b92016-08-02 18:43:16 +0530102 private static final String EVENT_LISTENER_FILE_NAME_SUFFIX = "EventListener";
Bharat saraswal039f59c2016-07-14 21:57:13 +0530103
104 private static final String JAVA_FILE_EXTENSION = ".java";
105
106 /**
107 * Java file handle for event subject file.
108 */
109 private File eventSubjectJavaFileHandle;
110
111 /**
112 * Java file handle for event listener file.
113 */
114 private File eventListenerJavaFileHandle;
115
116 /**
117 * Java file handle for event file.
118 */
119 private File eventJavaFileHandle;
120
121 /**
122 * Java file handle for event enum impl file.
123 */
124 private File eventEnumTempFileHandle;
125
126 /**
127 * Java file handle for event method impl file.
128 */
129 private File eventMethodTempFileHandle;
130
131 /**
132 * Java file handle for event subject attribute file.
133 */
134 private File eventSubjectAttributeTempFileHandle;
135
136 /**
137 * Java file handle for event subject getter impl file.
138 */
139 private File eventSubjectGetterTempFileHandle;
140
141 /**
142 * Java file handle for event subject setter impl file.
143 */
144 private File eventSubjectSetterTempFileHandle;
145
146 /**
147 * Creates an instance of temporary java code fragment.
148 *
149 * @param javaFileInfo generated file information
150 * @throws IOException when fails to create new file handle
151 */
Bharat saraswale50edca2016-08-05 01:58:25 +0530152 TempJavaEventFragmentFiles(JavaFileInfoTranslator javaFileInfo)
Bharat saraswal039f59c2016-07-14 21:57:13 +0530153 throws IOException {
154 setJavaExtendsListHolder(new JavaExtendsListHolder());
155 setJavaImportData(new JavaImportData());
156 setJavaFileInfo(javaFileInfo);
157 setAbsoluteDirPath(getAbsolutePackagePath(getJavaFileInfo().getBaseCodeGenPath(),
Bharat saraswal748fc3c2016-09-06 16:38:20 +0530158 getJavaFileInfo().getPackageFilePath()));
Bharat saraswal039f59c2016-07-14 21:57:13 +0530159
160 addGeneratedTempFile(EVENT_ENUM_MASK);
161 addGeneratedTempFile(EVENT_METHOD_MASK);
162 addGeneratedTempFile(EVENT_SUBJECT_ATTRIBUTE_MASK);
163 addGeneratedTempFile(EVENT_SUBJECT_GETTER_MASK);
164 addGeneratedTempFile(EVENT_SUBJECT_SETTER_MASK);
165
166 setEventEnumTempFileHandle(getTemporaryFileHandle(EVENT_ENUM_FILE_NAME));
167 setEventMethodTempFileHandle(getTemporaryFileHandle(EVENT_METHOD_FILE_NAME));
168 setEventSubjectAttributeTempFileHandle(getTemporaryFileHandle(EVENT_SUBJECT_ATTRIBUTE_FILE_NAME));
169 setEventSubjectGetterTempFileHandle(getTemporaryFileHandle(EVENT_SUBJECT_GETTER_FILE_NAME));
170 setEventSubjectSetterTempFileHandle(getTemporaryFileHandle(EVENT_SUBJECT_SETTER_FILE_NAME));
171 }
172
173 /*Adds event method contents to event file.*/
174 private static String getEventFileContents(String eventClassname, String classname) {
175 return "\n" +
176 " /**\n" +
177 " * Creates " + classname + " event with type and subject.\n" +
178 " *\n" +
179 " * @param type event type\n" +
180 " * @param subject subject " + classname + "\n" +
181 " */\n" +
182 " public " + eventClassname + "(Type type, " + getCapitalCase(classname) + " subject) {\n" +
183 " super(type, subject);\n" +
184 " }\n" +
185 "\n" +
186 " /**\n" +
187 " * Creates " + classname + " event with type, subject and time.\n" +
188 " *\n" +
189 " * @param type event type\n" +
190 " * @param subject subject " + classname + "\n" +
191 " * @param time time of event\n" +
192 " */\n" +
193 " public " + eventClassname + "(Type type, " + getCapitalCase(classname)
194 + " subject, long time) {\n" +
195 " super(type, subject, time);\n" +
196 " }\n" +
197 "\n";
198 }
199
200 /**
201 * Returns event's java file handle.
202 *
203 * @return java file handle
204 */
205 private File getEventJavaFileHandle() {
206 return eventJavaFileHandle;
207 }
208
209 /**
210 * Sets event's java file handle.
211 *
212 * @param eventJavaFileHandle file handle for event
213 */
214 private void setEventJavaFileHandle(File eventJavaFileHandle) {
215 this.eventJavaFileHandle = eventJavaFileHandle;
216 }
217
218 /**
219 * Returns event listeners's java file handle.
220 *
221 * @return java file handle
222 */
223 private File getEventListenerJavaFileHandle() {
224 return eventListenerJavaFileHandle;
225 }
226
227 /**
228 * Sets event's java file handle.
229 *
230 * @param eventListenerJavaFileHandle file handle for event
231 */
232 private void setEventListenerJavaFileHandle(File eventListenerJavaFileHandle) {
233 this.eventListenerJavaFileHandle = eventListenerJavaFileHandle;
234 }
235
236 /**
237 * Returns event subject's java file handle.
238 *
239 * @return java file handle
240 */
241 private File getEventSubjectJavaFileHandle() {
242 return eventSubjectJavaFileHandle;
243 }
244
245 /**
246 * Sets event's subject java file handle.
247 *
248 * @param eventSubjectJavaFileHandle file handle for event's subject
249 */
250 private void setEventSubjectJavaFileHandle(File eventSubjectJavaFileHandle) {
251 this.eventSubjectJavaFileHandle = eventSubjectJavaFileHandle;
252 }
253
Bharat saraswal748fc3c2016-09-06 16:38:20 +0530254 public void generateJavaFile(int fileType, YangNode curNode)
255 throws IOException {
Bharat saraswal039f59c2016-07-14 21:57:13 +0530256 generateEventJavaFile(curNode);
257 generateEventListenerJavaFile(curNode);
258 generateEventSubjectJavaFile(curNode);
Bharat saraswal64e7e232016-07-14 23:33:55 +0530259
260 // Close all the file handles.
261 freeTemporaryResources(false);
Bharat saraswal039f59c2016-07-14 21:57:13 +0530262 }
263
264 /**
265 * Constructs java code exit.
266 *
267 * @param curNode current YANG node
268 * @throws IOException when fails to generate java files
269 */
Bharat saraswal64e7e232016-07-14 23:33:55 +0530270 private void generateEventJavaFile(YangNode curNode)
Bharat saraswal039f59c2016-07-14 21:57:13 +0530271 throws IOException {
272
273 List<String> imports = new ArrayList<>();
274
275 imports.add(getJavaImportData().getAbstractEventsImport());
276 String curNodeInfo = getCapitalCase(((JavaFileInfoContainer) curNode).getJavaFileInfo().getJavaName());
277 String nodeName = curNodeInfo + EVENT_STRING;
278
279 addEnumMethod(nodeName, curNodeInfo + EVENT_SUBJECT_NAME_SUFFIX);
280
Bharat saraswal64e7e232016-07-14 23:33:55 +0530281 //Creates event interface file.
Bharat saraswal039f59c2016-07-14 21:57:13 +0530282 setEventJavaFileHandle(getJavaFileHandle(curNode, curNodeInfo + EVENT_FILE_NAME_SUFFIX));
283 generateEventFile(getEventJavaFileHandle(), curNode, imports);
284
Bharat saraswal039f59c2016-07-14 21:57:13 +0530285 }
286
287 /**
288 * Constructs java code exit.
289 *
290 * @param curNode current YANG node
291 * @throws IOException when fails to generate java files
292 */
Bharat saraswal64e7e232016-07-14 23:33:55 +0530293 private void generateEventListenerJavaFile(YangNode curNode)
294 throws IOException {
295
296 List<String> imports = new ArrayList<>();
297
298 imports.add(getJavaImportData().getEventListenerImport());
299 String curNodeInfo = getCapitalCase(((JavaFileInfoContainer) curNode)
Bharat saraswal748fc3c2016-09-06 16:38:20 +0530300 .getJavaFileInfo().getJavaName());
Bharat saraswal64e7e232016-07-14 23:33:55 +0530301
302 // Creates event listener interface file.
303 setEventListenerJavaFileHandle(
304 getJavaFileHandle(curNode, curNodeInfo + EVENT_LISTENER_FILE_NAME_SUFFIX));
305 generateEventListenerFile(getEventListenerJavaFileHandle(), curNode, imports);
306
307 }
308
309 /**
310 * Constructs java code exit.
311 *
312 * @param curNode current YANG node
313 * @throws IOException when fails to generate java files
314 */
315 private void generateEventSubjectJavaFile(YangNode curNode)
Bharat saraswal039f59c2016-07-14 21:57:13 +0530316 throws IOException {
317
318 String curNodeInfo = getCapitalCase(((JavaFileInfoContainer) curNode)
Bharat saraswal748fc3c2016-09-06 16:38:20 +0530319 .getJavaFileInfo().getJavaName());
Bharat saraswal64e7e232016-07-14 23:33:55 +0530320
321 //Creates event interface file.
Bharat saraswal039f59c2016-07-14 21:57:13 +0530322 setEventSubjectJavaFileHandle(getJavaFileHandle(curNode, curNodeInfo +
Shankara-Huaweib7564772016-08-02 18:13:13 +0530323 EVENT_SUBJECT_NAME_SUFFIX));
Bharat saraswal039f59c2016-07-14 21:57:13 +0530324 generateEventSubjectFile(getEventSubjectJavaFileHandle(), curNode);
325
Bharat saraswal039f59c2016-07-14 21:57:13 +0530326 }
327
328 /**
329 * Returns event enum temp file.
330 *
331 * @return event enum temp file
332 */
333 public File getEventEnumTempFileHandle() {
334 return eventEnumTempFileHandle;
335 }
336
337 /**
338 * Sets event enum temp file.
339 *
340 * @param eventEnumTempFileHandle event enum temp file
341 */
Bharat saraswal64e7e232016-07-14 23:33:55 +0530342 private void setEventEnumTempFileHandle(File eventEnumTempFileHandle) {
Bharat saraswal039f59c2016-07-14 21:57:13 +0530343 this.eventEnumTempFileHandle = eventEnumTempFileHandle;
344 }
345
346 /**
347 * Returns event method temp file.
348 *
349 * @return event method temp file
350 */
351 public File getEventMethodTempFileHandle() {
352 return eventMethodTempFileHandle;
353 }
354
355 /**
356 * Sets event method temp file.
357 *
358 * @param eventMethodTempFileHandle event method temp file
359 */
Bharat saraswal64e7e232016-07-14 23:33:55 +0530360 private void setEventMethodTempFileHandle(File eventMethodTempFileHandle) {
Bharat saraswal039f59c2016-07-14 21:57:13 +0530361 this.eventMethodTempFileHandle = eventMethodTempFileHandle;
362 }
363
364 /**
365 * Returns event subject attribute temp file.
366 *
367 * @return event subject attribute temp file
368 */
369 public File getEventSubjectAttributeTempFileHandle() {
370 return eventSubjectAttributeTempFileHandle;
371 }
372
373 /**
374 * Sets event subject attribute temp file.
375 *
376 * @param eventSubjectAttributeTempFileHandle event subject attribute temp file
377 */
Bharat saraswal64e7e232016-07-14 23:33:55 +0530378 private void setEventSubjectAttributeTempFileHandle(File eventSubjectAttributeTempFileHandle) {
Bharat saraswal039f59c2016-07-14 21:57:13 +0530379 this.eventSubjectAttributeTempFileHandle = eventSubjectAttributeTempFileHandle;
380 }
381
382 /**
383 * Returns event subject getter temp file.
384 *
385 * @return event subject getter temp file
386 */
387 public File getEventSubjectGetterTempFileHandle() {
388 return eventSubjectGetterTempFileHandle;
389 }
390
391 /**
392 * Sets event subject getter temp file.
393 *
394 * @param eventSubjectGetterTempFileHandle event subject getter temp file
395 */
Bharat saraswal64e7e232016-07-14 23:33:55 +0530396 private void setEventSubjectGetterTempFileHandle(File eventSubjectGetterTempFileHandle) {
Bharat saraswal039f59c2016-07-14 21:57:13 +0530397 this.eventSubjectGetterTempFileHandle = eventSubjectGetterTempFileHandle;
398 }
399
400 /**
401 * Returns event subject setter temp file.
402 *
403 * @return event subject setter temp file
404 */
405 public File getEventSubjectSetterTempFileHandle() {
406 return eventSubjectSetterTempFileHandle;
407 }
408
409 /**
410 * Sets event subject setter temp file.
411 *
412 * @param eventSubjectSetterTempFileHandle event subject setter temp file
413 */
Bharat saraswal64e7e232016-07-14 23:33:55 +0530414 private void setEventSubjectSetterTempFileHandle(File eventSubjectSetterTempFileHandle) {
Bharat saraswal039f59c2016-07-14 21:57:13 +0530415 this.eventSubjectSetterTempFileHandle = eventSubjectSetterTempFileHandle;
416 }
417
418 /**
419 * Adds java snippet for events to event subject file.
420 *
421 * @param curNode current node
422 * @param pluginConfig plugin configurations
423 * @throws IOException when fails to do IO operations
424 */
Bharat saraswal64e7e232016-07-14 23:33:55 +0530425 void addJavaSnippetOfEvent(YangNode curNode, YangPluginConfig pluginConfig)
Bharat saraswal039f59c2016-07-14 21:57:13 +0530426 throws IOException {
427
428 String currentInfo = getCapitalCase(getCamelCase(curNode.getName(),
Bharat saraswal748fc3c2016-09-06 16:38:20 +0530429 pluginConfig.getConflictResolver()));
Bharat saraswal039f59c2016-07-14 21:57:13 +0530430 String notificationName = curNode.getName();
431
Shankara-Huaweib7564772016-08-02 18:13:13 +0530432 JavaQualifiedTypeInfoTranslator qualifiedTypeInfo = getQualifiedTypeInfoOfCurNode(curNode,
Bharat saraswal748fc3c2016-09-06 16:38:20 +0530433 getCapitalCase(currentInfo));
Bharat saraswal039f59c2016-07-14 21:57:13 +0530434
435 JavaAttributeInfo javaAttributeInfo = getAttributeInfoForTheData(qualifiedTypeInfo, getSmallCase(currentInfo),
Bharat saraswal748fc3c2016-09-06 16:38:20 +0530436 null, false, false);
Bharat saraswal039f59c2016-07-14 21:57:13 +0530437
438 /*Adds java info for event in respective temp files.*/
Bharat saraswal748fc3c2016-09-06 16:38:20 +0530439 addEventEnum(notificationName);
Bharat saraswal039f59c2016-07-14 21:57:13 +0530440 addEventSubjectAttribute(javaAttributeInfo, pluginConfig);
441 addEventSubjectGetter(javaAttributeInfo, pluginConfig);
442 addEventSubjectSetter(javaAttributeInfo, pluginConfig, currentInfo);
443 }
444
445 /*Adds event to enum temp file.*/
Bharat saraswal748fc3c2016-09-06 16:38:20 +0530446 private void addEventEnum(String notificationName)
Bharat saraswal039f59c2016-07-14 21:57:13 +0530447 throws IOException {
448 appendToFile(getEventEnumTempFileHandle(),
Bharat saraswal748fc3c2016-09-06 16:38:20 +0530449 enumJavaDocForInnerClass(notificationName) + EIGHT_SPACE_INDENTATION
450 + getEnumJavaAttribute(notificationName).toUpperCase() + COMMA + NEW_LINE);
Bharat saraswal039f59c2016-07-14 21:57:13 +0530451 }
452
453 /*Adds event method in event class*/
454 private void addEnumMethod(String eventClassname, String className)
455 throws IOException {
456 appendToFile(getEventMethodTempFileHandle(), getEventFileContents(eventClassname, className));
457 }
458
459 /*Adds events to event subject file.*/
460 private void addEventSubjectAttribute(JavaAttributeInfo attr, YangPluginConfig pluginConfig)
461 throws IOException {
462 appendToFile(getEventSubjectAttributeTempFileHandle(),
Bharat saraswal748fc3c2016-09-06 16:38:20 +0530463 FOUR_SPACE_INDENTATION + parseAttribute(attr, pluginConfig));
Bharat saraswal039f59c2016-07-14 21:57:13 +0530464 }
465
466 /*Adds getter method for event in event subject class.*/
467 private void addEventSubjectGetter(JavaAttributeInfo attr, YangPluginConfig pluginConfig)
468 throws IOException {
Vidyashree Ramab3670472016-08-06 15:49:56 +0530469 String appDataStructure = null;
470 if (attr.getCompilerAnnotation() != null) {
471 appDataStructure = attr.getCompilerAnnotation().getYangAppDataStructure().getDataStructure().name();
472 }
Bharat saraswal039f59c2016-07-14 21:57:13 +0530473 appendToFile(getEventSubjectGetterTempFileHandle(),
Bharat saraswal748fc3c2016-09-06 16:38:20 +0530474 getJavaDoc(GETTER_METHOD, getCapitalCase(attr.getAttributeName()), false, pluginConfig,
475 appDataStructure) + getGetterForClass(attr, GENERATE_EVENT_SUBJECT_CLASS) + NEW_LINE);
Bharat saraswal039f59c2016-07-14 21:57:13 +0530476 }
477
478 /*Adds setter method for event in event subject class.*/
479 private void addEventSubjectSetter(JavaAttributeInfo attr, YangPluginConfig pluginConfig, String className)
480 throws IOException {
Vidyashree Ramab3670472016-08-06 15:49:56 +0530481 String appDataStructure = null;
482 if (attr.getCompilerAnnotation() != null) {
483 appDataStructure = attr.getCompilerAnnotation().getYangAppDataStructure().getDataStructure().name();
484 }
Bharat saraswal039f59c2016-07-14 21:57:13 +0530485 appendToFile(getEventSubjectSetterTempFileHandle(),
Bharat saraswal748fc3c2016-09-06 16:38:20 +0530486 getJavaDoc(MANAGER_SETTER_METHOD, getCapitalCase(attr.getAttributeName()), false, pluginConfig,
487 appDataStructure) + getSetterForClass(attr, className, GENERATE_EVENT_SUBJECT_CLASS)
488 + NEW_LINE);
Bharat saraswal039f59c2016-07-14 21:57:13 +0530489 }
490
491 /**
492 * Returns a temporary file handle for the event's file type.
493 *
494 * @param name file name
495 * @return temporary file handle
496 * @throws IOException when fails to create new file handle
497 */
498 private File getJavaFileHandle(YangNode curNode, String name)
499 throws IOException {
500
Bharat saraswale50edca2016-08-05 01:58:25 +0530501 JavaFileInfoTranslator parentInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
Bharat saraswal039f59c2016-07-14 21:57:13 +0530502 return getFileObject(getDirPath(parentInfo), name, JAVA_FILE_EXTENSION,
Bharat saraswal748fc3c2016-09-06 16:38:20 +0530503 parentInfo);
Bharat saraswal039f59c2016-07-14 21:57:13 +0530504 }
505
506 /**
507 * Returns the directory path.
508 *
509 * @return directory path
510 */
Bharat saraswale50edca2016-08-05 01:58:25 +0530511 private String getDirPath(JavaFileInfoTranslator parentInfo) {
Bharat saraswal039f59c2016-07-14 21:57:13 +0530512 return (parentInfo.getPackageFilePath() + SLASH + parentInfo.getJavaName()).toLowerCase();
513 }
Bharat saraswal64e7e232016-07-14 23:33:55 +0530514
515 /**
516 * Removes all temporary file handles.
517 *
518 * @param isErrorOccurred flag to tell translator that error has occurred while file generation
519 * @throws IOException when failed to delete the temporary files
520 */
521 @Override
522 public void freeTemporaryResources(boolean isErrorOccurred)
523 throws IOException {
524
525 closeFile(getEventJavaFileHandle(), isErrorOccurred);
526 closeFile(getEventListenerJavaFileHandle(), isErrorOccurred);
527 closeFile(getEventSubjectJavaFileHandle(), isErrorOccurred);
528
529 closeFile(getEventEnumTempFileHandle(), true);
530 closeFile(getEventSubjectAttributeTempFileHandle(), true);
531 closeFile(getEventMethodTempFileHandle(), true);
532 closeFile(getEventSubjectGetterTempFileHandle(), true);
533 closeFile(getEventSubjectSetterTempFileHandle(), true);
534
535 super.freeTemporaryResources(isErrorOccurred);
536
537 }
Bharat saraswal039f59c2016-07-14 21:57:13 +0530538}