|
1 |
| package photospace.meta; |
|
2 |
| |
|
3 |
| import java.util.*; |
|
4 |
| import org.apache.commons.collections.*; |
|
5 |
| |
|
6 |
| public abstract class CollectionMeta extends Meta |
|
7 |
| { |
|
8 |
| private List files = new ArrayList(); |
|
9 |
| protected int total; |
|
10 |
| private int start; |
|
11 |
| private int end; |
|
12 |
| |
|
13 |
13
| public FolderMeta[] getFolders()
|
|
14 |
| { |
|
15 |
13
| List folders = new ArrayList(CollectionUtils.select(files, new TypePredicate(FolderMeta.class)));
|
|
16 |
13
| return (FolderMeta[]) folders.toArray(new FolderMeta[] {});
|
|
17 |
| } |
|
18 |
| |
|
19 |
17
| public PhotoMeta[] getPhotos()
|
|
20 |
| { |
|
21 |
17
| List photos = new ArrayList(CollectionUtils.select(files, new TypePredicate(PhotoMeta.class)));
|
|
22 |
17
| return (PhotoMeta[]) photos.toArray(new PhotoMeta[] {});
|
|
23 |
| } |
|
24 |
| |
|
25 |
37
| public Meta[] getFiles()
|
|
26 |
| { |
|
27 |
37
| return (Meta[]) files.toArray(new Meta[] {});
|
|
28 |
| } |
|
29 |
| |
|
30 |
50
| public void addFile(Meta meta)
|
|
31 |
| { |
|
32 |
50
| files.add(meta);
|
|
33 |
| } |
|
34 |
| |
|
35 |
11
| public void addFiles(Meta[] metas)
|
|
36 |
| { |
|
37 |
11
| files.addAll(Arrays.asList(metas));
|
|
38 |
| } |
|
39 |
| |
|
40 |
0
| public void clearFiles()
|
|
41 |
| { |
|
42 |
0
| files.clear();
|
|
43 |
| } |
|
44 |
| |
|
45 |
7
| public boolean containsFile(Meta meta)
|
|
46 |
| { |
|
47 |
7
| return files.contains(meta);
|
|
48 |
| } |
|
49 |
| |
|
50 |
3
| public void sortFiles(Comparator comparator)
|
|
51 |
| { |
|
52 |
3
| Collections.sort(files, comparator);
|
|
53 |
| } |
|
54 |
| |
|
55 |
35
| public Date getCreated()
|
|
56 |
| { |
|
57 |
21
| if (super.getCreated() != null) return super.getCreated();
|
|
58 |
2
| if (getPhotos().length != 0) return getPhotos()[0].getCreated();
|
|
59 |
0
| if (getFolders().length != 0) return getFolders()[0].getCreated();
|
|
60 |
| |
|
61 |
12
| return null;
|
|
62 |
| } |
|
63 |
| |
|
64 |
40
| public int getTotal()
|
|
65 |
| { |
|
66 |
40
| return total;
|
|
67 |
| } |
|
68 |
| |
|
69 |
47
| public void setTotal(int total)
|
|
70 |
| { |
|
71 |
47
| this.total = total;
|
|
72 |
| } |
|
73 |
| |
|
74 |
72
| public int getStart()
|
|
75 |
| { |
|
76 |
72
| return start;
|
|
77 |
| } |
|
78 |
| |
|
79 |
47
| public void setStart(int start)
|
|
80 |
| { |
|
81 |
47
| this.start = start;
|
|
82 |
| } |
|
83 |
| |
|
84 |
97
| public int getEnd()
|
|
85 |
| { |
|
86 |
97
| return end;
|
|
87 |
| } |
|
88 |
| |
|
89 |
47
| public void setEnd(int end)
|
|
90 |
| { |
|
91 |
47
| this.end = end;
|
|
92 |
| } |
|
93 |
| |
|
94 |
| private static class TypePredicate |
|
95 |
| implements Predicate |
|
96 |
| { |
|
97 |
| Class type; |
|
98 |
| |
|
99 |
30
| public TypePredicate(Class type)
|
|
100 |
| { |
|
101 |
30
| this.type = type;
|
|
102 |
| } |
|
103 |
| |
|
104 |
8
| public boolean evaluate(Object obj)
|
|
105 |
| { |
|
106 |
8
| return type.isAssignableFrom(obj.getClass());
|
|
107 |
| |
|
108 |
| } |
|
109 |
| } |
|
110 |
| } |