package org.hadatac.data.loader.util;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class FileFactory {
File ccsvFile;
File csvFile;
File xcsvFile;
File ttlFile;
File logFile;
FileReader ccsvFileReader;
FileReader csvFileReader;
FileWriter csvFileWriter;
FileWriter xcsvFileWriter;
FileWriter ttlFileWriter;
FileWriter logFileWriter;
BufferedReader ccsvBufferedReader;
BufferedReader csvBufferedReader;
BufferedWriter csvBufferedWriter;
BufferedWriter xcsvBufferedWriter;
BufferedWriter ttlBufferedWriter;
BufferedWriter logBufferedWriter;
Arguments arguments;
String fileName;
public FileFactory (Arguments arguments) {
this.arguments = arguments;
}
public void setFile(File file, String name) {
ccsvFile = file;
fileName = name;
}
public void openFile(String type, String mode) throws IOException {
if (type.equals("ccsv")) {
ccsvFileReader = new FileReader(ccsvFile);
ccsvBufferedReader = new BufferedReader(ccsvFileReader);
} else if (type.equals("csv")) {
csvFile = new File(arguments.getTempPath() + fileName + ".temp.csv");
if (mode.equals("w")) {
csvFileWriter = new FileWriter(csvFile);
csvBufferedWriter = new BufferedWriter(csvFileWriter);
} else if (mode.equals("r")) {
csvFileReader = new FileReader(csvFile);
csvBufferedReader = new BufferedReader(csvFileReader);
}
} else if (type.equals("xcsv")) {
xcsvFile = new File(arguments.getOutputPath() + fileName + ".xcsv");
xcsvFileWriter = new FileWriter(xcsvFile);
xcsvBufferedWriter = new BufferedWriter(xcsvFileWriter);
} else if (type.equals("ttl")) {
ttlFile = new File(arguments.getOutputPath() + fileName + ".ttl");
ttlFileWriter = new FileWriter(ttlFile);
ttlBufferedWriter = new BufferedWriter(ttlFileWriter);
} else if (type.equals("log")) {
logFile = new File(arguments.getLogPath() + "hadatac-loader-" + LocalDateTime.now().toLocalDate().format(DateTimeFormatter.ISO_DATE) + ".log");
logFileWriter = new FileWriter(logFile);
logBufferedWriter = new BufferedWriter(logFileWriter);
}
}
public void closeFile(String type, String mode) throws IOException {
if (type.equals("ccsv")) {
ccsvBufferedReader.close();
ccsvFileReader.close();
} else if (type.equals("csv")) {
csvFile = new File(arguments.getTempPath() + fileName + ".temp.csv");
if (mode.equals("w")) {
csvBufferedWriter.close();
csvFileWriter.close();
} else if (mode.equals("r")) {
csvBufferedReader.close();
csvFileReader.close();
}
} else if (type.equals("xcsv")) {
xcsvBufferedWriter.close();
xcsvFileWriter.close();
} else if (type.equals("ttl")) {
ttlBufferedWriter.close();
ttlFileWriter.close();
} else if (type.equals("log")) {
logBufferedWriter.close();
logFileWriter.close();
}
}
public BufferedReader getReader(String type) {
if (type.equals("csv")) {
return csvBufferedReader;
} else if (type.equals("ccsv")) {
return ccsvBufferedReader;
} else {
return null;
}
}
public BufferedWriter getWriter(String type) {
if (type.equals("csv")) {
return csvBufferedWriter;
} else if (type.equals("xcsv")) {
return xcsvBufferedWriter;
} else if (type.equals("ttl")) {
return ttlBufferedWriter;
} else if (type.equals("log")) {
return logBufferedWriter;
} else {
return null;
}
}
public void write(String type, String str) throws IOException {
if (type.equals("csv")) {
csvBufferedWriter.write(str);
} else if (type.equals("xcsv")) {
xcsvBufferedWriter.write(str);
} else if (type.equals("ttl")) {
ttlBufferedWriter.write(str);
} else if (type.equals("log")) {
logBufferedWriter.write(LocalDateTime.now().toString() + " - " + str);
}
}
public void writeln(String type, String str) throws IOException {
if (type.equals("csv")) {
csvBufferedWriter.write(str + "\n");
} else if (type.equals("xcsv")) {
xcsvBufferedWriter.write(str + "\n");
} else if (type.equals("ttl")) {
ttlBufferedWriter.write(str + "\n");
} else if (type.equals("log")) {
logBufferedWriter.write(LocalDateTime.now().toString() + " - " + str + "\n");
}
}
}