2f209077e9ec49b11830194d1f36e401694cfc24
2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
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.
10 package eu
.etaxonomy
.cdm
.persistence
.dao
.hibernate
.common
;
12 import java
.util
.List
;
14 import org
.apache
.log4j
.Logger
;
15 import org
.hibernate
.Criteria
;
16 import org
.hibernate
.Query
;
17 import org
.hibernate
.Session
;
18 import org
.hibernate
.criterion
.Criterion
;
19 import org
.hibernate
.criterion
.Order
;
20 import org
.hibernate
.criterion
.Restrictions
;
22 import eu
.etaxonomy
.cdm
.model
.common
.CdmBase
;
23 import eu
.etaxonomy
.cdm
.model
.common
.IdentifiableEntity
;
24 import eu
.etaxonomy
.cdm
.model
.common
.OriginalSource
;
25 import eu
.etaxonomy
.cdm
.model
.media
.Rights
;
26 import eu
.etaxonomy
.cdm
.persistence
.dao
.common
.IIdentifiableDao
;
29 public class IdentifiableDaoBase
<T
extends IdentifiableEntity
> extends AnnotatableDaoImpl
<T
> implements IIdentifiableDao
<T
>{
30 @SuppressWarnings("unused")
31 private static final Logger logger
= Logger
.getLogger(IdentifiableDaoBase
.class);
34 public IdentifiableDaoBase(Class
<T
> type
) {
39 * @see eu.etaxonomy.cdm.persistence.dao.common.ITitledDao#findByTitle(java.lang.String)
41 public List
<T
> findByTitle(String queryString
) {
42 return findByTitle(queryString
, null);
46 * @see eu.etaxonomy.cdm.persistence.dao.common.ITitledDao#findByTitle(java.lang.String)
48 public List
<T
> findByTitle(String queryString
, CdmBase sessionObject
) {
49 Session session
= getSession();
50 if ( sessionObject
!= null ) {
51 session
.update(sessionObject
);
53 Criteria crit
= session
.createCriteria(type
);
54 crit
.add(Restrictions
.ilike("persistentTitleCache", queryString
));
55 List
<T
> results
= crit
.list();
59 public List
<T
> findByTitleAndClass(String queryString
, Class
<T
> clazz
) {
60 Session session
= getSession();
61 Criteria crit
= session
.createCriteria(clazz
);
62 crit
.add(Restrictions
.ilike("persistentTitleCache", queryString
));
63 List
<T
> results
= crit
.list();
69 * @see eu.etaxonomy.cdm.persistence.dao.common.ITitledDao#findByTitle(java.lang.String, boolean, int, int, java.util.List)
71 public List
<T
> findByTitle(String queryString
, MATCH_MODE matchmode
, int page
, int pagesize
, List
<Criterion
> criteria
) {
73 Criteria crit
= getSession().createCriteria(type
);
74 crit
.add(Restrictions
.ilike("persistentTitleCache", matchmode
.queryStringFrom(queryString
)));
75 crit
.setMaxResults(pagesize
);
77 for (Criterion criterion
: criteria
) {
81 crit
.addOrder(Order
.asc("persistentTitleCache"));
82 int firstItem
= (page
- 1) * pagesize
;
83 crit
.setFirstResult(firstItem
);
84 List
<T
> results
= crit
.list();
88 public int countRights(T identifiableEntity
) {
89 Query query
= getSession().createQuery("select count(rights) from " + type
.getSimpleName() + " identifiableEntity join identifiableEntity.rights rights where identifiableEntity = :identifiableEntity");
90 query
.setParameter("identifiableEntity",identifiableEntity
);
91 return ((Long
)query
.uniqueResult()).intValue();
94 public int countSources(T identifiableEntity
) {
95 Query query
= getSession().createQuery("select count(source) from OriginalSource source where source.sourcedObj = :identifiableEntity");
96 query
.setParameter("identifiableEntity",identifiableEntity
);
97 return ((Long
)query
.uniqueResult()).intValue();
100 public List
<Rights
> getRights(T identifiableEntity
, Integer pageSize
, Integer pageNumber
) {
101 Query query
= getSession().createQuery("select rights from " + type
.getSimpleName() + " identifiableEntity join identifiableEntity.rights rights where identifiableEntity = :identifiableEntity");
102 query
.setParameter("identifiableEntity",identifiableEntity
);
104 if(pageSize
!= null) {
105 query
.setMaxResults(pageSize
);
106 if(pageNumber
!= null) {
107 query
.setFirstResult(pageNumber
* pageSize
);
109 query
.setFirstResult(0);
113 return (List
<Rights
>)query
.list();
116 public List
<OriginalSource
> getSources(T identifiableEntity
, Integer pageSize
, Integer pageNumber
) {
117 Query query
= getSession().createQuery("select source from OriginalSource source where source.sourcedObj = :identifiableEntity");
118 query
.setParameter("identifiableEntity",identifiableEntity
);
120 if(pageSize
!= null) {
121 query
.setMaxResults(pageSize
);
122 if(pageNumber
!= null) {
123 query
.setFirstResult(pageNumber
* pageSize
);
125 query
.setFirstResult(0);
129 return (List
<OriginalSource
>)query
.list();
132 public List
<T
> findOriginalSourceByIdInSource(String idInSource
, String idNamespace
) {
133 Session session
= getSession();
134 Query q
= session
.createQuery(
135 "Select c from " + type
.getSimpleName() + " as c " +
136 "inner join c.sources as source " +
137 "where source.idInSource = :idInSource " +
138 " AND source.idNamespace = :idNamespace"
140 q
.setString("idInSource", idInSource
);
141 q
.setString("idNamespace", idNamespace
);
142 //TODO integrate reference in where
143 List
<T
> results
= (List
<T
>)q
.list();