1 package uk.co.concise.maven.hdc.dao; 2 3 import java.util.Iterator; 4 import java.util.List; 5 6 import net.sf.hibernate.HibernateException; 7 import net.sf.hibernate.Query; 8 import net.sf.hibernate.Session; 9 import net.sf.hibernate.Transaction; 10 import uk.co.concise.maven.hdc.model.Chart; 11 12 13 /*** 14 * Data accessor object for charts. 15 * @author martenssonb 16 */ 17 public class ChartDao { 18 19 /*** 20 * Persists a chart. 21 * @param chart chart to be persisted. 22 */ 23 public void saveOrUpdateChart(Chart chart) { 24 Session session = HibernateUtil.currentSession(); 25 Transaction tx = null; 26 try { 27 tx = session.beginTransaction(); 28 29 session.saveOrUpdate(chart); 30 tx.commit(); 31 } catch (HibernateException e) { 32 HibernateUtil.handleHibernateException(tx, e); 33 } finally { 34 HibernateUtil.closeSession(); 35 } 36 } 37 38 /*** 39 * Returns a chart with a certain heading. Returns null if 40 * no chart was found. 41 * @param heading the heading of the chart to be returned. 42 * @return a chart with a certain heading. 43 */ 44 public Chart findByHeading(String heading) { 45 Session session = HibernateUtil.currentSession(); 46 Transaction tx = null; 47 Chart chart = null; 48 try { 49 tx = session.beginTransaction(); 50 51 Query q = session.createQuery("from Chart as chart " 52 + "where chart.heading = :heading"); 53 q.setString("heading", heading); 54 Iterator chartIter = q.iterate(); 55 if (chartIter.hasNext()) { 56 chart = (Chart) chartIter.next(); 57 } 58 tx.commit(); 59 } catch (HibernateException e) { 60 HibernateUtil.handleHibernateException(tx, e); 61 } finally { 62 HibernateUtil.closeSession(); 63 } 64 return chart; 65 } 66 67 /*** 68 * Returns all charts. 69 * @return all charts. 70 */ 71 public List findAll() { 72 Session session = HibernateUtil.currentSession(); 73 Transaction tx = null; 74 List charts = null; 75 try { 76 tx = session.beginTransaction(); 77 charts = session.find("from Chart"); 78 tx.commit(); 79 return charts; 80 } catch (HibernateException e) { 81 HibernateUtil.handleHibernateException(tx, e); 82 } finally { 83 HibernateUtil.closeSession(); 84 } 85 return charts; 86 } 87 88 }