01: package net.sourceforge.importscrubber;
02:
03: import java.io.File;
04: import java.io.FilenameFilter;
05: import java.util.*;
06:
07: /**
08: * This class encapsulates the source & class files
09: */
10: public class FilePair {
11:
12: /**
13: * A filter which only accepts inner classes.
14: */
15: private class InnerClassFilter implements FilenameFilter {
16: public boolean accept(File dir, String name) {
17: // make sure we only get inner classes
18: if (name.indexOf("$") == -1) {
19: return false;
20: }
21: // make sure we get this class's inner classes
22: String className = _classFile.getName();
23: className = className.substring(0, className.indexOf("."));
24: return name.startsWith(className);
25: }
26: }
27:
28: private File _sourceFile;
29: private File _classFile;
30:
31: /**
32: *
33: * @param sourceFile
34: * @param classFile
35: */
36: public FilePair(File sourceFile, File classFile) {
37: _sourceFile = sourceFile;
38: _classFile = classFile;
39: }
40:
41: public File getSourceFile() {
42: return _sourceFile;
43: }
44:
45: public ListIterator getClassFiles() {
46: List files = new ArrayList();
47: files.add(_classFile);
48: if (_classFile.getParent() != null) {
49: File dir = new File(_classFile.getParent());
50: files.addAll(Arrays.asList(dir
51: .listFiles(new InnerClassFilter())));
52: }
53: return files.listIterator();
54: }
55:
56: public int hashCode() {
57: return _sourceFile.hashCode();
58: }
59:
60: public boolean equals(Object o) {
61: return o instanceof FilePair
62: && ((FilePair) o).getSourceFile()
63: .compareTo(_sourceFile) == 0;
64: }
65:
66: public String toString() {
67: return _sourceFile.getAbsolutePath();
68: }
69: }
|