Project

General

Profile

« Previous | Next » 

Revision 3bc8dd61

Added by Andreas Müller over 4 years ago

add additional method for more specific return type of CommonService.getSourcedObjectSByIdInSource

View differences:

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