KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > efs > openreports > providers > persistence > ReportPersistenceProvider


1 /*
2  * Copyright (C) 2002 Erik Swenson - erik@oreports.com
3  *
4  * This program is free software; you can redistribute it and/or modify it
5  * under the terms of the GNU General Public License as published by the Free
6  * Software Foundation; either version 2 of the License, or (at your option)
7  * any later version.
8  *
9  * This program is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12  * more details.
13  *
14  * You should have received a copy of the GNU General Public License along with
15  * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
16  * Place - Suite 330, Boston, MA 02111-1307, USA.
17  *
18  */

19
20 package org.efs.openreports.providers.persistence;
21
22 import java.util.Iterator JavaDoc;
23 import java.util.List JavaDoc;
24
25 import org.apache.log4j.Logger;
26 import org.efs.openreports.objects.Report;
27 import org.efs.openreports.objects.ReportGroup;
28 import org.efs.openreports.providers.HibernateProvider;
29 import org.efs.openreports.providers.ProviderException;
30 import org.efs.openreports.util.LocalStrings;
31
32 import org.hibernate.*;
33 import org.hibernate.criterion.Expression;
34
35 public class ReportPersistenceProvider
36 {
37     protected static Logger log =
38         Logger.getLogger(ReportPersistenceProvider.class.getName());
39
40     public ReportPersistenceProvider() throws ProviderException
41     {
42         super();
43
44         log.info("ReportPersistenceProvider Created.");
45     }
46
47     public Report getReport(Integer JavaDoc id) throws ProviderException
48     {
49         return (Report) HibernateProvider.load(Report.class, id);
50     }
51
52      public Report getReport(String JavaDoc name) throws ProviderException
53     {
54         Session session = null;
55         
56         try
57         {
58             session = HibernateProvider.openSession();
59             
60             Criteria criteria = session.createCriteria(Report.class);
61             criteria.add(Expression.eq("name", name));
62             
63             return (Report) criteria.uniqueResult();
64         }
65         catch (HibernateException he)
66         {
67             throw new ProviderException(he);
68         }
69         finally
70         {
71             HibernateProvider.closeSession(session);
72         }
73     }
74      
75     public List JavaDoc getReports() throws ProviderException
76     {
77         String JavaDoc fromClause =
78             "from org.efs.openreports.objects.Report report order by report.name ";
79         
80         return HibernateProvider.query(fromClause);
81     }
82
83     public Report insertReport(Report report) throws ProviderException
84     {
85         return (Report) HibernateProvider.save(report);
86     }
87
88     public void updateReport(Report report) throws ProviderException
89     {
90         HibernateProvider.update(report);
91     }
92
93     public void deleteReport(Report report) throws ProviderException
94     {
95         Session session = HibernateProvider.openSession();
96         Transaction tx = null;
97
98         try
99         {
100             tx = session.beginTransaction();
101             
102             //delete report
103
session.delete(report);
104             
105             //delete report log entries for report
106
session
107                     .createQuery(
108                             "DELETE org.efs.openreports.objects.ReportLog reportLog where reportLog.report.id = ? ")
109                     .setInteger(0, report.getId().intValue()).executeUpdate();
110                                 
111             
112             //remove report from groups
113
Iterator JavaDoc iterator = session
114                 .createQuery(
115                         "from org.efs.openreports.objects.ReportGroup reportGroup").iterate();
116                         
117              while(iterator.hasNext())
118              {
119                 ReportGroup reportGroup = (ReportGroup) iterator.next();
120                 
121                 List JavaDoc reports = reportGroup.getReports();
122                 if (reports.contains(report))
123                 {
124                     reports.remove(report);
125                 }
126              }
127             
128             tx.commit();
129         }
130         catch (HibernateException he)
131         {
132             HibernateProvider.rollbackTransaction(tx);
133
134             if (he.getCause().getMessage().toUpperCase().indexOf("CONSTRAINT") > 0)
135             {
136                 throw new ProviderException(LocalStrings
137                         .getString(LocalStrings.ERROR_REPORT_DELETION));
138             }
139
140             throw new ProviderException(he.getMessage());
141         }
142         finally
143         {
144             HibernateProvider.closeSession(session);
145         }
146     }
147 }
Popular Tags