Project

General

Profile

Download (6.54 KB) Statistics
| Branch: | Tag: | Revision:
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.List;
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.Propagation;
20
import org.springframework.transaction.annotation.Transactional;
21

    
22
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
23
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeConfigurator;
24
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeNotSupportedException;
25
import eu.etaxonomy.cdm.api.service.pager.Pager;
26
import eu.etaxonomy.cdm.api.service.pager.impl.DefaultPagerImpl;
27
import eu.etaxonomy.cdm.model.common.DefinedTermBase;
28
import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;
29
import eu.etaxonomy.cdm.model.location.WaterbodyOrCountry;
30
import eu.etaxonomy.cdm.model.media.Media;
31
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
32
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
33
import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;
34
import eu.etaxonomy.cdm.model.occurrence.DerivedUnitBase;
35
import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;
36
import eu.etaxonomy.cdm.model.occurrence.FieldObservation;
37
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
38
import eu.etaxonomy.cdm.persistence.dao.common.IDefinedTermDao;
39
import eu.etaxonomy.cdm.persistence.dao.occurrence.IOccurrenceDao;
40
import eu.etaxonomy.cdm.persistence.query.OrderHint;
41

    
42
/**
43
 * @author a.babadshanjan
44
 * @created 01.09.2008
45
 */
46
@Service
47
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
48
public class OccurrenceServiceImpl extends IdentifiableServiceBase<SpecimenOrObservationBase,IOccurrenceDao> implements IOccurrenceService {
49

    
50
	static private final Logger logger = Logger.getLogger(OccurrenceServiceImpl.class);
51
	
52
	@Autowired
53
	private IDefinedTermDao definedTermDao;	
54

    
55
	public OccurrenceServiceImpl() {
56
		logger.debug("Load OccurrenceService Bean");
57
	}
58
	
59
	/* (non-Javadoc)
60
	 * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache()
61
	 */
62
	@Override
63
	public void updateTitleCache() {
64
		Class<SpecimenOrObservationBase> clazz = SpecimenOrObservationBase.class;
65
		super.updateTitleCache(clazz, null, null);
66
	}
67

    
68
	/**
69
	 * FIXME Candidate for harmonization
70
	 * move to termService
71
	 */
72
	public WaterbodyOrCountry getCountryByIso(String iso639) {
73
		return this.definedTermDao.getCountryByIso(iso639);
74
		
75
	}
76

    
77
	/**
78
	 * FIXME Candidate for harmonization
79
	 * move to termService
80
	 */
81
	public List<WaterbodyOrCountry> getWaterbodyOrCountryByName(String name) {
82
		List<? extends DefinedTermBase> terms = this.definedTermDao.getDefinedTermByRepresentationText(name, WaterbodyOrCountry.class);
83
		List<WaterbodyOrCountry> countries = new ArrayList<WaterbodyOrCountry>();
84
		for (int i=0;i<terms.size();i++){
85
			countries.add((WaterbodyOrCountry)terms.get(i));
86
		}
87
		return countries;
88
	}
89

    
90
	@Autowired
91
	protected void setDao(IOccurrenceDao dao) {
92
		this.dao = dao;
93
	}
94

    
95
	public Pager<DerivationEvent> getDerivationEvents(SpecimenOrObservationBase occurence, Integer pageSize,Integer pageNumber, List<String> propertyPaths) {
96
        Integer numberOfResults = dao.countDerivationEvents(occurence);
97
		
98
		List<DerivationEvent> results = new ArrayList<DerivationEvent>();
99
		if(numberOfResults > 0) { // no point checking again
100
			results = dao.getDerivationEvents(occurence, pageSize, pageNumber,propertyPaths); 
101
		}
102
		
103
		return new DefaultPagerImpl<DerivationEvent>(pageNumber, numberOfResults, pageSize, results);
104
	}
105

    
106
	public Pager<DeterminationEvent> getDeterminations(SpecimenOrObservationBase occurrence, TaxonBase taxonBase, Integer pageSize,Integer pageNumber, List<String> propertyPaths) {
107
        Integer numberOfResults = dao.countDeterminations(occurrence, taxonBase);
108
		
109
		List<DeterminationEvent> results = new ArrayList<DeterminationEvent>();
110
		if(numberOfResults > 0) { // no point checking again
111
			results = dao.getDeterminations(occurrence,taxonBase, pageSize, pageNumber, propertyPaths); 
112
		}
113
		
114
		return new DefaultPagerImpl<DeterminationEvent>(pageNumber, numberOfResults, pageSize, results);
115
	}
116

    
117
	public Pager<Media> getMedia(SpecimenOrObservationBase occurence,Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
118
        Integer numberOfResults = dao.countMedia(occurence);
119
		
120
		List<Media> results = new ArrayList<Media>();
121
		if(numberOfResults > 0) { // no point checking again
122
			results = dao.getMedia(occurence, pageSize, pageNumber, propertyPaths); 
123
		}
124
		
125
		return new DefaultPagerImpl<Media>(pageNumber, numberOfResults, pageSize, results);
126
	}
127

    
128
	public Pager<SpecimenOrObservationBase> list(Class<? extends SpecimenOrObservationBase> type, TaxonBase determinedAs, Integer pageSize, Integer pageNumber,	List<OrderHint> orderHints, List<String> propertyPaths) {
129
		Integer numberOfResults = dao.count(type,determinedAs);
130
		List<SpecimenOrObservationBase> results = new ArrayList<SpecimenOrObservationBase>();
131
		pageNumber = pageNumber == null ? 0 : pageNumber;
132
		if(numberOfResults > 0) { // no point checking again
133
			Integer start = pageSize == null ? 0 : pageSize * pageNumber;
134
			results = dao.list(type,determinedAs, pageSize, start, orderHints,propertyPaths);
135
		}
136
		return new DefaultPagerImpl<SpecimenOrObservationBase>(pageNumber, numberOfResults, pageSize, results);	}
137

    
138
	@Override
139
	public List<UuidAndTitleCache<DerivedUnitBase>> getDerivedUnitBaseUuidAndTitleCache() {
140
		return dao.getDerivedUnitBaseUuidAndTitleCache();
141
	}
142

    
143
	@Override
144
	public List<UuidAndTitleCache<FieldObservation>> getFieldObservationUuidAndTitleCache() {
145
		return dao.getFieldObservationUuidAndTitleCache();
146
	}
147

    
148
	/* (non-Javadoc)
149
	 * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getDerivedUnitFacade(eu.etaxonomy.cdm.model.occurrence.DerivedUnitBase)
150
	 */
151
	@Override
152
	public DerivedUnitFacade getDerivedUnitFacade(DerivedUnitBase derivedUnit, List<String> propertyPaths) throws DerivedUnitFacadeNotSupportedException {
153
		derivedUnit = (DerivedUnitBase<?>)dao.load(derivedUnit.getUuid(), null);
154
		DerivedUnitFacadeConfigurator config = DerivedUnitFacadeConfigurator.NewInstance();
155
		DerivedUnitFacade derivedUnitFacade = DerivedUnitFacade.NewInstance(derivedUnit, config);
156
		return derivedUnitFacade;
157
	}
158
}
(55-55/67)