Revision 3bc8dd61
Added by Andreas Müller over 4 years ago
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/reference/OriginalSourceDaoImpl.java | ||
---|---|---|
42 | 42 |
} |
43 | 43 |
|
44 | 44 |
@Override |
45 |
public Map<String, ISourceable> findOriginalSourcesByIdInSource(Class clazz, Set<String> idInSourceSet, String idNamespace) { |
|
46 |
Session session = getSession(); |
|
45 |
public <S extends ISourceable> Map<String, S> findOriginalSourcesByIdInSource(Class<S> clazz, Set<String> idInSourceSet, String idNamespace) { |
|
46 |
|
|
47 |
Session session = getSession(); |
|
47 | 48 |
String idInSourceString = ""; |
48 | 49 |
for (String idInSource : idInSourceSet){ |
49 | 50 |
idInSourceString = CdmUtils.concat("','", idInSourceString, idInSource); |
... | ... | |
51 | 52 |
idInSourceString = "'"+ idInSourceString + "'"; |
52 | 53 |
|
53 | 54 |
Query q = session.createQuery( |
54 |
"SELECT source.idInSource, c FROM " + clazz.getSimpleName() + " AS c " + |
|
55 |
"SELECT source.idInSource, c " + |
|
56 |
"FROM " + clazz.getSimpleName() + " AS c " + |
|
55 | 57 |
"INNER JOIN c.sources AS source " + |
56 | 58 |
"WHERE source.idInSource IN ( " + idInSourceString + " )" + |
57 | 59 |
" AND source.idNamespace = :idNamespace" |
... | ... | |
59 | 61 |
q.setString("idNamespace", idNamespace); |
60 | 62 |
//TODO integrate reference in where |
61 | 63 |
|
62 |
Map<String, ISourceable> result = new HashMap<>();
|
|
64 |
Map<String, S> result = new HashMap<>();
|
|
63 | 65 |
|
64 |
List<Object[]> list = q.list(); |
|
66 |
@SuppressWarnings("unchecked") |
|
67 |
List<Object[]> list = q.list(); |
|
65 | 68 |
for (Object[] pair : list){ |
66 |
result.put((String)pair[0], (ISourceable)pair[1]);
|
|
69 |
result.put((String)pair[0], (S)pair[1]);
|
|
67 | 70 |
} |
68 | 71 |
|
69 | 72 |
return result; |
... | ... | |
98 | 101 |
crit.add(Restrictions.eq("idNamespace", idNamespace)); |
99 | 102 |
} |
100 | 103 |
crit.addOrder(Order.desc("created")); |
101 |
List<OriginalSourceBase> results = crit.list(); |
|
104 |
@SuppressWarnings({ "unchecked", "rawtypes" }) |
|
105 |
List<OriginalSourceBase> results = crit.list(); |
|
102 | 106 |
|
103 | 107 |
return results; |
104 | 108 |
} |
Also available in: Unified diff
add additional method for more specific return type of CommonService.getSourcedObjectSByIdInSource