cleanup / abuse system fix / prepping for a release
[mir.git] / source / mircoders / localizer / basic / MirBasicWriterEngine.java
index c277abf..693e19b 100755 (executable)
  */
 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();
 
   /**
@@ -57,9 +58,9 @@ public class MirBasicWriterEngine implements WriterEngine {
    * {@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;
@@ -68,17 +69,17 @@ public class MirBasicWriterEngine implements WriterEngine {
       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) {
@@ -94,6 +95,7 @@ public class MirBasicWriterEngine implements WriterEngine {
     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
@@ -102,7 +104,17 @@ public class MirBasicWriterEngine implements WriterEngine {
 
     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 {