adapt uuidAndTitleCache services and dao methods to search for a pattern
[cdmlib.git] / cdmlib-persistence / src / main / java / eu / etaxonomy / cdm / persistence / dao / hibernate / common / MarkerDaoImpl.java
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.common.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 int count(MarkerType markerType) {
35 Criteria criteria = getSession().createCriteria(Marker.class);
36 criteria.add(Restrictions.eq("markerType", markerType));
37 criteria.setProjection(Projections.rowCount());
38 return ((Number)criteria.uniqueResult()).intValue();
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 Integer 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 ((Number)criteria.uniqueResult()).intValue();
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 }