additional service methods for new REST service
[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.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.name.BotanicalName;
27 import eu.etaxonomy.cdm.model.name.HybridRelationship;
28 import eu.etaxonomy.cdm.model.name.HybridRelationshipType;
29 import eu.etaxonomy.cdm.model.reference.ReferenceBase;
30 import eu.etaxonomy.cdm.persistence.dao.reference.IReferenceDao;
31 import eu.etaxonomy.cdm.persistence.query.OrderHint;
32
33
34 @Service
35 @Transactional(readOnly = true)
36 public class ReferenceServiceImpl extends IdentifiableServiceBase<ReferenceBase,IReferenceDao> implements IReferenceService {
37
38 static Logger logger = Logger.getLogger(ReferenceServiceImpl.class);
39
40 /**
41 * Constructor
42 */
43 public ReferenceServiceImpl(){
44 if (logger.isDebugEnabled()) { logger.debug("Load ReferenceService Bean"); }
45 }
46
47 public ReferenceBase getReferenceByUuid(UUID uuid) {
48 return super.getCdmObjectByUuid(uuid);
49 }
50
51 public List<ReferenceBase> getReferencesByTitle(String title) {
52 return super.findCdmObjectsByTitle(title);
53 }
54
55 public List<ReferenceBase> getReferencesByTitle(String title, Class<ReferenceBase> clazz) {
56 return super.findCdmObjectsByTitle(title, clazz);
57 }
58
59 @Transactional(readOnly = false)
60 public UUID saveReference(ReferenceBase reference) {
61 return super.saveCdmObject(reference);
62 }
63
64 @Transactional(readOnly = false)
65 public Map<UUID, ReferenceBase> saveReferenceAll(Collection<ReferenceBase> referenceCollection){
66 return saveCdmObjectAll(referenceCollection);
67 }
68
69 /* (non-Javadoc)
70 * @see eu.etaxonomy.cdm.api.service.IReferenceService#getAllReferences(int, int)
71 */
72 @Deprecated
73 public List<ReferenceBase> getAllReferences(int limit, int start){
74 return dao.list(limit, start);
75 }
76
77 /* (non-Javadoc)
78 * @see eu.etaxonomy.cdm.api.service.IReferenceService#getAllReferences(java.lang.Integer, java.lang.Integer)
79 */
80 public Pager<ReferenceBase> getAllReferences(Integer pageSize, Integer pageNumber, List<OrderHint> orderHints) {
81 Integer numberOfResults = dao.count();
82
83 List<ReferenceBase> results = new ArrayList<ReferenceBase>();
84 if(numberOfResults > 0) { // no point checking again
85 Integer start = pageSize == null ? 0 : pageSize * (pageNumber - 1);
86 results = dao.list(pageSize, start, orderHints); //TODO implement pager like method in dao?
87 }
88 return new DefaultPagerImpl<ReferenceBase>(pageNumber, numberOfResults, pageSize, results);
89 }
90
91 public Pager<ReferenceBase> getAllReferences(Integer pageSize, Integer pageNumber) {
92 return getAllReferences(pageSize, pageNumber, null);
93 }
94
95 public void generateTitleCache() {
96 logger.warn("Not yet implemented");
97 // TODO Auto-generated method stub
98
99 }
100
101 @Autowired
102 protected void setDao(IReferenceDao dao) {
103 this.dao = dao;
104 }
105
106
107
108 }