Project

General

Profile

1
package eu.dnetlib.enabling.is.dao;
2

    
3
import java.io.Serializable;
4
import java.util.List;
5

    
6
import javax.persistence.Table;
7

    
8
import org.hibernate.Query;
9
import org.hibernate.Session;
10
import org.hibernate.SessionFactory;
11
import org.hibernate.Transaction;
12

    
13
import eu.dnetlib.enabling.is.hib.objects.HibDnetObject;
14

    
15
public class DnetSimpleDaoImpl<T extends HibDnetObject> implements DnetSimpleDao<T> {
16

    
17
	private SessionFactory sessionFactory;
18

    
19
	private Class<T> clazz;
20

    
21
	public DnetSimpleDaoImpl(final Class<T> clazz, final SessionFactory sessionFactory) {
22
		this.clazz = clazz;
23
		this.sessionFactory = sessionFactory;
24
	}
25

    
26
	@Override
27
	public void save(final T hib) {
28
		final Session session = sessionFactory.openSession();
29
		final Transaction tx = session.beginTransaction();
30
		hib.save(session);
31
		tx.commit();
32
		session.close();
33
	}
34

    
35
	@Override
36
	public List<T> list() {
37
		final String table = clazz.getAnnotation(Table.class).name();
38

    
39
		final Session session = sessionFactory.openSession();
40
		@SuppressWarnings("unchecked")
41
		final List<T> list = session.createQuery("from " + table).list();
42
		session.close();
43
		return list;
44
	}
45

    
46
	@Override
47
	public List<T> list(final String col, final Object value) {
48
		final String table = clazz.getAnnotation(Table.class).name();
49
		final Session session = sessionFactory.openSession();
50
		final Query query = session.createQuery("from " + table); // + " where " + col + " = :value");
51
		// query.setParameter("value", value);
52
		@SuppressWarnings("unchecked")
53
		final List<T> list = query.list();
54
		session.close();
55
		return list;
56
	}
57

    
58
	@Override
59
	public T find(final Serializable id) {
60
		final Session session = sessionFactory.openSession();
61
		final T hib = clazz.cast(session.get(clazz, id));
62
		session.close();
63
		return hib;
64
	}
65

    
66
	@Override
67
	public void delete(final String id) {
68
		final Session session = sessionFactory.openSession();
69
		final Transaction tx = session.beginTransaction();
70
		final T hib = clazz.cast(session.get(clazz, id));
71
		hib.delete(session);
72
		tx.commit();
73
		session.close();
74
	}
75

    
76
	public SessionFactory getSessionFactory() {
77
		return sessionFactory;
78
	}
79

    
80
	public void setSessionFactory(final SessionFactory sessionFactory) {
81
		this.sessionFactory = sessionFactory;
82
	}
83

    
84
	public Class<T> getClazz() {
85
		return clazz;
86
	}
87

    
88
	public void setClazz(final Class<T> clazz) {
89
		this.clazz = clazz;
90
	}
91
}
(3-3/3)