1 19 20 package org.efs.openreports.providers.persistence; 21 22 import java.util.Iterator ; 23 import java.util.List ; 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 id) throws ProviderException 48 { 49 return (Report) HibernateProvider.load(Report.class, id); 50 } 51 52 public Report getReport(String 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 getReports() throws ProviderException 76 { 77 String 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 session.delete(report); 104 105 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 Iterator 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 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 |