Project

General

Profile

Download (2.67 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
package eu.etaxonomy.cdm.api.service;
11

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

    
15
import org.hibernate.envers.query.criteria.AuditCriterion;
16
import org.springframework.transaction.annotation.Transactional;
17

    
18
import eu.etaxonomy.cdm.api.service.pager.Pager;
19
import eu.etaxonomy.cdm.api.service.pager.impl.DefaultPagerImpl;
20
import eu.etaxonomy.cdm.model.common.VersionableEntity;
21
import eu.etaxonomy.cdm.model.view.AuditEvent;
22
import eu.etaxonomy.cdm.model.view.AuditEventRecord;
23
import eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort;
24
import eu.etaxonomy.cdm.persistence.dao.common.IVersionableDao;
25

    
26
public abstract class VersionableServiceBase<T extends VersionableEntity, DAO extends IVersionableDao<T>> extends ServiceBase<T,DAO> implements IVersionableService<T> {
27

    
28
	@Transactional(readOnly = true)
29
	public Pager<AuditEventRecord<T>> pageAuditEvents(T t, Integer pageSize,	Integer pageNumber, AuditEventSort sort, List<String> propertyPaths) {
30
		Integer numberOfResults = dao.countAuditEvents(t, sort);
31
			
32
		List<AuditEventRecord<T>> results = new ArrayList<AuditEventRecord<T>>();
33
		if(numberOfResults > 0) { // no point checking again //TODO use AbstractPagerImpl.hasResultsInRange(numberOfResults, pageNumber, pageSize)
34
			results = dao.getAuditEvents(t, pageSize, pageNumber, sort,propertyPaths);
35
		}
36
		
37
		return new DefaultPagerImpl<AuditEventRecord<T>>(pageNumber, numberOfResults, pageSize, results);
38
	}
39

    
40
	@Transactional(readOnly = true)
41
	public AuditEventRecord<T> getNextAuditEvent(T t) {
42
		return dao.getNextAuditEvent(t);
43
	}
44

    
45
	@Transactional(readOnly = true)
46
	public AuditEventRecord<T> getPreviousAuditEvent(T t) {
47
		return dao.getPreviousAuditEvent(t);
48
	}
49
	
50
	@Transactional(readOnly = true)
51
	public Pager<AuditEventRecord<T>> pageAuditEvents(Class<? extends T> clazz,AuditEvent from,AuditEvent to, List<AuditCriterion> criteria, Integer pageSize, Integer pageNumber, AuditEventSort sort,List<String> propertyPaths) {
52
		Integer numberOfResults = dao.countAuditEvents(clazz, from, to, criteria);
53
		
54
		List<AuditEventRecord<T>> results = new ArrayList<AuditEventRecord<T>>();
55
		if(numberOfResults > 0) { // no point checking again //TODO use AbstractPagerImpl.hasResultsInRange(numberOfResults, pageNumber, pageSize)
56
			results = dao.getAuditEvents(clazz,from,to,criteria, pageSize, pageNumber, sort,propertyPaths);
57
		}
58
		
59
		return new DefaultPagerImpl<AuditEventRecord<T>>(pageNumber, numberOfResults, pageSize, results);
60
	}
61
}
(74-74/76)