1 package org.musicontroller.gui;
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.core.AIBag;
13 import org.musicontroller.core.AIRelation;
14 import org.musicontroller.core.Artist;
15 import org.musicontroller.dao.Dao;
16 import org.musicontroller.security.User;
17 import org.musicontroller.service.McService;
18 import org.varienaja.util.DateTools;
19
20 public abstract class ArtistInfo extends BasePage implements IExternalPage {
21
22 public abstract Dao getDao();
23 public abstract Long getArtistId();
24 public abstract void setArtistId(Long id);
25
26 public abstract User getUser();
27
28 public Artist _artist;
29
30 public abstract McService getMcService();
31
32 public ArtistInfo() {
33 super();
34 addPageBeginRenderListener(
35 new PageBeginRenderListener() {
36 public void pageBeginRender(PageEvent e) {
37 _artist = null;
38 }
39 }
40 );
41
42 this.addPageEndRenderListener(
43 new PageEndRenderListener() {
44 public void pageEndRender(PageEvent e) {
45 _artist = null;
46 }
47 }
48 );
49 }
50
51 public void activateExternalPage(Object[] args, IRequestCycle cycle) {
52 Long artistid = (Long) args[0];
53 setArtistId(artistid);
54 }
55
56 public Artist getArtist() {
57 if (_artist==null) {
58 _artist = getMcService().getArtistById(getArtistId());
59 }
60 return _artist;
61 }
62
63 public String getInserted() {
64 return DateTools.formatTimestamp(getArtist().getInserted());
65 }
66
67 public List<AIRelation> getAIRelations() {
68 AIBag bag = getDao().getArtistAppearances(getArtistId());
69 return bag.getRelations();
70 }
71 }