1 package org.musicontroller.gui.edit;
2
3 import java.util.Date;
4 import java.util.List;
5
6 import org.apache.tapestry.IExternalPage;
7 import org.apache.tapestry.IRequestCycle;
8 import org.apache.tapestry.annotations.InjectObject;
9 import org.apache.tapestry.engine.ExternalServiceParameter;
10 import org.apache.tapestry.engine.IEngineService;
11 import org.apache.tapestry.engine.ILink;
12 import org.apache.tapestry.event.PageBeginRenderListener;
13 import org.apache.tapestry.event.PageEndRenderListener;
14 import org.apache.tapestry.event.PageEvent;
15 import org.apache.tapestry.html.BasePage;
16 import org.musicontroller.core.Playlist;
17 import org.musicontroller.dao.BagAndKeywordUtils;
18 import org.musicontroller.security.User;
19 import org.musicontroller.service.McService;
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 public abstract class PlaylistEdit extends BasePage implements PageBeginRenderListener, PageEndRenderListener, IExternalPage {
45
46 public abstract long getPlaylistId();
47 public abstract void setPlaylistId(long id);
48 public abstract void setPlaylistName(String playlistname);
49 public abstract void setPlaylistKeywords(String keywords);
50 public abstract void setPlaylistReleasedate(Date releasedate);
51 public abstract void setSongBeanList(List<SongBean> list);
52
53 public abstract String getPlaylistName();
54 public abstract String getPlaylistKeywords();
55 public abstract Date getPlaylistReleasedate();
56 public abstract List<SongBean> getSongBeanList();
57
58 public abstract List<AiRelationBean> getAiRelationList();
59 public abstract void setAiRelationList(List<AiRelationBean> relations);
60
61 public abstract String getArtistfirstname();
62 public abstract String getArtistlastname();
63 public abstract String getInstruments();
64 public abstract String getTracks();
65 public abstract void setArtistfirstname(String firstname);
66 public abstract void setArtistlastname(String lastname);
67 public abstract void setInstruments(String instruments);
68 public abstract void setTracks(String tracks);
69
70 public abstract List<PlaylistMergeBean> getMergePlaylistBeanList();
71 public abstract void setMergePlaylistBeanList(List<PlaylistMergeBean> list);
72
73 public abstract McService getMcService();
74
75 @InjectObject("engine-service:external")
76 public abstract IEngineService getExternalService();
77
78 public abstract User getUser();
79
80 private Playlist _playlist;
81
82
83
84
85
86
87
88 public void activateExternalPage(Object[] args, IRequestCycle cycle) {
89 Long playlistid = (Long) args[0];
90 setPlaylistId(playlistid);
91 }
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110 public void pageBeginRender(PageEvent event) {
111 Playlist playlist = getPlaylist();
112 setPlaylistName(playlist.getName());
113 setPlaylistReleasedate(playlist.getReleasedate());
114 setPlaylistKeywords("");
115
116 setSongBeanList(getMcService().constructSongBeanList(playlist));
117
118
119
120
121 List<AiRelationBean> beanlist = BagAndKeywordUtils.buildAiRelationBeanList(playlist);
122 setAiRelationList(beanlist);
123
124
125
126 setMergePlaylistBeanList(getMcService().constructMergeBeanList(playlist));
127
128
129 setArtistfirstname("");
130 setArtistlastname("");
131 setInstruments("");
132 setTracks("");
133 }
134
135
136
137
138
139 public void pageEndRender(PageEvent event) {
140 _playlist = null;
141 }
142
143
144
145
146
147 public Playlist getPlaylist() {
148 long id = getPlaylistId();
149 if(_playlist==null) {
150 _playlist = getMcService().getPlaylistById(id);
151 }
152 return _playlist;
153 }
154
155
156
157
158
159
160 public void save(IRequestCycle cycle) {
161 getMcService().setPlaylistProperties(getPlaylist(),getPlaylistName(),getPlaylistReleasedate());
162 getMcService().mergePlaylist(getPlaylist(), getUser(), getMergePlaylistBeanList());
163 }
164
165
166
167
168
169 public void addKeywords(IRequestCycle cycle) {
170 getMcService().addKeywordsToPlaylist(getPlaylist(), getPlaylistKeywords(),null); }
171
172
173
174
175
176 public void removeKeywords(IRequestCycle cycle) {
177 getMcService().removeKeywordsFromPlaylist(getPlaylist(), getPlaylistKeywords(),null);
178 }
179
180
181
182
183
184
185
186 public void editSongs(IRequestCycle cycle) {
187 List<SongBean> songbeans = getSongBeanList();
188 getMcService().editSongsOfPlaylist(getPlaylist(),songbeans);
189 }
190
191 public void addMusician(IRequestCycle cycle) {
192 getMcService().addMusician(getPlaylist(), getArtistfirstname(), getArtistlastname(), getInstruments(), getTracks());
193 }
194
195 public void deleteMusician(IRequestCycle cycle) {
196 getMcService().deleteMusician(getPlaylist(), getArtistfirstname(), getArtistlastname(), getInstruments(), getTracks());
197 }
198
199
200
201
202
203 public ILink editCoverArt(IRequestCycle cycle) {
204 IEngineService service = getExternalService();
205 ExternalServiceParameter parameter = new ExternalServiceParameter("CoverArtEdit", new Object[]{getPlaylist().getId(),"PlaylistEdit"});
206 ILink link = service.getLink(false, parameter);
207 return link;
208 }
209 }