ST defect fixes and review comments fixes
Change-Id: Ib8c56a88c19cd9aa23918d0f9e37c89e74cb0d13
diff --git a/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java b/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
index ff275ae..0ae81f7 100644
--- a/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
+++ b/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
@@ -16,26 +16,28 @@
package org.onosproject.yangutils.translator.tojava.utils;
+import static org.onosproject.yangutils.translator.GeneratedFileType.BUILDER_CLASS_MASK;
+import static org.onosproject.yangutils.translator.GeneratedFileType.BUILDER_INTERFACE_MASK;
+import static org.onosproject.yangutils.translator.GeneratedFileType.GENERATE_TYPEDEF_CLASS;
+import static org.onosproject.yangutils.translator.GeneratedFileType.IMPL_CLASS_MASK;
+import static org.onosproject.yangutils.translator.GeneratedFileType.INTERFACE_MASK;
+import static org.slf4j.LoggerFactory.getLogger;
+
import java.io.File;
import java.io.IOException;
+import java.util.ArrayList;
import java.util.List;
+import org.apache.commons.io.FileUtils;
+import org.onosproject.yangutils.translator.CachedFileHandle;
import org.onosproject.yangutils.translator.tojava.AttributeInfo;
import org.onosproject.yangutils.utils.UtilConstants;
import org.onosproject.yangutils.utils.io.impl.CopyrightHeader;
import org.onosproject.yangutils.utils.io.impl.FileSystemUtil;
import org.onosproject.yangutils.utils.io.impl.JavaDocGen;
import org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType;
-import org.onosproject.yangutils.utils.io.impl.TempDataStore;
-import org.onosproject.yangutils.utils.io.impl.TempDataStore.TempDataStoreType;
import org.slf4j.Logger;
-import static org.onosproject.yangutils.translator.GeneratedFileType.BUILDER_CLASS_MASK;
-import static org.onosproject.yangutils.translator.GeneratedFileType.BUILDER_INTERFACE_MASK;
-import static org.onosproject.yangutils.translator.GeneratedFileType.IMPL_CLASS_MASK;
-import static org.onosproject.yangutils.translator.GeneratedFileType.INTERFACE_MASK;
-import static org.slf4j.LoggerFactory.getLogger;
-
/**
* Generates java file.
*/
@@ -55,10 +57,11 @@
* @param fileName file name
* @param filePath file package path
* @param extension file extension
+ * @param handle cached file handle
* @return file object
*/
- public static File getFileObject(String filePath, String fileName, String extension) {
- return new File(UtilConstants.YANG_GEN_DIR + filePath + File.separator + fileName + extension);
+ public static File getFileObject(String filePath, String fileName, String extension, CachedFileHandle handle) {
+ return new File(handle.getCodeGenFilePath() + filePath + File.separator + fileName + extension);
}
/**
@@ -69,17 +72,18 @@
* @param imports imports for the file
* @param attrList attribute info
* @param pkg generated file package
+ * @param handle cached file handle
* @return interface file
* @throws IOException when fails to write in file
*/
public static File generateInterfaceFile(File file, String className, List<String> imports,
- List<AttributeInfo> attrList, String pkg) throws IOException {
-
+ List<AttributeInfo> attrList, String pkg, CachedFileHandle handle) throws IOException {
+ String path = handle.getCodeGenFilePath() + pkg.replace(UtilConstants.PERIOD, UtilConstants.SLASH);
initiateFile(file, className, INTERFACE_MASK, imports, pkg);
- List<String> methods;
+ List<String> methods = new ArrayList<>();
try {
- methods = TempDataStore.getTempData(TempDataStoreType.GETTER_METHODS, className);
+ methods.add(handle.getTempData(TempDataStoreTypes.GETTER_METHODS, className, path));
} catch (ClassNotFoundException | IOException e) {
log.info("There is no attribute info of " + className + " YANG file in the temporary files.");
throw new IOException("Fail to read data from temp file.");
@@ -101,17 +105,19 @@
* @param className class name
* @param pkg generated file package
* @param attrList attribute info
+ * @param handle cached file handle
* @return builder interface file
* @throws IOException when fails to write in file
*/
public static File generateBuilderInterfaceFile(File file, String className, String pkg,
- List<AttributeInfo> attrList) throws IOException {
-
+ List<AttributeInfo> attrList, CachedFileHandle handle) throws IOException {
+ String path = handle.getCodeGenFilePath() + pkg.replace(UtilConstants.PERIOD, UtilConstants.SLASH);
initiateFile(file, className, BUILDER_INTERFACE_MASK, null, pkg);
- List<String> methods;
+ List<String> methods = new ArrayList<>();
+
try {
- methods = TempDataStore.getTempData(TempDataStoreType.BUILDER_INTERFACE_METHODS,
- className + UtilConstants.BUILDER + UtilConstants.INTERFACE);
+ methods.add(handle.getTempData(TempDataStoreTypes.GETTER_METHODS, className, path));
+ methods.add(handle.getTempData(TempDataStoreTypes.SETTER_METHODS, className, path));
} catch (ClassNotFoundException | IOException e) {
log.info("There is no attribute info of " + className + " YANG file in the temporary files.");
throw new IOException("Fail to read data from temp file.");
@@ -126,7 +132,7 @@
* Add getters and setters in builder interface.
*/
for (String method : methods) {
- appendMethod(file, UtilConstants.FOUR_SPACE_INDENTATION + method + UtilConstants.NEW_LINE);
+ appendMethod(file, UtilConstants.FOUR_SPACE_INDENTATION + method);
}
insert(file, UtilConstants.CLOSE_CURLY_BRACKET + UtilConstants.NEW_LINE);
@@ -141,20 +147,21 @@
* @param imports imports for the file
* @param pkg generated file package
* @param attrList attribute info
+ * @param handle cached file handle
* @return builder class file
* @throws IOException when fails to write in file
*/
public static File generateBuilderClassFile(File file, String className, List<String> imports, String pkg,
- List<AttributeInfo> attrList) throws IOException {
-
+ List<AttributeInfo> attrList, CachedFileHandle handle) throws IOException {
+ String path = handle.getCodeGenFilePath() + pkg.replace(UtilConstants.PERIOD, UtilConstants.SLASH);
initiateFile(file, className, BUILDER_CLASS_MASK, imports, pkg);
/**
* Add attribute strings.
*/
- List<String> attributes;
+ List<String> attributes = new ArrayList<>();
try {
- attributes = TempDataStore.getTempData(TempDataStoreType.ATTRIBUTE, className);
+ attributes.add(handle.getTempData(TempDataStoreTypes.ATTRIBUTE, className, path));
} catch (ClassNotFoundException | IOException e) {
log.info("There is no attribute info of " + className + " YANG file in the temporary files.");
throw new IOException("Fail to read data from temp file.");
@@ -165,11 +172,11 @@
for (String attribute : attributes) {
insert(file, UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION + attribute);
}
- insert(file, UtilConstants.NEW_LINE);
- List<String> methods;
+ List<String> methods = new ArrayList<>();
try {
- methods = TempDataStore.getTempData(TempDataStoreType.BUILDER_METHODS, className + UtilConstants.BUILDER);
+ methods.add(handle.getTempData(TempDataStoreTypes.GETTER_METHODS_IMPL, className, path));
+ methods.add(handle.getTempData(TempDataStoreTypes.SETTER_METHODS_IMPL, className, path));
} catch (ClassNotFoundException | IOException e) {
log.info("There is no attribute info of " + className + " YANG file in the temporary files.");
throw new IOException("Fail to read data from temp file.");
@@ -179,7 +186,8 @@
* Add default constructor and build method impl.
*/
methods.add(UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.JAVA_DOC_FIRST_LINE
- + MethodsGenerator.getDefaultConstructorString(BUILDER_CLASS_MASK, className));
+ + MethodsGenerator.getDefaultConstructorString(className + UtilConstants.BUILDER,
+ UtilConstants.PUBLIC));
methods.add(MethodsGenerator.getBuildString(className));
/**
@@ -198,17 +206,19 @@
* @param className class name
* @param pkg generated file package
* @param attrList attribute's info
+ * @param handle cached file handle
* @return impl class file
* @throws IOException when fails to write in file
*/
- public static File generateImplClassFile(File file, String className, String pkg, List<AttributeInfo> attrList)
- throws IOException {
+ public static File generateImplClassFile(File file, String className, String pkg, List<AttributeInfo> attrList,
+ CachedFileHandle handle)
+ throws IOException {
+ String path = handle.getCodeGenFilePath() + pkg.replace(UtilConstants.PERIOD, UtilConstants.SLASH);
+ initiateFile(file, className, IMPL_CLASS_MASK, null, path);
- initiateFile(file, className, IMPL_CLASS_MASK, null, pkg);
-
- List<String> attributes;
+ List<String> attributes = new ArrayList<>();
try {
- attributes = TempDataStore.getTempData(TempDataStoreType.ATTRIBUTE, className);
+ attributes.add(handle.getTempData(TempDataStoreTypes.ATTRIBUTE, className, path));
} catch (ClassNotFoundException | IOException e) {
log.info("There is no attribute info of " + className + " YANG file in the temporary files.");
throw new IOException("Fail to read data from temp file.");
@@ -220,24 +230,34 @@
for (String attribute : attributes) {
insert(file, UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION + attribute);
}
- insert(file, UtilConstants.NEW_LINE);
- List<String> methods;
+ List<String> methods = new ArrayList<>();
try {
- methods = TempDataStore.getTempData(TempDataStoreType.IMPL_METHODS, className + UtilConstants.IMPL);
+
+ methods.add(handle.getTempData(TempDataStoreTypes.GETTER_METHODS_IMPL, className, path));
+
+ methods.add(getConstructorString(className)
+ + handle.getTempData(TempDataStoreTypes.CONSTRUCTOR, className, path)
+ + UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.CLOSE_CURLY_BRACKET);
+
+ methods.add(MethodsGenerator.getHashCodeMethodClose(MethodsGenerator.getHashCodeMethodOpen()
+ + handle.getTempData(TempDataStoreTypes.HASH_CODE, className, path).replace(UtilConstants.NEW_LINE,
+ "")));
+
+ methods.add(MethodsGenerator
+ .getEqualsMethodClose(MethodsGenerator.getEqualsMethodOpen(className + UtilConstants.IMPL)
+ + handle.getTempData(TempDataStoreTypes.EQUALS, className, path)));
+
+ methods.add(MethodsGenerator.getToStringMethodOpen()
+ + handle.getTempData(TempDataStoreTypes.TO_STRING, className, path)
+ + MethodsGenerator.getToStringMethodClose());
+
} catch (ClassNotFoundException | IOException e) {
log.info("There is no attribute info of " + className + " YANG file in the temporary files.");
throw new IOException("Fail to read data from temp file.");
}
/**
- * Add default constructor and constructor methods.
- */
- methods.add(UtilConstants.JAVA_DOC_FIRST_LINE
- + MethodsGenerator.getDefaultConstructorString(IMPL_CLASS_MASK, className));
- methods.add(MethodsGenerator.getConstructorString(className));
-
- /**
* Add methods in impl class.
*/
for (String method : methods) {
@@ -249,6 +269,58 @@
}
/**
+ * Generate class file for type def.
+ *
+ * @param file generated file
+ * @param className file name
+ * @param imports imports for file
+ * @param pkg package path
+ * @param cachedAttributeList attribute list
+ * @param handle cached file handle
+ * @return type def class file
+ * @throws IOException when fails to generate class file
+ */
+ public static File generateTypeDefClassFile(File file, String className, List<String> imports,
+ String pkg, List<AttributeInfo> cachedAttributeList, CachedFileHandle handle) throws IOException {
+ String path = handle.getCodeGenFilePath() + pkg.replace(UtilConstants.PERIOD, UtilConstants.SLASH);
+ initiateFile(file, className, GENERATE_TYPEDEF_CLASS, imports, pkg);
+
+ List<String> typeDef = new ArrayList<>();
+ try {
+ typeDef.add(handle.getTempData(TempDataStoreTypes.TYPE_DEF, className, path));
+ } catch (ClassNotFoundException | IOException e) {
+ log.info("There is no attribute info of " + className + " YANG file in the temporary files.");
+ throw new IOException("Fail to read data from temp file.");
+ }
+
+ /**
+ * Add attributes to the file.
+ */
+ for (String attribute : typeDef) {
+ insert(file, UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION + attribute);
+ }
+
+ return file;
+ }
+
+ /**
+ * Returns constructor string for impl class.
+ *
+ * @param yangName class name
+ * @return constructor string
+ */
+ private static String getConstructorString(String yangName) {
+
+ String builderAttribute = yangName.substring(0, 1).toLowerCase() + yangName.substring(1);
+ String javadoc = MethodsGenerator.getConstructorString(yangName);
+ String constructor = UtilConstants.FOUR_SPACE_INDENTATION + UtilConstants.PUBLIC + UtilConstants.SPACE
+ + yangName + UtilConstants.IMPL + UtilConstants.OPEN_PARENTHESIS + yangName + UtilConstants.BUILDER
+ + UtilConstants.SPACE + builderAttribute + UtilConstants.OBJECT + UtilConstants.CLOSE_PARENTHESIS
+ + UtilConstants.SPACE + UtilConstants.OPEN_CURLY_BRACKET + UtilConstants.NEW_LINE;
+ return javadoc + constructor;
+ }
+
+ /**
* Initiate generation of file based on generated file type.
*
* @param file generated file
@@ -288,7 +360,6 @@
*
* @param file file in which method needs to be appended
* @param method method which needs to be appended
- * @exception IOException file operation exceptions
*/
private static void appendMethod(File file, String method) throws IOException {
insert(file, method);
@@ -309,17 +380,30 @@
* Parses attribute info and fetch specific data and creates serialized
* files of it.
*
- * @param attr attribute info
+ * @param attr attribute info.
* @param genFileType generated file type
* @param className class name
+ * @param path file path
+ * @param handle cached file handle
*/
- public static void parseAttributeInfo(AttributeInfo attr, int genFileType, String className) {
+ public static void parseAttributeInfo(AttributeInfo attr, int genFileType, String className, String path,
+ CachedFileHandle handle) {
String attrString = "";
- String builderInterfaceMethodString = "";
- String builderClassMethodString = "";
- String implClassMethodString = "";
+
String getterString = "";
+ String getterImplString = "";
+
+ String setterString = "";
+ String setterImplString = "";
+
+ String constructorString = "";
+ String typeDefString = "";
+
+ String toString = "";
+ String hashCodeString = "";
+ String equalsString = "";
+
className = JavaIdentifierSyntax.getCaptialCase(className);
try {
@@ -327,33 +411,124 @@
* Get the attribute definition and save attributes to temporary
* file.
*/
- attrString = JavaCodeSnippetGen.getJavaAttributeDefination(attr.getImportInfo().getPkgInfo(),
- attr.getImportInfo().getClassInfo(),
- attr.getAttributeName());
- TempDataStore.setTempData(attrString, TempDataStore.TempDataStoreType.ATTRIBUTE, className);
+
+ boolean isList = attr.isListAttr();
+ String attributeName = JavaIdentifierSyntax.getLowerCase(attr.getAttributeName());
+ if (attr.isQualifiedName()) {
+ attrString = JavaCodeSnippetGen.getJavaAttributeDefination(attr.getImportInfo().getPkgInfo(),
+ attr.getImportInfo().getClassInfo(),
+ attributeName, attr.isListAttr());
+ } else {
+ attrString = JavaCodeSnippetGen.getJavaAttributeDefination(null, attr.getImportInfo().getClassInfo(),
+ attributeName, attr.isListAttr());
+ }
+ handle.setTempData(attrString + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION,
+ TempDataStoreTypes.ATTRIBUTE, className,
+ path);
if ((genFileType & INTERFACE_MASK) != 0) {
getterString = MethodsGenerator.getGetterString(attr);
- TempDataStore.setTempData(getterString, TempDataStore.TempDataStoreType.GETTER_METHODS, className);
+ handle.setTempData(getterString + UtilConstants.NEW_LINE,
+ TempDataStoreTypes.GETTER_METHODS,
+ className,
+ path);
+
}
if ((genFileType & BUILDER_INTERFACE_MASK) != 0) {
- builderInterfaceMethodString = MethodsGenerator.parseBuilderInterfaceMethodString(attr, className);
- TempDataStore.setTempData(builderInterfaceMethodString,
- TempDataStore.TempDataStoreType.BUILDER_INTERFACE_METHODS,
- className + UtilConstants.BUILDER + UtilConstants.INTERFACE);
+ setterString = MethodsGenerator.getSetterString(attr, className);
+ handle.setTempData(setterString + UtilConstants.NEW_LINE,
+ TempDataStoreTypes.SETTER_METHODS,
+ className,
+ path);
}
if ((genFileType & BUILDER_CLASS_MASK) != 0) {
- builderClassMethodString = MethodsGenerator.parseBuilderMethodString(attr, className);
- TempDataStore.setTempData(builderClassMethodString, TempDataStore.TempDataStoreType.BUILDER_METHODS,
- className + UtilConstants.BUILDER);
+ getterImplString = MethodsGenerator.getGetterForClass(attr);
+ handle.setTempData(
+ MethodsGenerator.getOverRideString() + getterImplString + UtilConstants.NEW_LINE,
+ TempDataStoreTypes.GETTER_METHODS_IMPL, className,
+ path);
+ setterImplString = MethodsGenerator.getSetterForClass(attr, className);
+ handle.setTempData(
+ MethodsGenerator.getOverRideString() + setterImplString + UtilConstants.NEW_LINE,
+ TempDataStoreTypes.SETTER_METHODS_IMPL, className,
+ path);
}
if ((genFileType & IMPL_CLASS_MASK) != 0) {
- implClassMethodString = MethodsGenerator.parseImplMethodString(attr);
- TempDataStore.setTempData(implClassMethodString, TempDataStore.TempDataStoreType.IMPL_METHODS,
- className + UtilConstants.IMPL);
+ constructorString = MethodsGenerator.getConstructor(className, attr);
+ handle.setTempData(constructorString, TempDataStoreTypes.CONSTRUCTOR, className,
+ path);
+
+ hashCodeString = MethodsGenerator.getHashCodeMethod(attr);
+ handle.setTempData(hashCodeString + UtilConstants.NEW_LINE,
+ TempDataStoreTypes.HASH_CODE,
+ className,
+ path);
+ equalsString = MethodsGenerator.getEqualsMethod(attr);
+ handle.setTempData(equalsString + UtilConstants.NEW_LINE,
+ TempDataStoreTypes.EQUALS,
+ className,
+ path);
+
+ toString = MethodsGenerator.getToStringMethod(attr);
+ handle.setTempData(toString + UtilConstants.NEW_LINE,
+ TempDataStoreTypes.TO_STRING,
+ className,
+ path);
+
+ }
+
+ if ((genFileType & GENERATE_TYPEDEF_CLASS) != 0) {
+
+ if (attr.isQualifiedName()) {
+ typeDefString = JavaCodeSnippetGen.getJavaAttributeDefination(attr.getImportInfo().getPkgInfo(),
+ attr.getImportInfo().getClassInfo(),
+ attributeName, attr.isListAttr()) + UtilConstants.NEW_LINE;
+ } else {
+ typeDefString = JavaCodeSnippetGen.getJavaAttributeDefination(null,
+ attr.getImportInfo().getClassInfo(),
+ attributeName, attr.isListAttr()) + UtilConstants.NEW_LINE;
+ }
+
+ typeDefString = typeDefString + UtilConstants.NEW_LINE + UtilConstants.FOUR_SPACE_INDENTATION
+ + UtilConstants.JAVA_DOC_FIRST_LINE;
+
+ typeDefString = typeDefString
+ + MethodsGenerator.getDefaultConstructorString(className, UtilConstants.PRIVATE)
+ + UtilConstants.NEW_LINE;
+
+ typeDefString = typeDefString
+ + JavaDocGen.getJavaDoc(JavaDocType.TYPE_DEF_CONSTRUCTOR, className, isList)
+ + MethodsGenerator.getTypeDefConstructor(attr, className)
+ + UtilConstants.NEW_LINE;
+
+ typeDefString = typeDefString + JavaDocGen.getJavaDoc(JavaDocType.OF, className, isList)
+ + MethodsGenerator.getOfMethod(className, attr) + UtilConstants.NEW_LINE;
+
+ typeDefString = typeDefString + JavaDocGen.getJavaDoc(JavaDocType.GETTER, className, isList)
+ + MethodsGenerator.getGetterForClass(attr) + UtilConstants.NEW_LINE;
+
+ typeDefString = typeDefString + JavaDocGen.getJavaDoc(JavaDocType.TYPE_DEF_SETTER, className, isList)
+ + MethodsGenerator.getSetterForTypeDefClass(attr)
+ + UtilConstants.NEW_LINE;
+
+ hashCodeString = hashCodeString + MethodsGenerator.getHashCodeMethodOpen()
+ + MethodsGenerator.getHashCodeMethod(attr).replace(UtilConstants.NEW_LINE, "");
+ hashCodeString = MethodsGenerator.getHashCodeMethodClose(hashCodeString) + UtilConstants.NEW_LINE;
+
+ equalsString = equalsString + MethodsGenerator.getEqualsMethodOpen(className) + UtilConstants.NEW_LINE
+ + MethodsGenerator.getEqualsMethod(attr);
+ equalsString = MethodsGenerator.getEqualsMethodClose(equalsString) + UtilConstants.NEW_LINE;
+
+ toString = toString + MethodsGenerator.getToStringMethodOpen()
+ + MethodsGenerator.getToStringMethod(attr) + UtilConstants.NEW_LINE
+ + MethodsGenerator.getToStringMethodClose()
+ + UtilConstants.NEW_LINE;
+ typeDefString = typeDefString + hashCodeString + equalsString + toString;
+ handle.setTempData(typeDefString, TempDataStoreTypes.TYPE_DEF, className,
+ path);
}
} catch (IOException e) {
log.info("Failed to set data for " + attr.getAttributeName() + " in temp data files.");
@@ -368,18 +543,34 @@
* @param fileName generated file name
* @param type generated file type
* @param pkg generated file package
- * @param importsList list of java imports
+ * @param importsList list of java imports.
* @throws IOException when fails to append contents
*/
private static void appendContents(File file, String fileName, int type, List<String> importsList,
String pkg) throws IOException {
+ if (pkg.contains(UtilConstants.YANG_GEN_DIR)) {
+ String[] strArray = pkg.split(UtilConstants.YANG_GEN_DIR);
+ pkg = strArray[1].replace(UtilConstants.SLASH, UtilConstants.PERIOD);
+ }
+
if ((type & IMPL_CLASS_MASK) != 0) {
write(file, fileName, type, JavaDocType.IMPL_CLASS);
} else if ((type & BUILDER_INTERFACE_MASK) != 0) {
write(file, fileName, type, JavaDocType.BUILDER_INTERFACE);
+ } else if ((type & GENERATE_TYPEDEF_CLASS) != 0) {
+ insert(file, CopyrightHeader.getCopyrightHeader());
+ insert(file, "package" + UtilConstants.SPACE + pkg + UtilConstants.SEMI_COLAN + UtilConstants.NEW_LINE);
+ if (importsList != null) {
+ insert(file, UtilConstants.NEW_LINE);
+ for (String imports : importsList) {
+ insert(file, imports);
+ }
+ insert(file, UtilConstants.NEW_LINE);
+ }
+ write(file, fileName, type, JavaDocType.IMPL_CLASS);
} else {
if ((type & INTERFACE_MASK) != 0) {
@@ -420,7 +611,7 @@
private static void write(File file, String fileName, int genType, JavaDocGen.JavaDocType javaDocType)
throws IOException {
- insert(file, JavaDocGen.getJavaDoc(javaDocType, fileName));
+ insert(file, JavaDocGen.getJavaDoc(javaDocType, fileName, false));
insert(file, JavaCodeSnippetGen.getJavaClassDefStart(genType, fileName));
}
@@ -433,13 +624,27 @@
*/
public static void insert(File file, String data) throws IOException {
try {
- FileSystemUtil.insertStringInFile(file, data);
+ FileSystemUtil.updateFileHandle(file, data, false);
} catch (IOException e) {
throw new IOException("Failed to insert in " + file + "file");
}
}
/**
+ * Closes the files handle for generate files.
+ *
+ * @param file generate files
+ * @throws IOException when failed to close the file handle
+ */
+ public static void closeFileHandles(File file) throws IOException {
+ try {
+ FileSystemUtil.updateFileHandle(file, null, true);
+ } catch (IOException e) {
+ throw new IOException("Failed to close file handle for " + file + "file");
+ }
+ }
+
+ /**
* Removes temp files.
*
* @param file file to be removed
@@ -449,4 +654,14 @@
file.delete();
}
}
+
+ /**
+ * Removes temp files.
+ *
+ * @param tempDir temp directory
+ * @throws IOException when fails to delete the directory
+ */
+ public static void cleanTempFiles(File tempDir) throws IOException {
+ FileUtils.deleteDirectory(tempDir);
+ }
}