KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > cayenne > tutorial > tapestry > pages > BrowseArtistsPage


1 package cayenne.tutorial.tapestry.pages;
2
3 import java.util.List JavaDoc;
4
5 import org.apache.tapestry.IRequestCycle;
6 import org.apache.tapestry.event.PageEvent;
7 import org.objectstyle.cayenne.access.DataContext;
8 import org.objectstyle.cayenne.query.Ordering;
9 import org.objectstyle.cayenne.query.SelectQuery;
10
11 import cayenne.tutorial.tapestry.domain.Artist;
12 import cayenne.tutorial.tapestry.domain.Painting;
13
14 /**
15  * Page that shows a list of artists with their paintings.
16  *
17  * @author Eric Schneider
18  */

19 public abstract class BrowseArtistsPage extends ApplicationPage {
20
21     // properties are defined as abstract setters and getters
22
// and are declared in BrowseArtistsPage.page file
23
public abstract void setArtist(Artist value);
24     public abstract Artist getArtist();
25
26     public abstract void setPainting(Painting value);
27     public abstract Painting getPainting();
28
29     public abstract void setArtistList(List JavaDoc value);
30     public abstract List JavaDoc getArtistList();
31
32     public boolean getIsOnDisplay() {
33         return (getPainting().getToGallery() != null);
34     }
35
36     public void addPaintingAction(IRequestCycle cycle) {
37         AddPaintingPage nextPage = (AddPaintingPage) cycle.getPage("AddPaintingPage");
38
39         nextPage.setArtist(getArtist());
40
41         cycle.activate(nextPage);
42     }
43
44     public void submitPaintingToGalleryAction(IRequestCycle cycle) {
45         ChooseGalleryPage nextPage =
46             (ChooseGalleryPage) cycle.getPage("ChooseGalleryPage");
47
48         nextPage.setPainting(getPainting());
49         cycle.activate(nextPage);
50     }
51
52     public void pageBeginRender(PageEvent event) {
53         // refetch artists only if they are not initialized
54
if (getArtistList() == null) {
55             DataContext ctxt = getVisitDataContext();
56
57             SelectQuery query = new SelectQuery(Artist.class);
58             
59             // note - generated class _Artist contains the names of class properties
60
// as "public static final Strings"
61
query.addOrdering(new Ordering(Artist.ARTIST_NAME_PROPERTY, Ordering.ASC));
62
63             // prefetch paintings and galleries, since they are displayed
64
// for each artist.
65
// this should improve performance
66
query.addPrefetch(Artist.PAINTING_ARRAY_PROPERTY);
67             query.addPrefetch(
68                 Artist.PAINTING_ARRAY_PROPERTY + "." + Painting.TO_GALLERY_PROPERTY);
69
70             setArtistList(ctxt.performQuery(query));
71         }
72     }
73 }
74
Popular Tags