View Javadoc

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   * This screen implements editing the properties of a band.
19   * @author deksels
20   * @version $Id: BandEdit.java,v 1.1 2010/03/16 18:55:42 varienaja Exp $
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  		 * Loads the band properties into the page properties that will
38  		 * be shown on screen.
39  		 * @throws MusiControllerException 
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  		 * Submits the changes made.
89  		 * 
90  		 * @param cycle The Tapestry MVC cycle.
91  		 */
92  		public void save(IRequestCycle cycle) {
93  			getMcService().setBandProperties(getBand(), getBandName());
94  		}
95  }