1 //----------------------------------------------------------------------
2
3 //PerfectJPattern: "Design patterns are good but components are better!"
4 //Example.java Copyright (c) 2009 Giovanni Azua Garcia
5 //bravegag@hotmail.com
6
7 //This program is free software; you can redistribute it and/or
8 //modify it under the terms of the GNU General Public License
9 //as published by the Free Software Foundation; either version 3
10 //of the License, or (at your option) any later version.
11
12 //This program is distributed in the hope that it will be useful,
13 //but WITHOUT ANY WARRANTY; without even the implied warranty of
14 //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 //GNU General Public License for more details.
16
17 //You should have received a copy of the GNU General Public License
18 //along with this program; if not, see <http://www.gnu.org/licenses/>.
19 //Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
20 //MA 02110-1301, USA.
21
22 //----------------------------------------------------------------------
23 package org.perfectjpattern.jee.integration.dao.jpa;
24
25 import java.text.*;
26 import java.util.*;
27
28 import org.perfectjpattern.example.datamodel.*;
29 import org.perfectjpattern.example.datamodel.visitor.*;
30 import org.perfectjpattern.jee.api.business.servicelocator.*;
31 import org.perfectjpattern.jee.business.servicelocator.*;
32 import org.slf4j.*;
33
34 /**
35 * Startup Main for the JPA Generic Dao example code
36 *
37 * @author <a href="mailto:bravegag@hotmail.com">Giovanni Azua</a>
38 * @version $ $Date: Dec 5, 2008 2:04:37 AM $
39 */
40 //CHECKSTYLE:OFF
41 public final
42 class Example
43 // CHECKSTYLE:ON
44 {
45 //------------------------------------------------------------------------
46 // public
47 //------------------------------------------------------------------------
48 public static void
49 main(String[] anArguments)
50 throws ParseException
51 {
52 // tweaking OpenEJB logging
53 System.setProperty("log4j.category.OpenEJB", "debug");
54
55 //---------------------------------------------------------------
56 // use ServiceLocator to load the Local IGenericDao EJB
57 //---------------------------------------------------------------
58 IServiceLocator myServiceLocator = ServiceLocator.getInstance();
59 IMovieBaseDao myMovieBaseDao = myServiceLocator.locate(
60 "IMovieBaseDaoLocal");
61
62 //---------------------------------------------------------------
63 // call IBaseDao methods
64 //---------------------------------------------------------------
65 myMovieBaseDao.create(new Movie("Fresa y chocolate",
66 "Tomas Gutierrez Alea", 1994));
67 myMovieBaseDao.create(new Movie("Vita e bella, La", "Roberto Benigni",
68 1997));
69 myMovieBaseDao.create(new Movie("Taken", "Pierre Morel", 2008));
70
71 //---------------------------------------------------------------
72 // clear cache: demonstrates accessing whatever Session lies behind
73 //---------------------------------------------------------------
74 myMovieBaseDao.getSession().clear();
75
76 //---------------------------------------------------------------
77 // find all Movies
78 //---------------------------------------------------------------
79 StringBuilder myBuilder = new StringBuilder();
80 List<Movie> myMovies = myMovieBaseDao.findAll();
81 ToStringVisitor myVisitor = new ToStringVisitor();
82 for (Movie myMovie : myMovies)
83 {
84 myVisitor.visit(myMovie);
85 String myResult = myVisitor.getResult();
86 myBuilder.append(myResult);
87 }
88
89 //---------------------------------------------------------------
90 // use ServiceLocator to load the Local IGenericDao EJB
91 //---------------------------------------------------------------
92 IMovieGenericDao myMovieGenericDao = myServiceLocator.locate(
93 "IMovieGenericDaoLocal");
94
95 //---------------------------------------------------------------
96 // find all Movies produced in 2008
97 //---------------------------------------------------------------
98 int myYear = 2008;
99 myMovies = myMovieGenericDao.findByYear(myYear);
100 for (Movie myMovie : myMovies)
101 {
102 myVisitor.visit(myMovie);
103 String myResult = myVisitor.getResult();
104 myBuilder.append(myResult);
105 }
106
107 theLogger.debug(myBuilder.toString());
108
109 myServiceLocator.shutdown();
110 }
111
112 //------------------------------------------------------------------------
113 // protected
114 //------------------------------------------------------------------------
115 protected static void
116 setLogger(Logger aLogger)
117 {
118 theLogger = aLogger;
119 }
120
121 //------------------------------------------------------------------------
122 // members
123 //------------------------------------------------------------------------
124 /**
125 * Provides logging facilities for this class
126 */
127 private static Logger theLogger = LoggerFactory.getLogger(Example.class);
128 }