1 package org.musicontroller.importer;
2
3 import java.io.Serializable;
4 import java.util.ArrayList;
5 import java.util.Collection;
6 import java.util.Date;
7 import java.util.HashMap;
8 import java.util.HashSet;
9 import java.util.List;
10 import java.util.Map;
11 import java.util.Set;
12 import java.util.TreeSet;
13
14 import org.apache.log4j.Logger;
15 import org.varienaja.util.DateTools;
16
17
18
19
20
21
22
23
24
25 public class MusicArchiveBean implements Serializable {
26
27 private static final long serialVersionUID = 20071205181533L;
28
29 private static Logger _log = Logger.getLogger(MusicArchiveBean.class);
30
31
32
33
34 private Date _releaseDate = null;
35
36
37
38
39
40 private Map<String,PlaylistImportProperties> _playlistPropertiesMap;
41
42
43
44
45 private String _archiveName;
46
47
48
49
50 private List<MusicArchiveEntryBean> _entries;
51
52
53
54
55
56 public MusicArchiveBean() {
57 _playlistPropertiesMap = new HashMap<String,PlaylistImportProperties>();
58 _releaseDate = null;
59 _archiveName = null;
60 setEntries(new ArrayList<MusicArchiveEntryBean>());
61 }
62
63
64
65
66
67 public PlaylistImportProperties getPlaylistProperties(String playlistName) {
68 if(playlistName==null) {
69 return null;
70 }
71 return _playlistPropertiesMap.get(playlistName);
72 }
73
74 public Set<PlaylistImportProperties> getPlaylistPropertySet() {
75 Collection<PlaylistImportProperties> allProperties = _playlistPropertiesMap.values();
76 Set<PlaylistImportProperties> result = new HashSet<PlaylistImportProperties>(allProperties);
77 _log.debug("Returned a set of "+result.size()+" playlist import properties.");
78 return result;
79 }
80
81
82
83
84
85 public Set<String> getPlaylistNames() {
86 return _playlistPropertiesMap.keySet();
87 }
88
89
90
91
92
93 public void setPlaylistProperties(String playlistName, PlaylistImportProperties properties) {
94 if(playlistName==null) {
95 return;
96 }
97 _playlistPropertiesMap.put(playlistName, properties);
98 }
99
100
101
102
103
104 public String getArchiveName() {
105 return _archiveName;
106 }
107
108
109
110
111
112 public void setArchiveName(String name) {
113 _archiveName = name;
114 }
115
116
117
118
119
120 private List<MusicArchiveEntryBean> getEntries() {
121 return _entries;
122 }
123
124
125
126
127
128 private void setEntries(List<MusicArchiveEntryBean> entries) {
129 this._entries = entries;
130 }
131
132
133 public Set<MusicArchiveEntryBean> getEntrySet() {
134 Set<MusicArchiveEntryBean> result = new TreeSet<MusicArchiveEntryBean>();
135 result.addAll(_entries);
136 return result;
137 }
138
139
140
141
142
143
144 public Date getReleaseDate() {
145 Date result = _releaseDate;
146 if (result==null) {
147 for (MusicArchiveEntryBean entry : _entries) {
148 Date test = entry.getReleaseDate();
149 if (test!=null) {
150 if (result==null || test.before(result)) {
151 result = test;
152 }
153 }
154 }
155 }
156 return result;
157 }
158
159
160
161
162
163 public void setReleaseDate(Date releaseDate) {
164 _releaseDate = releaseDate;
165 }
166
167
168
169
170
171
172 public void addEntry(MusicArchiveEntryBean entry) {
173 if(entry==null) {
174 return;
175 }
176 if(entry.getPlaylistName()==null) {
177 entry.setPlaylistName("");
178 }
179 getEntries().add(entry);
180 analyseMusicArchive();
181 }
182
183
184
185
186
187
188
189
190
191
192
193 public void analyseMusicArchive() {
194
195 Set<String> playlistNames = new HashSet<String>();
196 for (MusicArchiveEntryBean entry : getEntries()) {
197 String key = entry.getPlaylistName();
198 playlistNames.add(key);
199 if(getPlaylistProperties(key)==null) {
200
201
202 PlaylistImportProperties pip = new PlaylistImportProperties();
203 pip.setPlaylistName(key);
204 pip.setReleaseDate(DateTools.currentDate());
205 pip.setAddToExistingPlaylist(false);
206 setPlaylistProperties(key, pip);
207 }
208 }
209
210 for(PlaylistImportProperties pp: getPlaylistPropertySet()) {
211 if (!playlistNames.contains(pp.getPlaylistName())) {
212 _playlistPropertiesMap.remove(pp.getPlaylistName());
213 }
214 }
215 }
216
217
218 }