*** empty log message ***
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpeclipse / mover / CopyMover.java
diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/mover/CopyMover.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/mover/CopyMover.java
new file mode 100644 (file)
index 0000000..3903545
--- /dev/null
@@ -0,0 +1,66 @@
+package net.sourceforge.phpeclipse.mover;
+
+/**
+ * Copy the file from the source to the target directory.
+ *
+ */
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import net.sourceforge.phpeclipse.views.PHPConsole;
+
+public class CopyMover extends DefaultMover {
+  /**
+   * buffer, for obvious reasons access to this buffer must
+   * be synchronized
+   */
+  protected byte[] bytes = new byte[1024];
+
+  /**
+   * Return the name the file would have after moving. In this case,
+   * it's left unchanged.
+   * @param file file the mover would have to move
+   * @return the extension it would give the file in the target directory
+   */
+  public String getTargetName(File file) {
+    return file.getName();
+  }
+
+  /**
+   * Creates a CopyMover.
+   * @param console reports error to the PHPConsole
+   */
+  public CopyMover(PHPConsole console) {
+    super(console);
+  }
+
+  /**
+   * Move one file.
+   * @param sourceFile the file to move
+   * @param targetDir the directory to copy the result to
+   * @return file or null if the file was ignored
+   */
+  public File move(File sourceFile, File targetDir) {
+    try {
+      File targetFile = new File(targetDir, getTargetName(sourceFile));
+      if (targetFile.exists())
+        if (targetFile.lastModified() >= sourceFile.lastModified())
+          return null;
+      synchronized (bytes) {
+        FileInputStream in = new FileInputStream(sourceFile);
+        FileOutputStream out = new FileOutputStream(targetFile);
+        for (int len = in.read(bytes); len != -1; len = in.read(bytes)) {
+          out.write(bytes, 0, len);
+        }
+        in.close();
+        out.close();
+      }
+      return targetFile;
+    } catch (IOException e) {
+      fConsole.write(e.toString());
+    }
+    return null;
+  }
+}
\ No newline at end of file