KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > acme > movie > MovieEntity


1 package org.acme.movie;
2
3 import javax.ejb.CreateException JavaDoc;
4 import javax.ejb.FinderException JavaDoc;
5 import javax.ejb.RemoveException JavaDoc;
6 import javax.ejb.EJBException JavaDoc;
7 import javax.naming.InitialContext JavaDoc;
8 import javax.naming.NamingException JavaDoc;
9 import java.util.Date JavaDoc;
10 import java.util.Collection JavaDoc;
11 import java.util.Properties JavaDoc;
12 import java.text.SimpleDateFormat JavaDoc;
13
14 /**
15  * This is actually our EJBs Local interface.
16  *
17  * Since local interfaces don't declare crazy EJB specific Exceptions
18  * in the throws clause we will choose to put our method declarations
19  * in an interface called Movie and make both the Local interface and
20  * Bean class implement it.
21  *
22  * @author David Blevins <dblevins@visi.com>
23  */

24 public interface MovieEntity extends javax.ejb.EJBLocalObject JavaDoc, Movie {
25
26     /** This EJB's JNDI name */
27     public static final String JavaDoc NAME = "MovieEJBLocal";
28     public static final SimpleDateFormat JavaDoc DATE_FORMAT = new SimpleDateFormat JavaDoc("yyyy.MM.dd");
29
30     /**
31      * This is another fun trick. I prefer this to the standard service
32      * locator pattern. It makes for easy and neat looking entity creation
33      * and location, such as:
34      *
35      * MovieEntity movie = MovieEntity.Home.create(...);
36      *
37      * A home interface is essentially static, so why not really
38      * make it static.
39      *
40      * The easiest way to implement the MovieHome interface for this class
41      * declare the variable "private MovieHome home;" then use IntelliJ or
42      * Eclipse's "Delegate Methods" support.
43      */

44     public static final MovieHome Home = new MovieHome(){
45         private MovieHome home;
46         private MovieHome home(){
47             if (home == null){
48                 home = lookup();
49             }
50             return home;
51         }
52         private MovieHome lookup() {
53             try {
54                 Properties JavaDoc p = new Properties JavaDoc(System.getProperties());
55                 p.put("java.naming.factory.initial", "org.openejb.client.LocalInitialContextFactory");
56                 InitialContext JavaDoc initialContext = new InitialContext JavaDoc(p);
57                 return (MovieHome) initialContext.lookup(NAME);
58             } catch (NamingException JavaDoc e) {
59                 throw (IllegalStateException JavaDoc) new IllegalStateException JavaDoc(NAME + " cannot be retrieved from JNDI.").initCause(e);
60             }
61         }
62
63         public MovieEntity create(String JavaDoc title, String JavaDoc director, String JavaDoc genre, int rating, Date JavaDoc releaseDate) throws CreateException JavaDoc {
64             return home().create(title, director, genre, rating, releaseDate);
65         }
66
67         public Collection JavaDoc findByTitle(String JavaDoc title) throws FinderException JavaDoc {
68             return home().findByTitle(title);
69         }
70
71         public Collection JavaDoc findByDirector(String JavaDoc director) throws FinderException JavaDoc {
72             return home().findByDirector(director);
73         }
74
75         public Collection JavaDoc findByGenre(String JavaDoc genre) throws FinderException JavaDoc {
76             return home().findByGenre(genre);
77         }
78
79         public MovieEntity findByPrimaryKey(Integer JavaDoc key) throws FinderException JavaDoc {
80             return home().findByPrimaryKey(key);
81         }
82
83         public Collection JavaDoc findAllMovies() throws FinderException JavaDoc {
84             return home().findAllMovies();
85         }
86
87         public void remove(Object JavaDoc o) throws RemoveException JavaDoc, EJBException JavaDoc {
88             home().remove(o);
89         }
90     };
91
92 }
93
Popular Tags