restoring head
[mir.git] / source / org / codecoop / mir / core / dao / hibernate / QueryCriteria.java
1 /*
2  * $Id: QueryCriteria.java,v 1.1 2004/11/06 16:20:48 idfx Exp $
3  * 
4  * Copyright (C) 2001, 2002, 2003, 2004 The Mir-coders group
5  *
6  * This file is part of Mir.
7  *
8  * Mir is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * Mir is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with Mir; if not, write to the Free Software
20  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
21  *
22  * In addition, as a special exception, The Mir-coders gives permission to link
23  * the code of this program with  any library licensed under the Apache Software License,
24  * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library
25  * (or with modified versions of the above that use the same license as the above),
26  * and distribute linked combinations including the two.  You must obey the
27  * GNU General Public License in all respects for all of the code used other than
28  * the above mentioned libraries.  If you modify this file, you may extend this
29  * exception to your version of the file, but you are not obligated to do so.
30  * If you do not wish to do so, delete this exception statement from your version.
31  */
32 package org.codecoop.mir.core.dao.hibernate;
33
34 import net.sf.hibernate.Criteria;
35 import net.sf.hibernate.HibernateException;
36
37 import org.codecoop.mir.core.dao.DatabaseFailure;
38 import org.codecoop.mir.core.dao.IQueryCriteria;
39 import org.codecoop.mir.core.dao.IQueryExpression;
40 import org.codecoop.mir.core.dao.IQueryOrder;
41 import org.codecoop.mir.core.dao.QueryFailure;
42
43 /**
44  * QueryCriteria
45  * @author idefix
46  * @version $Revision: 1.1 $
47  */
48 public class QueryCriteria implements IQueryCriteria {
49   private Criteria _criteria;
50   
51   /**
52    * @param persistentClass
53    * @throws QueryFailure
54    */
55   public QueryCriteria(Class persistentClass) throws QueryFailure {
56     try {
57       _criteria = HibernateSessionManager.getSession().createCriteria(persistentClass);
58     } catch (DatabaseFailure e) {
59       throw new QueryFailure(e);
60     }
61   }
62
63   /**
64    * @param criteria
65    */
66   private QueryCriteria(Criteria criteria) {
67     _criteria = criteria;
68   }
69
70   /**
71    * @see org.codecoop.mir.core.dao.IQueryCriteria#add(org.codecoop.mir.core.query.IQueryExpression)
72    */
73   public IQueryCriteria add(IQueryExpression expression) {
74     if(expression instanceof QueryExpression){
75       _criteria.add(((QueryExpression)expression).expression());
76     }
77     return this;
78   }
79
80   /**
81    * @see org.codecoop.mir.core.dao.IQueryCriteria#addOrder(org.codecoop.mir.core.query.IQueryOrder)
82    */
83   public IQueryCriteria addOrder(IQueryOrder order) {
84     if(order instanceof QueryOrder){
85       _criteria.addOrder(((QueryOrder)order).order());
86     }
87     return this;
88   }
89
90   /**
91    * @see org.codecoop.mir.core.dao.IQueryCriteria#setLimit(int)
92    */
93   public IQueryCriteria setLimit(int limit) {
94     _criteria.setMaxResults(limit);
95     return this;
96   }
97
98   /**
99    * @see org.codecoop.mir.core.dao.IQueryCriteria#setOffset(int)
100    */
101   public IQueryCriteria setOffset(int offset) {
102     _criteria.setFirstResult(offset);
103     return this;
104   }
105   
106   /* (non-Javadoc)
107    * @see org.codecoop.mir.core.query.IQueryCriteria#createCriteria(java.lang.String)
108    */
109   public IQueryCriteria createCriteria(String property) throws DatabaseFailure {
110     try {
111       Criteria c = _criteria.createCriteria(property);
112       QueryCriteria queryCriteria = new QueryCriteria(c);
113       return queryCriteria;
114     } catch (HibernateException e) {
115       throw new DatabaseFailure(e);
116     }
117   }
118
119   /**
120    * @return
121    */
122   public Criteria criteria() {
123     return _criteria;
124   }
125
126
127
128 }