*/
package mircoders.localizer.basic;
-import java.io.*;
-
+import mir.config.MirPropertiesConfiguration;
import mir.generator.WriterEngine;
import mir.log.LoggerWrapper;
-import mir.config.MirPropertiesConfiguration;
-import mir.util.FileFunctions;
+import mir.util.FileRoutines;
+import mircoders.global.MirGlobal;
import mircoders.localizer.MirLocalizerFailure;
+import java.io.*;
+
public class MirBasicWriterEngine implements WriterEngine {
private String defaultEncoding;
- protected static LoggerWrapper logger = new LoggerWrapper("Localizer.AdminInterface");
+ protected static LoggerWrapper logger = new LoggerWrapper("Localizer.WriterEngine");
protected MirPropertiesConfiguration configuration = MirPropertiesConfiguration.instance();
/**
* {@inheritDoc}
*/
public Object openWriter(String anIdentifier, String anEncoding) throws MirLocalizerFailure {
+ System.out.println("Opening writer for " + anIdentifier);
+
String encoding;
- File file;
- File dir;
if (anEncoding != null && !anEncoding.equals("")) {
encoding = anEncoding;
encoding = defaultEncoding;
}
- try {
- file = new File(anIdentifier);
+ File destinationFile = new File(anIdentifier);
- dir = file.getParentFile();
+ File destinationDirectory = destinationFile.getParentFile();
- if (dir != null && !dir.exists()) {
- dir.mkdirs();
- }
+ if (destinationDirectory != null && !destinationDirectory.exists()) {
+ destinationDirectory.mkdirs();
+ }
+ try {
return new PrintWriter(
- new TempWriter(file, encoding)
+ new TempWriter(destinationFile, encoding)
);
}
catch (IOException t) {
TempWriter(File aDestination, String anEncoding) throws IOException {
destinationFile = aDestination;
slaveFile = File.createTempFile("Mir", ".generated", tempDirectory);
+ slaveFile.deleteOnExit();
slaveWriter = new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream(slaveFile), anEncoding
public void close() throws IOException {
slaveWriter.close();
- FileFunctions.move(slaveFile, destinationFile);
+
+ try {
+ FileRoutines.move(slaveFile, destinationFile);
+
+ slaveFile.delete();
+ }
+ catch (Throwable e) {
+ System.out.println("error: " + e.toString());
+
+ throw new IOException(e.getMessage());
+ }
}
public void flush() throws IOException {