Project

General

Profile

« Previous | Next » 

Revision 1184c8e0

Added by Patrick Plitzner about 5 years ago

ref #7998 Add service method for UuidAndTitleCache by term type

View differences:

cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/TermVocabularyDaoImpl.java
20 20

  
21 21
import org.hibernate.Criteria;
22 22
import org.hibernate.Query;
23
import org.hibernate.Session;
23 24
import org.hibernate.criterion.Restrictions;
24 25
import org.hibernate.envers.query.AuditEntity;
25 26
import org.hibernate.envers.query.AuditQuery;
......
34 35
import eu.etaxonomy.cdm.persistence.dao.common.ITermVocabularyDao;
35 36
import eu.etaxonomy.cdm.persistence.dto.TermDto;
36 37
import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
38
import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
37 39
import eu.etaxonomy.cdm.persistence.query.OrderHint;
38 40

  
39 41
/**
......
294 296
        return new ArrayList<>(dtoMap.values());
295 297
    }
296 298

  
299
    @Override
300
    public <S extends TermVocabulary> List<UuidAndTitleCache<S>> getUuidAndTitleCache(Class<S> clazz, TermType termType,
301
            Integer limit, String pattern) {
302
        if(termType==null){
303
            return getUuidAndTitleCache(clazz, limit, pattern);
304
        }
305
        Session session = getSession();
306
        Query query = null;
307
        if (pattern != null){
308
            query = session.createQuery(
309
                      " SELECT uuid, id, titleCache "
310
                    + " FROM " + clazz.getSimpleName()
311
                    + " WHERE titleCache LIKE :pattern "
312
                    + " AND termType = :termType");
313
            pattern = pattern.replace("*", "%");
314
            pattern = pattern.replace("?", "_");
315
            pattern = pattern + "%";
316
            query.setParameter("pattern", pattern);
317
        } else {
318
            query = session.createQuery(
319
                      " SELECT uuid, id, titleCache "
320
                    + " FROM  " + clazz.getSimpleName()
321
                    + " WHERE termType = :termType");
322
        }
323
        query.setParameter("termType", termType);
324
        if (limit != null){
325
           query.setMaxResults(limit);
326
        }
327
        return getUuidAndTitleCache(query);
328
    }
329

  
297 330
}

Also available in: Unified diff