Revert last commit (taxon node handling is done in taxeditor)
[cdmlib.git] / cdmlib-services / src / main / java / eu / etaxonomy / cdm / api / service / ReferenceServiceImpl.java
1 // $Id$
2 /**
3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
6 *
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.
9 */
10
11 package eu.etaxonomy.cdm.api.service;
12
13 import java.util.List;
14 import java.util.UUID;
15
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;
20
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;
28
29
30 @Service
31 @Transactional(readOnly = true)
32 public class ReferenceServiceImpl extends IdentifiableServiceBase<Reference,IReferenceDao> implements IReferenceService {
33
34 static Logger logger = Logger.getLogger(ReferenceServiceImpl.class);
35
36 @Autowired
37 private ICdmGenericDao genericDao;
38 /**
39 * Constructor
40 */
41 public ReferenceServiceImpl(){
42 if (logger.isDebugEnabled()) { logger.debug("Load ReferenceService Bean"); }
43 }
44
45 @Override
46 @Transactional(readOnly = false)
47 public void updateTitleCache(Class<? extends Reference> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<Reference> cacheStrategy, IProgressMonitor monitor) {
48 if (clazz == null){
49 clazz = Reference.class;
50 }
51 super.updateTitleCacheImpl(clazz, stepSize, cacheStrategy, monitor);
52 }
53
54
55 @Override
56 protected void setOtherCachesNull(Reference ref) {
57 if (! ref.isProtectedAbbrevTitleCache()){
58 ref.setAbbrevTitleCache(null, false);
59 }
60 }
61
62
63 @Override
64 @Autowired
65 protected void setDao(IReferenceDao dao) {
66 this.dao = dao;
67 }
68
69 @Override
70 public List<UuidAndTitleCache<Reference>> getUuidAndTitle() {
71
72 return dao.getUuidAndTitle();
73 }
74
75 @Override
76 public List<Reference> getAllReferencesForPublishing(){
77 return dao.getAllNotNomenclaturalReferencesForPublishing();
78 }
79
80 @Override
81 public List<Reference> getAllNomenclaturalReferences() {
82
83 return dao.getAllNomenclaturalReferences();
84 }
85
86 @Override
87 public List<TaxonBase> listCoveredTaxa(Reference reference, boolean includeSubordinateReferences, List<String> propertyPaths) {
88
89 List<TaxonBase> taxonList = dao.listCoveredTaxa(reference, includeSubordinateReferences, null, propertyPaths);
90
91 return taxonList;
92 }
93
94 @Override
95 public DeleteResult delete(Reference reference) {
96 //check whether the reference is used somewhere
97 DeleteResult result = isDeletable(reference, null);
98
99 if (result.isOk()){
100 dao.delete(reference);
101 }
102
103 return result;
104 }
105
106 @Override
107 @Transactional(readOnly=false)
108 public DeleteResult delete(UUID referenceUuid) {
109 return delete(dao.load(referenceUuid));
110 }
111 }