01: /*
02: * Author: Chris Seguin
03: *
04: * This software has been developed under the copyleft
05: * rules of the GNU General Public License. Please
06: * consult the GNU General Public License for more
07: * details about use and distribution of this software.
08: */
09: package org.acm.seguin.refactor.undo;
10:
11: import java.io.File;
12: import java.io.Serializable;
13: import org.acm.seguin.summary.FileSummary;
14:
15: /**
16: * A set of files that are bound together by the undo operation. This object
17: * stores three files. The first file is the original file name. The second
18: * file is the renamed instance of the original file. The third file is the
19: * new file. <P>
20: *
21: * To undo a refactoring on this particular file you need to delete the old
22: * file, then rename the renamed file back to the original file.
23: *
24: *@author Chris Seguin
25: */
26: public class FileSet implements Serializable {
27: /**
28: * The original file
29: *
30: *@serial true
31: */
32: private File original;
33:
34: /**
35: * The renamed file
36: *
37: *@serial true
38: */
39: private File renamed;
40:
41: /**
42: * The new file
43: *
44: *@serial true
45: */
46: private File newName;
47:
48: /**
49: * Creates a set of files that can be undone.
50: *
51: *@param one the original file
52: *@param two the renamed orginal
53: *@param three the new file
54: */
55: public FileSet(File one, File two, File three) {
56: original = one;
57: renamed = two;
58: newName = three;
59: }
60:
61: /**
62: * Performs the undo operation on this particular file
63: */
64: public void undo() {
65: if (newName != null) {
66: FileSummary.removeFileSummary(newName);
67: newName.delete();
68: }
69:
70: if (original != null) {
71: renamed.renameTo(original);
72: FileSummary.getFileSummary(original);
73: }
74: }
75: }
|