1 package org.musicontroller.gui.edit;
2
3 import java.util.List;
4
5 import org.apache.log4j.Logger;
6 import org.apache.tapestry.IExternalPage;
7 import org.apache.tapestry.IRequestCycle;
8 import org.apache.tapestry.event.PageBeginRenderListener;
9 import org.apache.tapestry.event.PageEndRenderListener;
10 import org.apache.tapestry.event.PageEvent;
11 import org.apache.tapestry.html.BasePage;
12 import org.musicontroller.MusiControllerException;
13 import org.musicontroller.core.Band;
14 import org.musicontroller.core.Playlist;
15 import org.musicontroller.service.McService;
16
17
18
19
20
21
22 public abstract class BandEdit extends BasePage implements IExternalPage {
23 private static final Logger log = Logger.getLogger(BandEdit.class);
24
25 public abstract Long getBandId();
26 public abstract void setBandId(Long id);
27
28 public abstract void setBandName(String bandname);
29
30 public abstract String getBandName();
31
32 public abstract McService getMcService();
33
34 private Band _band;
35
36
37
38
39
40
41 public BandEdit() {
42 super();
43 addPageBeginRenderListener(
44 new PageBeginRenderListener() {
45 public void pageBeginRender(PageEvent e) {
46 Band band = getBand();
47 if(band==null) {
48 return;
49 }
50 setBandName(band.getName());
51 }
52 }
53 );
54
55 this.addPageEndRenderListener(
56 new PageEndRenderListener() {
57 public void pageEndRender(PageEvent e) {
58 _band = null;
59 }
60 }
61 );
62 }
63
64 public void activateExternalPage(Object[] args, IRequestCycle cycle) {
65 Long bandid = (Long) args[0];
66 setBandId(bandid);
67 }
68
69 public Band getBand() {
70 if (_band==null) {
71 _band = getMcService().getBandById(getBandId());
72 log.debug("Queried band");
73 } else {
74 log.debug("Got band from cache.");
75 }
76 return _band;
77 }
78
79 public List<Playlist> getPlaylists() {
80 return getMcService().getBandPlaylists(getBand());
81 }
82
83 public Playlist getSonglist() {
84 return getMcService().getSongsByBand(getBand());
85 }
86
87
88
89
90
91
92 public void save(IRequestCycle cycle) {
93 getMcService().setBandProperties(getBand(), getBandName());
94 }
95 }