2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
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.
10 package eu
.etaxonomy
.cdm
.persistence
.dao
.hibernate
.common
;
12 import java
.util
.HashMap
;
13 import java
.util
.List
;
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
;
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
;
37 public class OriginalSourceDaoImpl
extends CdmEntityDaoBase
<OriginalSourceBase
> implements IOriginalSourceDao
{
38 @SuppressWarnings("unused")
39 private static final Logger logger
= Logger
.getLogger(OriginalSourceDaoImpl
.class);
41 public OriginalSourceDaoImpl() {
42 super(OriginalSourceBase
.class);
47 * @see eu.etaxonomy.cdm.persistence.dao.common.IOriginalSourceDao#findOriginalSourcesByIdInSource(java.lang.Class, java.util.List, java.lang.String)
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
);
55 idInSourceString
= "'"+ idInSourceString
+ "'";
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"
63 q
.setString("idNamespace", idNamespace
);
64 //TODO integrate reference in where
66 Map
<String
, ISourceable
> result
= new HashMap
<String
, ISourceable
>();
68 List
<Object
[]> list
= q
.list();
69 for (Object
[] pair
: list
){
70 result
.put((String
)pair
[0], (ISourceable
)pair
[1]);
78 * @see eu.etaxonomy.cdm.persistence.dao.common.IOriginalSourceDao#findOriginalSourceByIdInSource(java.lang.Class, java.lang.String, java.lang.String)
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"
88 q
.setString("idInSource", idInSource
);
89 q
.setString("idNamespace", idNamespace
);
90 //TODO integrate reference in where
91 List
<IdentifiableEntity
> results
= q
.list();
97 * @see eu.etaxonomy.cdm.persistence.dao.common.IOriginalSourceDao#findOriginalSourceByIdInSource(java.lang.String, java.lang.String)
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"));
106 crit
.add(Restrictions
.eq("idNamespace", idNamespace
));
108 crit
.addOrder(Order
.desc("created"));
109 List
<OriginalSourceBase
> results
= crit
.list();