View Javadoc

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  import uk.co.concise.maven.hdc.model.Label;
12  
13  
14  /***
15   * Data accessor object for labels.
16   * @author martenssonb
17   */
18  public class LabelDao {
19  
20      /***
21       * Persists a label or updates if it was already persisted.
22       * @param label label to be persisted.
23       */
24      public void saveOrUpdateLabel(Label label) {
25          Session session = HibernateUtil.currentSession();
26          Transaction tx = null;
27          try {
28              tx = session.beginTransaction();
29  
30              session.saveOrUpdate(label);
31              tx.commit();
32          } catch (HibernateException e) {
33              HibernateUtil.handleHibernateException(tx, e);
34          } finally {
35              HibernateUtil.closeSession();
36          }
37      }
38      
39      /***
40       * Returns a label. Returns null if
41       * no label was found.
42       * @param chart the chart that the label belongs to.
43       * @param text the text that makes up the label.
44       * @return a label for a certain chart with a certain text.
45       */
46      public Label findByChartAndText(Chart chart, String text) {
47          Session session = HibernateUtil.currentSession();
48          Transaction tx = null;
49          Label label = null;
50          try {
51              tx = session.beginTransaction();
52  
53              Query q = session.createQuery("from Label as label "
54                      + "where label.chart = :chart and label.text = :text");
55              q.setEntity("chart", chart);
56              q.setString("text", text);
57              
58              Iterator chartIter = q.iterate();
59              if (chartIter.hasNext()) {
60                  label = (Label) chartIter.next();
61              }
62              tx.commit();
63          } catch (HibernateException e) {
64              HibernateUtil.handleHibernateException(tx, e);
65          } finally {
66              HibernateUtil.closeSession();
67          }
68          return label;
69      }
70  
71      /***
72       * Returns all labels for a chart.
73       * @param chart the chart to return labels for.
74       * @return all labels for a chart.
75       */
76      public List findByChart(Chart chart) {
77          Session session = HibernateUtil.currentSession();
78          Transaction tx = null;
79          List labels = null;
80          try {
81              tx = session.beginTransaction();
82  
83              Query q = session.createQuery("from Label as label "
84                      + "where label.chart = :chart");
85              q.setEntity("chart", chart);
86              
87              labels = q.list();
88              tx.commit();
89          } catch (HibernateException e) {
90              HibernateUtil.handleHibernateException(tx, e);
91          } finally {
92              HibernateUtil.closeSession();
93          }
94          return labels;
95      }
96  
97  }