View Javadoc
1   /*******************************************************************************
2    *   Gisgraphy Project 
3    * 
4    *   This library is free software; you can redistribute it and/or
5    *   modify it under the terms of the GNU Lesser General Public
6    *   License as published by the Free Software Foundation; either
7    *   version 2.1 of the License, or (at your option) any later version.
8    * 
9    *   This library is distributed in the hope that it will be useful,
10   *   but WITHOUT ANY WARRANTY; without even the implied warranty of
11   *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12   *   Lesser General Public License for more details.
13   * 
14   *   You should have received a copy of the GNU Lesser General Public
15   *   License along with this library; if not, write to the Free Software
16   *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
17   * 
18   *  Copyright 2008  Gisgraphy project 
19   *  David Masclet <davidmasclet@gisgraphy.com>
20   *  
21   *  
22   *******************************************************************************/
23  package com.gisgraphy.dao.hibernate;
24  
25  import java.io.Serializable;
26  import java.util.List;
27  
28  import org.apache.commons.logging.Log;
29  import org.apache.commons.logging.LogFactory;
30  import org.springframework.orm.ObjectRetrievalFailureException;
31  import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
32  
33  import com.gisgraphy.dao.UniversalDao;
34  
35  /**
36   * This class serves as the a class that can CRUD any object witout any Spring
37   * configuration. The only downside is it does require casting from Object to
38   * the object class.
39   * 
40   * @author Bryan Noll
41   */
42  public class UniversalDaoHibernate extends HibernateDaoSupport implements
43  	UniversalDao {
44      /**
45       * Log variable for all child classes. Uses LogFactory.getLog(getClass())
46       * from Commons Logging
47       */
48      protected final Log log = LogFactory.getLog(getClass());
49  
50      /**
51       * {@inheritDoc}
52       */
53      public Object save(Object o) {
54  	return getHibernateTemplate().merge(o);
55      }
56  
57      /**
58       * {@inheritDoc}
59       */
60      public Object get(Class<?> clazz, Serializable id) {
61  	Object o = getHibernateTemplate().get(clazz, id);
62  
63  	if (o == null) {
64  	    throw new ObjectRetrievalFailureException(clazz, id);
65  	}
66  
67  	return o;
68      }
69  
70      /**
71       * {@inheritDoc}
72       */
73      public List<?> getAll(Class<?> clazz) {
74  	return getHibernateTemplate().loadAll(clazz);
75      }
76  
77      /**
78       * {@inheritDoc}
79       */
80      public void remove(Class<?> clazz, Serializable id) {
81  	getHibernateTemplate().delete(get(clazz, id));
82      }
83  }