Project

General

Profile

Download (4 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2007 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.persistence.dao.hibernate.common;
11

    
12
import java.util.HashMap;
13
import java.util.List;
14
import java.util.Map;
15
import java.util.Set;
16

    
17
import org.apache.log4j.Logger;
18
import org.hibernate.Criteria;
19
import org.hibernate.Query;
20
import org.hibernate.Session;
21
import org.hibernate.criterion.Order;
22
import org.hibernate.criterion.Restrictions;
23
import org.springframework.stereotype.Repository;
24

    
25
import eu.etaxonomy.cdm.common.CdmUtils;
26
import eu.etaxonomy.cdm.model.common.ISourceable;
27
import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
28
import eu.etaxonomy.cdm.model.common.OriginalSourceBase;
29
import eu.etaxonomy.cdm.persistence.dao.common.IOriginalSourceDao;
30

    
31
/**
32
 * @author a.mueller
33
 * @since 17.07.2008
34
 * @version 1.0
35
 */
36
@Repository
37
public class OriginalSourceDaoImpl extends CdmEntityDaoBase<OriginalSourceBase> implements	IOriginalSourceDao {
38
	@SuppressWarnings("unused")
39
	private static final Logger logger = Logger.getLogger(OriginalSourceDaoImpl.class);
40

    
41
	public OriginalSourceDaoImpl() {
42
		super(OriginalSourceBase.class); 
43
	}
44

    
45

    
46
	/* (non-Javadoc)
47
	 * @see eu.etaxonomy.cdm.persistence.dao.common.IOriginalSourceDao#findOriginalSourcesByIdInSource(java.lang.Class, java.util.List, java.lang.String)
48
	 */
49
	public Map<String, ISourceable> findOriginalSourcesByIdInSource(Class clazz, Set<String> idInSourceSet, String idNamespace) {
50
		Session session = getSession();
51
		String idInSourceString = "";
52
		for (String idInSource : idInSourceSet){
53
			idInSourceString = CdmUtils.concat("','", idInSourceString, idInSource);
54
		}
55
		idInSourceString = "'"+ idInSourceString + "'";
56

    
57
		Query q = session.createQuery(
58
                "SELECT source.idInSource, c FROM " + clazz.getSimpleName() + " AS c " +
59
                "INNER JOIN c.sources AS source " +
60
                "WHERE source.idInSource IN ( " + idInSourceString + " )" + 
61
                	" AND source.idNamespace = :idNamespace"
62
            );
63
		q.setString("idNamespace", idNamespace);
64
		//TODO integrate reference in where 
65
		
66
		Map<String, ISourceable> result = new HashMap<String, ISourceable>();
67
		
68
		List<Object[]> list = q.list();
69
		for (Object[] pair : list){
70
			result.put((String)pair[0], (ISourceable)pair[1]);
71
		}
72
		
73
		return result;
74
	}
75
	
76
	
77
	/* (non-Javadoc)
78
	 * @see eu.etaxonomy.cdm.persistence.dao.common.IOriginalSourceDao#findOriginalSourceByIdInSource(java.lang.Class, java.lang.String, java.lang.String)
79
	 */
80
	public List<IdentifiableEntity> findOriginalSourceByIdInSource(Class clazz, String idInSource, String idNamespace) {
81
		Session session = getSession();
82
		Query q = session.createQuery(
83
                "Select c from " + clazz.getSimpleName() + " as c " +
84
                "inner join c.sources as source " +
85
                "where source.idInSource = :idInSource " + 
86
                	" AND source.idNamespace = :idNamespace"
87
            );
88
		q.setString("idInSource", idInSource);
89
		q.setString("idNamespace", idNamespace);
90
		//TODO integrate reference in where 
91
		List<IdentifiableEntity> results = q.list();
92
		
93
		return results;
94
	}
95
	
96
	/* (non-Javadoc)
97
	 * @see eu.etaxonomy.cdm.persistence.dao.common.IOriginalSourceDao#findOriginalSourceByIdInSource(java.lang.String, java.lang.String)
98
	 */
99
	public List<OriginalSourceBase> findOriginalSourceByIdInSource(String idInSource, String idNamespace) {
100
		Session session = getSession();
101
		Criteria crit = session.createCriteria(type);
102
		crit.add(Restrictions.eq("idInSource", idInSource));
103
		if (idNamespace == null){
104
			crit.add(Restrictions.isNull("idNamespace"));
105
		}else{
106
			crit.add(Restrictions.eq("idNamespace", idNamespace));
107
		}
108
		crit.addOrder(Order.desc("created"));
109
		List<OriginalSourceBase> results = crit.list();
110
		
111
		return results;
112
	}
113

    
114

    
115
}
(17-17/24)