a lot of fixes
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpeclipse / mover / CopyMover.java
1 package net.sourceforge.phpeclipse.mover;
2
3 /**
4  * Copy the file from the source to the target directory.
5  *
6  */
7 import java.io.File;
8 import java.io.FileInputStream;
9 import java.io.FileOutputStream;
10 import java.io.IOException;
11
12 import net.sourceforge.phpeclipse.views.PHPConsole;
13
14 public class CopyMover extends DefaultMover {
15   /**
16    * buffer, for obvious reasons access to this buffer must
17    * be synchronized
18    */
19   protected byte[] bytes = new byte[1024];
20
21   /**
22    * Return the name the file would have after moving. In this case,
23    * it's left unchanged.
24    * @param file file the mover would have to move
25    * @return the extension it would give the file in the target directory
26    */
27   public String getTargetName(File file) {
28     return file.getName();
29   }
30
31   /**
32    * Creates a CopyMover.
33    * @param console reports error to the PHPConsole
34    */
35   public CopyMover(PHPConsole console) {
36     super(console);
37   }
38
39   /**
40    * Move one file.
41    * @param sourceFile the file to move
42    * @param targetDir the directory to copy the result to
43    * @return file or null if the file was ignored
44    */
45   public File move(File sourceFile, File targetDir) {
46     try {
47       File targetFile = new File(targetDir, getTargetName(sourceFile));
48       if (targetFile.exists())
49         if (targetFile.lastModified() >= sourceFile.lastModified())
50           return null;
51       synchronized (bytes) {
52         FileInputStream in = new FileInputStream(sourceFile);
53         FileOutputStream out = new FileOutputStream(targetFile);
54         for (int len = in.read(bytes); len != -1; len = in.read(bytes)) {
55           out.write(bytes, 0, len);
56         }
57         in.close();
58         out.close();
59       }
60       return targetFile;
61     } catch (IOException e) {
62       fConsole.write(e.toString());
63     }
64     return null;
65   }
66 }