merge trunk to hibernate4
[cdmlib.git] / cdmlib-persistence / src / main / java / eu / etaxonomy / cdm / persistence / dao / hibernate / name / HomotypicalGroupDaoHibernateImpl.java
1 /**
2 * Copyright (C) 2008 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 */
6
7 package eu.etaxonomy.cdm.persistence.dao.hibernate.name;
8
9 import java.util.List;
10
11 import org.apache.log4j.Logger;
12 import org.hibernate.Query;
13 import org.springframework.stereotype.Repository;
14
15 import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
16 import eu.etaxonomy.cdm.model.name.TypeDesignationBase;
17 import eu.etaxonomy.cdm.model.name.TypeDesignationStatusBase;
18 import eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmEntityDaoBase;
19 import eu.etaxonomy.cdm.persistence.dao.name.IHomotypicalGroupDao;
20
21 /**
22 * @author a.babadshanjan
23 * @created 24.09.2008
24 */
25 @Repository
26 public class HomotypicalGroupDaoHibernateImpl extends CdmEntityDaoBase<HomotypicalGroup> implements IHomotypicalGroupDao {
27
28 @SuppressWarnings("unused")
29 private static final Logger logger = Logger.getLogger(HomotypicalGroupDaoHibernateImpl.class);
30
31 public HomotypicalGroupDaoHibernateImpl() {
32 super(HomotypicalGroup.class);
33 }
34
35 /* (non-Javadoc)
36 * @see eu.etaxonomy.cdm.persistence.dao.name.IHomotypicalGroupDao#getTypeDesignations(eu.etaxonomy.cdm.model.name.HomotypicalGroup, java.lang.Class, eu.etaxonomy.cdm.model.name.TypeDesignationStatusBase, java.lang.Integer, java.lang.Integer, java.util.List)
37 */
38 @Override
39 public <T extends TypeDesignationBase> List<T> getTypeDesignations(
40 HomotypicalGroup homotypicalGroup, Class<T> type,
41 TypeDesignationStatusBase status, Integer pageSize,
42 Integer pageNumber, List<String> propertyPaths) {
43
44 // checkNotInPriorView("getTypeDesignations(HomotypicalGroup homotypicalGroup,TypeDesignationStatusBase status, Integer pageSize, Integer pageNumber, List<String> propertyPaths)");
45 Query query = null;
46 String queryString = "select designation from TypeDesignationBase designation join designation.typifiedNames name join name.homotypicalGroup homotypicalGroup where homotypicalGroup = :homotypicalGroup";
47
48 if(status != null) {
49 queryString += " and designation.typeStatus = :status";
50 }
51 if(type != null){
52 queryString += " and designation.class = :type";
53 }
54
55 query = getSession().createQuery(queryString);
56
57 if(status != null) {
58 query.setParameter("status", status);
59 }
60 if(type != null){
61 query.setParameter("type", type.getSimpleName());
62 }
63
64 query.setParameter("homotypicalGroup",homotypicalGroup);
65
66 if(pageSize != null) {
67 query.setMaxResults(pageSize);
68 if(pageNumber != null) {
69 query.setFirstResult(pageNumber * pageSize);
70 } else {
71 query.setFirstResult(0);
72 }
73 }
74 return defaultBeanInitializer.initializeAll(query.list(), propertyPaths);
75 }
76
77
78
79 }