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
.agent
;
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
.criterion
.Restrictions
;
18 import org
.hibernate
.envers
.query
.AuditEntity
;
19 import org
.hibernate
.envers
.query
.AuditQuery
;
20 import org
.springframework
.stereotype
.Repository
;
22 import eu
.etaxonomy
.cdm
.model
.agent
.AgentBase
;
23 import eu
.etaxonomy
.cdm
.model
.agent
.Institution
;
24 import eu
.etaxonomy
.cdm
.model
.agent
.InstitutionalMembership
;
25 import eu
.etaxonomy
.cdm
.model
.agent
.Person
;
26 import eu
.etaxonomy
.cdm
.model
.agent
.Team
;
27 import eu
.etaxonomy
.cdm
.model
.view
.AuditEvent
;
28 import eu
.etaxonomy
.cdm
.persistence
.dao
.agent
.IAgentDao
;
29 import eu
.etaxonomy
.cdm
.persistence
.dao
.hibernate
.common
.IdentifiableDaoBase
;
33 public class AgentDaoImpl
extends IdentifiableDaoBase
<AgentBase
> implements IAgentDao
{
35 @SuppressWarnings("unused")
36 private static final Logger logger
= Logger
.getLogger(AgentDaoImpl
.class);
38 public AgentDaoImpl() {
39 super(AgentBase
.class);
42 public List
<Institution
> getInstitutionByCode(String code
) {
43 AuditEvent auditEvent
= getAuditEventFromContext();
44 if(auditEvent
.equals(AuditEvent
.CURRENT_VIEW
)) {
45 Criteria crit
= getSession().createCriteria(Institution
.class);
46 crit
.add(Restrictions
.eq("code", code
));
47 return (List
<Institution
>)crit
.list();
49 AuditQuery query
= getAuditReader().createQuery().forEntitiesAtRevision(Institution
.class,auditEvent
.getRevisionNumber());
50 query
.add(AuditEntity
.property("code").eq(code
));
51 return (List
<Institution
>)query
.getResultList();
55 public int countInstitutionalMemberships(Person person
) {
56 AuditEvent auditEvent
= getAuditEventFromContext();
57 if(auditEvent
.equals(AuditEvent
.CURRENT_VIEW
)) {
58 Query query
= getSession().createQuery("select count(institutionalMembership) from InstitutionalMembership institutionalMembership where institutionalMembership.person = :person");
59 query
.setParameter("person", person
);
60 return ((Long
)query
.uniqueResult()).intValue();
62 AuditQuery query
= getAuditReader().createQuery().forEntitiesAtRevision(InstitutionalMembership
.class,auditEvent
.getRevisionNumber());
63 query
.add(AuditEntity
.relatedId("person").eq(person
.getId()));
64 query
.addProjection(AuditEntity
.id().count("id"));
65 return ((Long
)query
.getSingleResult()).intValue();
69 public int countMembers(Team team
) {
70 checkNotInPriorView("AgentDaoImpl.countMembers(Team team)");
71 Query query
= getSession().createQuery("select count(teamMember) from Team team join team.teamMembers teamMember where team = :team");
72 query
.setParameter("team", team
);
73 return ((Long
)query
.uniqueResult()).intValue();
76 public List
<InstitutionalMembership
> getInstitutionalMemberships(Person person
, Integer pageSize
, Integer pageNumber
) {
77 AuditEvent auditEvent
= getAuditEventFromContext();
78 if(auditEvent
.equals(AuditEvent
.CURRENT_VIEW
)) {
79 Query query
= getSession().createQuery("select institutionalMembership from InstitutionalMembership institutionalMembership left join fetch institutionalMembership.institute where institutionalMembership.person = :person");
80 query
.setParameter("person", person
);
81 if(pageSize
!= null) {
82 query
.setMaxResults(pageSize
);
83 if(pageNumber
!= null) {
84 query
.setFirstResult(pageNumber
* pageSize
);
86 query
.setFirstResult(0);
90 return (List
<InstitutionalMembership
>)query
.list();
92 AuditQuery query
= getAuditReader().createQuery().forEntitiesAtRevision(InstitutionalMembership
.class,auditEvent
.getRevisionNumber());
93 query
.add(AuditEntity
.relatedId("person").eq(person
.getId()));
95 if(pageSize
!= null) {
96 query
.setMaxResults(pageSize
);
97 if(pageNumber
!= null) {
98 query
.setFirstResult(pageNumber
* pageSize
);
100 query
.setFirstResult(0);
103 return (List
<InstitutionalMembership
>)query
.getResultList();
107 public List
<Person
> getMembers(Team team
, Integer pageSize
, Integer pageNumber
) {
108 checkNotInPriorView("AgentDaoImpl.getMembers(Team team, Integer pageSize, Integer pageNumber)");
109 Query query
= getSession().createQuery("select teamMember from Team team join team.teamMembers teamMember where team = :team");
110 query
.setParameter("team", team
);
112 if(pageSize
!= null) {
113 query
.setMaxResults(pageSize
);
114 if(pageNumber
!= null) {
115 query
.setFirstResult(pageNumber
* pageSize
);
117 query
.setFirstResult(0);
120 return (List
<Person
>)query
.list();