svn keyword property "Id" added
[cdmlib.git] / cdmlib-services / src / main / java / eu / etaxonomy / cdm / api / service / OccurrenceServiceImpl.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.ArrayList;
14 import java.util.Collection;
15 import java.util.List;
16 import java.util.Map;
17 import java.util.UUID;
18
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;
23
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.common.Annotation;
27 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
28 import eu.etaxonomy.cdm.model.location.WaterbodyOrCountry;
29 import eu.etaxonomy.cdm.model.media.Media;
30 import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;
31 import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;
32 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
33 import eu.etaxonomy.cdm.persistence.dao.common.IDefinedTermDao;
34 import eu.etaxonomy.cdm.persistence.dao.occurrence.ICollectionDao;
35 import eu.etaxonomy.cdm.persistence.dao.occurrence.IOccurrenceDao;
36
37 /**
38 * @author a.babadshanjan
39 * @created 01.09.2008
40 */
41 @Service
42 @Transactional(readOnly = true)
43 public class OccurrenceServiceImpl extends IdentifiableServiceBase<SpecimenOrObservationBase,IOccurrenceDao> implements IOccurrenceService {
44
45 static private final Logger logger = Logger.getLogger(OccurrenceServiceImpl.class);
46
47 @Autowired
48 private IDefinedTermDao definedTermDao;
49
50 @Autowired
51 private IOccurrenceDao occurenceDao;
52
53 @Autowired
54 private ICollectionDao collectionDao;
55
56
57 public OccurrenceServiceImpl() {
58 logger.debug("Load OccurrenceService Bean");
59 }
60
61 /* (non-Javadoc)
62 * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getAllspecimenOrObservationBases(int, int)
63 */
64 public List<SpecimenOrObservationBase> getAllSpecimenOrObservationBases(
65 int limit, int start) {
66 return dao.list(limit, start);
67 }
68
69 /* (non-Javadoc)
70 * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#saveSpecimenOrObservationBaseAll(java.util.Collection)
71 */
72 @Transactional(readOnly = false)
73 public Map<UUID, ? extends SpecimenOrObservationBase> saveSpecimenOrObservationBaseAll(
74 Collection<? extends SpecimenOrObservationBase> specimenOrObservationBaseCollection) {
75 return saveCdmObjectAll(specimenOrObservationBaseCollection);
76 }
77
78
79 @Transactional(readOnly = false)
80 public UUID saveSpecimenOrObservationBase(
81 SpecimenOrObservationBase specimenOrObservationBase) {
82 return super.saveCdmObject(specimenOrObservationBase);
83 }
84
85 /* (non-Javadoc)
86 * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#generateTitleCache()
87 */
88 public void generateTitleCache() {
89 // TODO Auto-generated method stub
90 logger.warn("Not yet implemented");
91 }
92
93 public WaterbodyOrCountry getCountryByIso(String iso639) {
94 return this.definedTermDao.getCountryByIso(iso639);
95
96 }
97
98 public List<WaterbodyOrCountry> getWaterbodyOrCountryByName(String name) {
99 List<? extends DefinedTermBase> terms = this.definedTermDao.getDefinedTermByRepresentationText(name, WaterbodyOrCountry.class);
100 List<WaterbodyOrCountry> countries = new ArrayList<WaterbodyOrCountry>();
101 for (int i=0;i<terms.size();i++){
102 countries.add((WaterbodyOrCountry)terms.get(i));
103 }
104 return countries;
105 }
106
107 public List<eu.etaxonomy.cdm.model.occurrence.Collection> searchCollectionByCode(String code) {
108 return this.collectionDao.getCollectionByCode(code);
109 }
110
111 @Autowired
112 protected void setDao(IOccurrenceDao dao) {
113 this.dao = dao;
114 }
115
116 public Pager<DerivationEvent> getDerivationEvents(SpecimenOrObservationBase occurence, Integer pageSize,Integer pageNumber) {
117 Integer numberOfResults = dao.countDerivationEvents(occurence);
118
119 List<DerivationEvent> results = new ArrayList<DerivationEvent>();
120 if(numberOfResults > 0) { // no point checking again
121 results = dao.getDerivationEvents(occurence, pageSize, pageNumber);
122 }
123
124 return new DefaultPagerImpl<DerivationEvent>(pageNumber, numberOfResults, pageSize, results);
125 }
126
127 public Pager<DeterminationEvent> getDeterminations(SpecimenOrObservationBase occurence, Integer pageSize,Integer pageNumber) {
128 Integer numberOfResults = dao.countDeterminations(occurence);
129
130 List<DeterminationEvent> results = new ArrayList<DeterminationEvent>();
131 if(numberOfResults > 0) { // no point checking again
132 results = dao.getDeterminations(occurence, pageSize, pageNumber);
133 }
134
135 return new DefaultPagerImpl<DeterminationEvent>(pageNumber, numberOfResults, pageSize, results);
136 }
137
138 public Pager<Media> getMedia(SpecimenOrObservationBase occurence,Integer pageSize, Integer pageNumber) {
139 Integer numberOfResults = dao.countMedia(occurence);
140
141 List<Media> results = new ArrayList<Media>();
142 if(numberOfResults > 0) { // no point checking again
143 results = dao.getMedia(occurence, pageSize, pageNumber);
144 }
145
146 return new DefaultPagerImpl<Media>(pageNumber, numberOfResults, pageSize, results);
147 }
148
149 public UUID saveCollection(eu.etaxonomy.cdm.model.occurrence.Collection collection) {
150 return collectionDao.save(collection);
151 }
152
153 }