Clover Coverage Report - perfectjpattern(Aggregated)
Coverage timestamp: Sat Feb 28 2009 14:35:07 CET
../../../../../../img/srcFileCovDistChart10.png 0% of files have more coverage
34   174   3   17
0   67   0.09   2
2     1.5  
1    
 
  Example       Line # 42 34 0% 3 0 100% 1.0
 
  (1)
 
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.hibernate;
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.integration.dao.*;
31    import org.perfectjpattern.jee.integration.dao.*;
32    import org.slf4j.*;
33   
34    /**
35    * Startup Main for the Hibernate 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  1 toggle public static void
49    main(String[] anArguments)
50    throws ParseException
51    {
52    // ToStringVisitor needs loading a ResourceBundle
53  1 Locale.setDefault(new Locale("en", "US"));
54   
55    //---------------------------------------------------------------
56    // Create fixture/ business model
57    //---------------------------------------------------------------
58  1 Product myProduct1 = new Product("Nikon D300", 2000.0);
59  1 Product myProduct2 = new Product("Nikon D40x", 350.0);
60  1 Product myProduct3 = new Product("Nikon 80-400mm", 1500.0);
61   
62  1 Customer myCustomer1 = new Customer("Ernesto");
63   
64  1 Date myDate = DATE_FORMAT.parse("14.03.2007 08:00:00");
65  1 Set<Product> myProducts = new HashSet<Product>();
66  1 myProducts.addAll(Arrays.asList(new Product[] {myProduct1,
67    myProduct2, myProduct3 }));
68  1 Order myOrder1 = new Order(myCustomer1, myDate, myProducts);
69   
70  1 myCustomer1.getOrders().add(myOrder1);
71   
72  1 try
73    {
74    //-----------------------------------------------------------
75    // Accesses the AbstractFactory singleton HibernateDaoFactory
76    // and persists Customer model in storage. Note how the
77    // HibernateDaoFactory hides the framework-specific complexities.
78    // By default it gets initialized to use:
79    //
80    // - HibernateCurrentSessionStrategy:
81    // a) Creates SessionFactory from Configuration
82    // b) Uses the getCurrentSession Hibernate API that
83    // looks into the "current_session_context_class"
84    // configuration, for this example is set to "thread"
85    //
86    // - HibernateConfiguredTransactionStrategy:
87    // Simply accesses the Session Strategy and calls
88    // getTransaction, that will load whatever is configured
89    // in "hibernate.transaction_factory" configuration
90    //-----------------------------------------------------------
91  1 IGenericDao<Long, Customer> myCustomerDao = HibernateDaoFactory.
92    getInstance().createDao(Customer.class);
93  1 myCustomerDao.create(myCustomer1);
94   
95    //-----------------------------------------------------------
96    // Update the Customer model/ add new Product and Order
97    //-----------------------------------------------------------
98  1 Product myProduct4 = new Product("Nikon Fisheye 10mm", 900.0);
99   
100  1 myDate = DATE_FORMAT.parse("19.10.2007 08:00:00");
101  1 myProducts = new HashSet<Product>();
102  1 myProducts.add(myProduct4);
103  1 Order myNewOrder = new Order(myCustomer1, myDate, myProducts);
104   
105  1 myCustomer1.getOrders().add(myNewOrder);
106  1 myCustomerDao.update(myCustomer1);
107   
108    //-----------------------------------------------------------
109    // Commit changes. Note how accessing whatever Transaction
110    // implementation is transparent to the client
111    //-----------------------------------------------------------
112  1 myCustomerDao.getTransaction().commit();
113   
114    //-----------------------------------------------------------
115    // Delete one Product
116    //-----------------------------------------------------------
117  1 myOrder1.getProducts().remove(myProduct2);
118   
119  1 IGenericDao<Long, Order> myOrderDao = HibernateDaoFactory.
120    getInstance().createDao(Order.class);
121  1 myOrderDao.update(myOrder1);
122   
123    //-----------------------------------------------------------
124    // Commit changes.
125    //-----------------------------------------------------------
126  1 myCustomerDao.getTransaction().commit();
127   
128    //-----------------------------------------------------------
129    // Clear the cache
130    //-----------------------------------------------------------
131  1 myCustomerDao.getSession().clear();
132   
133    //-----------------------------------------------------------
134    // Retrieve all Customers
135    //-----------------------------------------------------------
136  1 List<Customer> myCustomers = myCustomerDao.findAll();
137   
138  1 ToStringVisitor myVisitor = new ToStringVisitor();
139  1 for (Customer myCustomer : myCustomers)
140    {
141  1 myVisitor.visit(myCustomer);
142  1 String myResult = myVisitor.getResult();
143   
144  1 theLogger.debug(myResult);
145    }
146    }
147    finally
148    {
149    //-----------------------------------------------------------
150    // Final cleanup
151    //-----------------------------------------------------------
152  1 HibernateDaoFactory.getInstance().shutdown();
153    }
154    }
155   
156    //------------------------------------------------------------------------
157    // protected
158    //------------------------------------------------------------------------
 
159  1 toggle protected static void
160    setLogger(Logger aLogger)
161    {
162  1 theLogger = aLogger;
163    }
164   
165    //------------------------------------------------------------------------
166    // members
167    //------------------------------------------------------------------------
168    /**
169    * Provides logging facilities for this class
170    */
171    private static Logger theLogger = LoggerFactory.getLogger(Example.class);
172    private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat(
173    "dd.MM.yyyy HH:mm:ss");
174    }