3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
11 package eu
.etaxonomy
.cdm
.api
.service
;
13 import java
.util
.ArrayList
;
14 import java
.util
.Collection
;
15 import java
.util
.List
;
17 import java
.util
.UUID
;
19 import org
.apache
.log4j
.Logger
;
20 import org
.springframework
.beans
.factory
.annotation
.Autowired
;
21 import org
.springframework
.stereotype
.Service
;
22 import org
.springframework
.transaction
.annotation
.Transactional
;
24 import eu
.etaxonomy
.cdm
.api
.service
.pager
.Pager
;
25 import eu
.etaxonomy
.cdm
.api
.service
.pager
.impl
.DefaultPagerImpl
;
26 import eu
.etaxonomy
.cdm
.model
.name
.BotanicalName
;
27 import eu
.etaxonomy
.cdm
.model
.name
.HybridRelationship
;
28 import eu
.etaxonomy
.cdm
.model
.name
.HybridRelationshipType
;
29 import eu
.etaxonomy
.cdm
.model
.reference
.ReferenceBase
;
30 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonBase
;
31 import eu
.etaxonomy
.cdm
.persistence
.dao
.reference
.IReferenceDao
;
32 import eu
.etaxonomy
.cdm
.persistence
.query
.OrderHint
;
36 @Transactional(readOnly
= true)
37 public class ReferenceServiceImpl
extends IdentifiableServiceBase
<ReferenceBase
,IReferenceDao
> implements IReferenceService
{
39 static Logger logger
= Logger
.getLogger(ReferenceServiceImpl
.class);
44 public ReferenceServiceImpl(){
45 if (logger
.isDebugEnabled()) { logger
.debug("Load ReferenceService Bean"); }
49 * FIXME Candidate for harmonization
52 public ReferenceBase
getReferenceByUuid(UUID uuid
) {
53 return super.getCdmObjectByUuid(uuid
);
57 * FIXME Candidate for harmonization
60 public List
<ReferenceBase
> getReferencesByTitle(String title
) {
61 return super.findCdmObjectsByTitle(title
);
64 public List
<ReferenceBase
> getReferencesByTitle(String title
, Class
<ReferenceBase
> clazz
) {
65 return super.findCdmObjectsByTitle(title
, clazz
);
69 * FIXME Candidate for harmonization
72 @Transactional(readOnly
= false)
73 public UUID
saveReference(ReferenceBase reference
) {
74 return super.saveCdmObject(reference
);
78 * FIXME Candidate for harmonization
79 * save(Set<Reference> references)
81 @Transactional(readOnly
= false)
82 public Map
<UUID
, ReferenceBase
> saveReferenceAll(Collection
<ReferenceBase
> referenceCollection
){
83 return saveCdmObjectAll(referenceCollection
);
87 * FIXME Candidate for harmonization
90 * @see eu.etaxonomy.cdm.api.service.IReferenceService#getAllReferences(int, int)
93 public List
<ReferenceBase
> getAllReferences(int limit
, int start
){
94 return dao
.list(limit
, start
);
98 * FIXME Candidate for harmonization
101 * @see eu.etaxonomy.cdm.api.service.IReferenceService#getAllReferences(java.lang.Integer, java.lang.Integer)
103 public Pager
<ReferenceBase
> getAllReferences(Integer pageSize
, Integer pageNumber
, List
<OrderHint
> orderHints
) {
104 Integer numberOfResults
= dao
.count();
106 List
<ReferenceBase
> results
= new ArrayList
<ReferenceBase
>();
107 if(numberOfResults
> 0) { // no point checking again
108 Integer start
= pageSize
== null ?
0 : pageSize
* (pageNumber
- 1);
109 results
= dao
.list(pageSize
, start
, orderHints
); //TODO implement pager like method in dao?
111 return new DefaultPagerImpl
<ReferenceBase
>(pageNumber
, numberOfResults
, pageSize
, results
);
115 * FIXME Candidate for harmonization
118 public Pager
<ReferenceBase
> getAllReferences(Integer pageSize
, Integer pageNumber
) {
119 return getAllReferences(pageSize
, pageNumber
, null);
122 public void generateTitleCache() {
123 logger
.warn("Not yet implemented");
124 // TODO Auto-generated method stub
129 protected void setDao(IReferenceDao dao
) {
133 public Pager
<ReferenceBase
> search(Class
<?
extends ReferenceBase
> clazz
, String queryString
, Integer pageSize
, Integer pageNumber
, List
<OrderHint
> orderHints
, List
<String
> propertyPaths
) {
134 Integer numberOfResults
= dao
.count(clazz
,queryString
);
136 List
<ReferenceBase
> results
= new ArrayList
<ReferenceBase
>();
137 if(numberOfResults
> 0) { // no point checking again
138 results
= dao
.search(clazz
,queryString
, pageSize
, pageNumber
, orderHints
, propertyPaths
);
141 return new DefaultPagerImpl
<ReferenceBase
>(pageNumber
, numberOfResults
, pageSize
, results
);