Project

General

Profile

Download (3.09 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2009 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9

    
10
package eu.etaxonomy.cdm.persistence.dao.hibernate.common;
11

    
12
import java.util.List;
13
import java.util.UUID;
14

    
15
import org.hibernate.Criteria;
16
import org.hibernate.criterion.Projections;
17
import org.hibernate.criterion.Restrictions;
18
import org.springframework.stereotype.Repository;
19

    
20
import eu.etaxonomy.cdm.model.common.Marker;
21
import eu.etaxonomy.cdm.model.common.MarkerType;
22
import eu.etaxonomy.cdm.model.permission.User;
23
import eu.etaxonomy.cdm.persistence.dao.common.IMarkerDao;
24
import eu.etaxonomy.cdm.persistence.query.OrderHint;
25

    
26
@Repository
27
public class MarkerDaoImpl extends VersionableDaoBase<Marker> implements IMarkerDao {
28

    
29
	public MarkerDaoImpl() {
30
		super(Marker.class);
31
	}
32

    
33
	@Override
34
    public long count(MarkerType markerType) {
35
		Criteria criteria = getSession().createCriteria(Marker.class);
36
		criteria.add(Restrictions.eq("markerType", markerType));
37
		criteria.setProjection(Projections.rowCount());
38
        return (Long)criteria.uniqueResult();
39
	}
40

    
41
	@Override
42
    public List<Marker> list(MarkerType markerType, Integer pageSize,	Integer pageNumber, List<OrderHint> orderHints,	List<String> propertyPaths) {
43
		Criteria criteria = getSession().createCriteria(Marker.class);
44
		criteria.add(Restrictions.eq("markerType", markerType));
45

    
46
		if(pageSize != null) {
47
			criteria.setMaxResults(pageSize);
48
		    if(pageNumber != null) {
49
		    	criteria.setFirstResult(pageNumber * pageSize);
50
		    }
51
		}
52

    
53
		addOrder(criteria, orderHints);
54
		@SuppressWarnings("unchecked")
55
        List<Marker> results = criteria.list();
56
		defaultBeanInitializer.initializeAll(results, propertyPaths);
57
		return results;
58
	}
59

    
60
	@Override
61
	public UUID delete(Marker marker) {
62
		throw new RuntimeException("Delete is not supported for markers. Markers must be removed from the marked object instead.");
63
	}
64

    
65
	public long count(User creator, MarkerType markerType) {
66
		Criteria criteria = getSession().createCriteria(Marker.class);
67
		criteria.add(Restrictions.eq("createdBy", creator));
68
		if(markerType != null) {
69
		    criteria.add(Restrictions.eq("markerType", markerType));
70
		}
71
		criteria.setProjection(Projections.rowCount());
72
        return (Long)criteria.uniqueResult();
73
	}
74

    
75
	public List<Marker> list(User creator, MarkerType markerType, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints,	List<String> propertyPaths) {
76
		Criteria criteria = getSession().createCriteria(Marker.class);
77
		criteria.add(Restrictions.eq("createdBy", creator));
78
		if(markerType != null) {
79
		    criteria.add(Restrictions.eq("markerType", markerType));
80
		}
81

    
82
		if(pageSize != null) {
83
			criteria.setMaxResults(pageSize);
84
		    if(pageNumber != null) {
85
		    	criteria.setFirstResult(pageNumber * pageSize);
86
		    }
87
		}
88

    
89
		addOrder(criteria, orderHints);
90
		@SuppressWarnings("unchecked")
91
        List<Marker> results = criteria.list();
92
		defaultBeanInitializer.initializeAll(results, propertyPaths);
93
		return results;
94
	}
95

    
96
}
(13-13/18)