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
.List
;
14 import java
.util
.UUID
;
16 import org
.apache
.log4j
.Logger
;
17 import org
.springframework
.beans
.factory
.annotation
.Autowired
;
18 import org
.springframework
.stereotype
.Service
;
19 import org
.springframework
.transaction
.annotation
.Transactional
;
21 import eu
.etaxonomy
.cdm
.common
.monitor
.IProgressMonitor
;
22 import eu
.etaxonomy
.cdm
.model
.reference
.Reference
;
23 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonBase
;
24 import eu
.etaxonomy
.cdm
.persistence
.dao
.common
.ICdmGenericDao
;
25 import eu
.etaxonomy
.cdm
.persistence
.dao
.reference
.IReferenceDao
;
26 import eu
.etaxonomy
.cdm
.persistence
.dto
.UuidAndTitleCache
;
27 import eu
.etaxonomy
.cdm
.strategy
.cache
.common
.IIdentifiableEntityCacheStrategy
;
31 @Transactional(readOnly
= true)
32 public class ReferenceServiceImpl
extends IdentifiableServiceBase
<Reference
,IReferenceDao
> implements IReferenceService
{
34 static Logger logger
= Logger
.getLogger(ReferenceServiceImpl
.class);
37 private ICdmGenericDao genericDao
;
41 public ReferenceServiceImpl(){
42 if (logger
.isDebugEnabled()) { logger
.debug("Load ReferenceService Bean"); }
46 @Transactional(readOnly
= false)
47 public void updateTitleCache(Class
<?
extends Reference
> clazz
, Integer stepSize
, IIdentifiableEntityCacheStrategy
<Reference
> cacheStrategy
, IProgressMonitor monitor
) {
49 clazz
= Reference
.class;
51 super.updateTitleCacheImpl(clazz
, stepSize
, cacheStrategy
, monitor
);
56 protected void setOtherCachesNull(Reference ref
) {
57 if (! ref
.isProtectedAbbrevTitleCache()){
58 ref
.setAbbrevTitleCache(null, false);
65 protected void setDao(IReferenceDao dao
) {
70 public List
<UuidAndTitleCache
<Reference
>> getUuidAndTitle() {
72 return dao
.getUuidAndTitle();
76 public List
<Reference
> getAllReferencesForPublishing(){
77 return dao
.getAllNotNomenclaturalReferencesForPublishing();
81 public List
<Reference
> getAllNomenclaturalReferences() {
83 return dao
.getAllNomenclaturalReferences();
87 public List
<TaxonBase
> listCoveredTaxa(Reference reference
, boolean includeSubordinateReferences
, List
<String
> propertyPaths
) {
89 List
<TaxonBase
> taxonList
= dao
.listCoveredTaxa(reference
, includeSubordinateReferences
, null, propertyPaths
);
95 public DeleteResult
delete(Reference reference
) {
96 //check whether the reference is used somewhere
97 DeleteResult result
= isDeletable(reference
, null);
100 dao
.delete(reference
);
107 @Transactional(readOnly
=false)
108 public DeleteResult
delete(UUID referenceUuid
) {
109 return delete(dao
.load(referenceUuid
));