Project

General

Profile

« Previous | Next » 

Revision 71559ffe

Added by Katja Luther over 2 years ago

ref #9710: switch to dtos for descriptive data set and descriptions for character matrix

View differences:

cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/term/TermNodeDaoImpl.java
6 6

  
7 7
package eu.etaxonomy.cdm.persistence.dao.hibernate.term;
8 8

  
9
import java.util.ArrayList;
9 10
import java.util.List;
10 11
import java.util.Set;
12
import java.util.UUID;
11 13

  
12 14
import org.hibernate.Criteria;
15
import org.hibernate.Query;
16
import org.hibernate.Session;
13 17
import org.hibernate.criterion.Restrictions;
14 18
import org.springframework.stereotype.Repository;
15 19

  
......
17 21
import eu.etaxonomy.cdm.model.term.TermType;
18 22
import eu.etaxonomy.cdm.persistence.dao.hibernate.common.VersionableDaoBase;
19 23
import eu.etaxonomy.cdm.persistence.dao.term.ITermNodeDao;
24
import eu.etaxonomy.cdm.persistence.dto.SortableTaxonNodeQueryResult;
25
import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
20 26
import eu.etaxonomy.cdm.persistence.query.OrderHint;
21 27

  
22 28
/**
......
63 69
        return results;
64 70
	}
65 71

  
66

  
72
	@Override
73
	public List<UuidAndTitleCache<TermNode>> getUuidAndTitleCache(Integer limit, String pattern){
74
	    Session session = getSession();
75
        Query query = session.createQuery(
76

  
77
                "SELECT new " + SortableTaxonNodeQueryResult.class.getName() + "("
78
                + " uuid, id, titleCache "
79
                + ") "
80
                + " FROM TermNode node "
81
                + " JOIN DefinedTerm term ON node.term = term "
82
                + (pattern!=null?" WHERE term.titleCache LIKE :pattern":""));
83
        if(pattern!=null){
84
            pattern = pattern.replace("*", "%");
85
            pattern = pattern.replace("?", "_");
86
            pattern = pattern + "%";
87
            query.setParameter("pattern", pattern);
88
        }
89
        if (limit != null){
90
           query.setMaxResults(limit);
91
        }
92
        return getUuidAndTitleCache(query);
93
	}
94
	 protected List<UuidAndTitleCache<TermNode>> getUuidAndTitleCache(Query query){
95
	        List<UuidAndTitleCache<TermNode>> list = new ArrayList<>();
96
	        List<Object> result = query.list();
97

  
98
	        for(Object obj : result){
99
	            if (obj instanceof SortableTaxonNodeQueryResult) {
100
	                SortableTaxonNodeQueryResult stnqr = (SortableTaxonNodeQueryResult) obj;
101
	                list.add(new UuidAndTitleCache<>(stnqr.getTaxonNodeUuid(),stnqr.getTaxonNodeId(), stnqr.getTaxonTitleCache()));
102
	            }else{
103
	                Object[] object = (Object[])obj;
104
	                list.add(new UuidAndTitleCache<>((UUID) object[0],(Integer) object[1], (String) object[2]));
105
	            }
106
	        }
107
	        return list;
108
	    }
67 109

  
68 110
}

Also available in: Unified diff