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
.reference
;
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
.IdentifiableEntity
;
27 import eu
.etaxonomy
.cdm
.model
.reference
.ISourceable
;
28 import eu
.etaxonomy
.cdm
.model
.reference
.OriginalSourceBase
;
29 import eu
.etaxonomy
.cdm
.persistence
.dao
.hibernate
.common
.CdmEntityDaoBase
;
30 import eu
.etaxonomy
.cdm
.persistence
.dao
.reference
.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);
46 public Map
<String
, ISourceable
> findOriginalSourcesByIdInSource(Class clazz
, Set
<String
> idInSourceSet
, String idNamespace
) {
47 Session session
= getSession();
48 String idInSourceString
= "";
49 for (String idInSource
: idInSourceSet
){
50 idInSourceString
= CdmUtils
.concat("','", idInSourceString
, idInSource
);
52 idInSourceString
= "'"+ idInSourceString
+ "'";
54 Query q
= session
.createQuery(
55 "SELECT source.idInSource, c FROM " + clazz
.getSimpleName() + " AS c " +
56 "INNER JOIN c.sources AS source " +
57 "WHERE source.idInSource IN ( " + idInSourceString
+ " )" +
58 " AND source.idNamespace = :idNamespace"
60 q
.setString("idNamespace", idNamespace
);
61 //TODO integrate reference in where
63 Map
<String
, ISourceable
> result
= new HashMap
<>();
65 List
<Object
[]> list
= q
.list();
66 for (Object
[] pair
: list
){
67 result
.put((String
)pair
[0], (ISourceable
)pair
[1]);
74 public List
<IdentifiableEntity
> findOriginalSourceByIdInSource(Class clazz
, String idInSource
, String idNamespace
) {
75 Session session
= getSession();
76 Query q
= session
.createQuery(
77 "Select c from " + clazz
.getSimpleName() + " as c " +
78 "inner join c.sources as source " +
79 "where source.idInSource = :idInSource " +
80 " AND source.idNamespace = :idNamespace"
82 q
.setString("idInSource", idInSource
);
83 q
.setString("idNamespace", idNamespace
);
84 //TODO integrate reference in where
85 List
<IdentifiableEntity
> results
= q
.list();
91 public List
<OriginalSourceBase
> findOriginalSourceByIdInSource(String idInSource
, String idNamespace
) {
92 Session session
= getSession();
93 Criteria crit
= session
.createCriteria(type
);
94 crit
.add(Restrictions
.eq("idInSource", idInSource
));
95 if (idNamespace
== null){
96 crit
.add(Restrictions
.isNull("idNamespace"));
98 crit
.add(Restrictions
.eq("idNamespace", idNamespace
));
100 crit
.addOrder(Order
.desc("created"));
101 List
<OriginalSourceBase
> results
= crit
.list();