AT: committing merge changes
[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.TaxonNameBase;
17 import eu.etaxonomy.cdm.model.name.TypeDesignationBase;
18 import eu.etaxonomy.cdm.model.name.TypeDesignationStatusBase;
19 import eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmEntityDaoBase;
20 import eu.etaxonomy.cdm.persistence.dao.name.IHomotypicalGroupDao;
21
22 /**
23 * @author a.babadshanjan
24 * @created 24.09.2008
25 */
26 @Repository
27 public class HomotypicalGroupDaoHibernateImpl extends CdmEntityDaoBase<HomotypicalGroup> implements IHomotypicalGroupDao {
28
29 @SuppressWarnings("unused")
30 private static final Logger logger = Logger.getLogger(HomotypicalGroupDaoHibernateImpl.class);
31
32 public HomotypicalGroupDaoHibernateImpl() {
33 super(HomotypicalGroup.class);
34 }
35
36 /* (non-Javadoc)
37 * @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)
38 */
39 @Override
40 public <T extends TypeDesignationBase> List<T> getTypeDesignations(
41 HomotypicalGroup homotypicalGroup, Class<T> type,
42 TypeDesignationStatusBase status, Integer pageSize,
43 Integer pageNumber, List<String> propertyPaths) {
44
45 // checkNotInPriorView("getTypeDesignations(HomotypicalGroup homotypicalGroup,TypeDesignationStatusBase status, Integer pageSize, Integer pageNumber, List<String> propertyPaths)");
46 Query query = null;
47 String queryString = "select designation from TypeDesignationBase designation join designation.typifiedNames name join name.homotypicalGroup homotypicalGroup where homotypicalGroup = :homotypicalGroup";
48
49 if(status != null) {
50 queryString += " and designation.typeStatus = :status";
51 }
52 if(type != null){
53 queryString += " and designation.class = :type";
54 }
55
56 query = getSession().createQuery(queryString);
57
58 if(status != null) {
59 query.setParameter("status", status);
60 }
61 if(type != null){
62 query.setParameter("type", type.getSimpleName());
63 }
64
65 query.setParameter("homotypicalGroup",homotypicalGroup);
66
67 if(pageSize != null) {
68 query.setMaxResults(pageSize);
69 if(pageNumber != null) {
70 query.setFirstResult(pageNumber * pageSize);
71 } else {
72 query.setFirstResult(0);
73 }
74 }
75 return defaultBeanInitializer.initializeAll((List<T>)query.list(), propertyPaths);
76 }
77
78
79
80 }