Project

General

Profile

Download (4.83 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2009 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/ 
9

    
10
package eu.etaxonomy.cdm.api.service;
11

    
12
import java.util.ArrayList;
13
import java.util.List;
14
import java.util.UUID;
15

    
16
import org.springframework.beans.factory.annotation.Autowired;
17
import org.springframework.stereotype.Service;
18
import org.springframework.transaction.annotation.Propagation;
19
import org.springframework.transaction.annotation.Transactional;
20

    
21
import eu.etaxonomy.cdm.api.service.pager.Pager;
22
import eu.etaxonomy.cdm.api.service.pager.impl.AbstractPagerImpl;
23
import eu.etaxonomy.cdm.api.service.pager.impl.DefaultPagerImpl;
24
import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
25
import eu.etaxonomy.cdm.model.description.PolytomousKey;
26
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
27
import eu.etaxonomy.cdm.persistence.dao.description.IIdentificationKeyDao;
28
import eu.etaxonomy.cdm.persistence.dao.description.IPolytomousKeyDao;
29
import eu.etaxonomy.cdm.persistence.dao.description.IPolytomousKeyNodeDao;
30
import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao;
31
import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
32

    
33
@Service
34
@Transactional(propagation = Propagation.SUPPORTS, readOnly = false)
35
public class PolytomousKeyServiceImpl extends IdentifiableServiceBase<PolytomousKey, IPolytomousKeyDao> implements IPolytomousKeyService {
36

    
37
	private IIdentificationKeyDao identificationKeyDao;
38
	private ITaxonDao taxonDao;
39
	
40
//	private IPolytomousKeyNodeDao nodeDao;
41

    
42

    
43
	@Autowired
44
	protected void setDao(IPolytomousKeyDao dao) {
45
		this.dao = dao;
46
	}
47
	
48
	@Autowired
49
	protected void setDao(IIdentificationKeyDao identificationKeyDao) {
50
		this.identificationKeyDao = identificationKeyDao;
51
	}
52
	
53
	@Autowired
54
	protected void setDao(ITaxonDao taxonDao) {
55
		this.taxonDao = taxonDao;
56
	}
57

    
58
//	@Autowired
59
//	protected void setDao(IPolytomousKeyNodeDao nodeDao) {
60
//		this.nodeDao = nodeDao;
61
//	}
62

    
63

    
64
	/* (non-Javadoc)
65
	 * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache(java.lang.Integer, eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy)
66
	 */
67
	@Override
68
	public void updateTitleCache(Class<? extends PolytomousKey> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<PolytomousKey> cacheStrategy, IProgressMonitor monitor) {
69
		if (clazz == null){
70
			clazz = PolytomousKey.class;
71
		}
72
		super.updateTitleCacheImpl(clazz, stepSize, cacheStrategy, monitor);
73
	}
74
	
75

    
76
	/* (non-Javadoc)
77
	 * @see eu.etaxonomy.cdm.api.service.IFeatureTreeService#loadWithNodes(java.util.UUID, java.util.List, java.util.List)
78
	 */
79
	public PolytomousKey loadWithNodes(UUID uuid, List<String> propertyPaths, List<String> nodePaths) {
80
		
81
		if(nodePaths == null){
82
			nodePaths = new ArrayList<String>();
83
		}
84
		nodePaths.add("children");
85
		
86
		List<String> rootPaths = new ArrayList<String>();
87
		rootPaths.add("root");
88
		for(String path : nodePaths) {
89
			rootPaths.add("root." + path);
90
		}
91
		
92
		if(propertyPaths != null) { 
93
		    rootPaths.addAll(propertyPaths);
94
		}
95
		
96
		PolytomousKey polytomousKey = load(uuid, rootPaths);
97
		dao.loadNodes(polytomousKey.getRoot(),nodePaths);
98
		return polytomousKey;
99
	}
100
	
101
	/**
102
	 * Returns the polytomous key specified by the given <code>uuid</code>.
103
	 *  
104
	 * @see eu.etaxonomy.cdm.api.service.ServiceBase#load(java.util.UUID, java.util.List)
105
	 */
106
	@Override
107
	public PolytomousKey load(UUID uuid, List<String> propertyPaths) {
108
		return super.load(uuid, propertyPaths);
109
	}
110

    
111

    
112
	/* (non-Javadoc)
113
	 * @see eu.etaxonomy.cdm.api.service.IPolytomousKeyService#findByTaxonomicScope(eu.etaxonomy.cdm.model.taxon.TaxonBase, java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List)
114
	 */
115
	@Override
116
	public Pager<PolytomousKey> findByTaxonomicScope(
117
			TaxonBase taxon, Integer pageSize,
118
			Integer pageNumber, List<String> propertyPaths) {
119
		
120
		List<PolytomousKey> list = new ArrayList<PolytomousKey>();
121
		taxon = taxonDao.findById(taxon.getId());
122
		Integer numberOfResults = identificationKeyDao.countByTaxonomicScope(taxon, PolytomousKey.class).intValue();
123
		if(AbstractPagerImpl.hasResultsInRange(numberOfResults, pageNumber, pageSize)){
124
			list = identificationKeyDao.findByTaxonomicScope(taxon, PolytomousKey.class, pageSize, pageNumber, propertyPaths);
125
		}
126
		Pager<PolytomousKey> pager = new DefaultPagerImpl<PolytomousKey>(pageNumber, numberOfResults, pageSize, list);
127
		return pager;
128
	}
129

    
130
//	/* (non-Javadoc)
131
//	 * @see eu.etaxonomy.cdm.api.service.ServiceBase#delete(eu.etaxonomy.cdm.model.common.CdmBase)
132
//	 */
133
//	@Override
134
//	public UUID delete(PolytomousKey key) {
135
//		
136
////		nodeDao.deleteForKey(key);
137
//		
138
//		return super.delete(key);
139
//	}
140
	
141
	
142
	
143
}
(72-72/83)