Revision 700

View differences:

org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/util/FolderSet.java
1
package org.gvsig.tools.util;
2

  
3
import java.io.File;
4
import java.io.FileFilter;
5
import java.io.FilenameFilter;
6
import java.util.Iterator;
7

  
8
import org.gvsig.tools.observer.Observable;
9

  
10
public interface FolderSet extends Observable {
11
	
12
	public interface FolderEntry {
13
		public File getFolder();
14
		public String getLabel() ;
15
	}
16
	
17
	public void add(File folder);
18
	
19
	public void add(File folder, String description);
20
	
21
	public void clear();
22
	
23
	public void remove(File folder);
24
	
25
	public void set(File folder);
26
	
27
	public Iterator iterator(); // over FolderEntry
28
	
29
	public File[] listFiles();
30
	
31
	public File[] listFiles(FileFilter filter);
32

  
33
	public File[] listFiles(FilenameFilter filter);
34
}
0 35

  
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/util/impl/DefaultFolderSet.java
1
package org.gvsig.tools.util.impl;
2

  
3
import java.io.File;
4
import java.io.FileFilter;
5
import java.io.FilenameFilter;
6
import java.util.ArrayList;
7
import java.util.Arrays;
8
import java.util.HashSet;
9
import java.util.Iterator;
10
import java.util.List;
11
import java.util.Set;
12

  
13
import org.gvsig.tools.observer.impl.BaseWeakReferencingObservable;
14
import org.gvsig.tools.util.FolderSet;
15

  
16
public class DefaultFolderSet extends BaseWeakReferencingObservable implements FolderSet {
17

  
18
	public class DefaultFolderEntry implements FolderEntry {
19
		File folder; 
20
		String label;
21
		
22
		DefaultFolderEntry(File folder, String label) {
23
			this.folder = folder;
24
			this.label = label;
25
		}
26
		public boolean equals(Object obj) {
27
			return this.folder.equals(((FolderEntry)obj).getFolder());
28
		}
29
		public int hashCode() {
30
			return this.folder.hashCode();
31
		}
32
		public File getFolder() {
33
			return this.folder;
34
		}
35
		public String getLabel() {
36
			return this.label;
37
		}
38
	}
39
	
40
	private Set folders = null;
41

  
42
	
43
	public DefaultFolderSet() {
44
		folders = new HashSet();
45
	}
46
	
47
	public void add(File folder) {
48
		this.add(folder, null);
49
	}
50

  
51
	public void add(File folder, String description) {
52
		if( folder == null ) {
53
			return;
54
		}
55
		if( folder.exists() && !folder.isDirectory() ) {
56
			throw new IllegalArgumentException("folder required");
57
		}
58
		this.folders.add(new DefaultFolderEntry(folder, description));
59
		this.notifyObservers();	
60
	}
61

  
62
	public void clear() {
63
		this.folders.clear();
64
		this.notifyObservers();
65
	}
66

  
67
	public void remove(File folder) {
68
		this.folders.remove(new DefaultFolderEntry(folder,null));
69
		this.notifyObservers();
70
	}
71

  
72
	public void set(File folder) {
73
		this.beginComplexNotification();
74
		this.clear();
75
		this.add(folder);
76
		this.endComplexNotification();
77
	}
78
	
79
	public File[] listFiles() {
80
		List entries = new ArrayList();
81
		Iterator it = this.folders.iterator();
82
		while( it.hasNext() ) {
83
			FolderEntry folderEntry = (FolderEntry) it.next();
84
			File[] files = folderEntry.getFolder().listFiles();
85
			entries.addAll( Arrays.asList(files));
86
		}
87
		return  (File[]) entries.toArray();
88
	}
89

  
90
	public File[] listFiles(FileFilter filter) {
91
		List entries = new ArrayList();
92
		Iterator it = this.folders.iterator();
93
		while( it.hasNext() ) {
94
			FolderEntry folderEntry = (FolderEntry) it.next();
95
			File[] files = folderEntry.getFolder().listFiles(filter);
96
			entries.addAll( Arrays.asList(files));
97
		}
98
		return  (File[]) entries.toArray();
99
	}
100

  
101
	public File[] listFiles(FilenameFilter filter) {
102
		List entries = new ArrayList();
103
		Iterator it = this.folders.iterator();
104
		while( it.hasNext() ) {
105
			FolderEntry folderEntry = (FolderEntry) it.next();
106
			File[] files = folderEntry.getFolder().listFiles(filter);
107
			entries.addAll( Arrays.asList(files));
108
		}
109
		return  (File[]) entries.toArray();
110
	}
111

  
112
	public Iterator iterator() {
113
		return this.folders.iterator();
114
	}
115

  
116
}
0 117

  

Also available in: Unified diff