Project

General

Profile

« Previous | Next » 

Revision 42d4306a

Added by Katja Luther over 6 years ago

adapt uuidAndTitleCache services and dao methods to search for a pattern

View differences:

cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/AnnotatableDaoImpl.java
9 9

  
10 10
package eu.etaxonomy.cdm.persistence.dao.hibernate.common;
11 11

  
12
import java.util.ArrayList;
12 13
import java.util.List;
14
import java.util.UUID;
13 15

  
14 16
import org.apache.log4j.Logger;
15 17
import org.hibernate.Query;
18
import org.hibernate.Session;
16 19

  
17 20
import eu.etaxonomy.cdm.model.common.AnnotatableEntity;
18 21
import eu.etaxonomy.cdm.model.common.Annotation;
22
import eu.etaxonomy.cdm.model.common.IAnnotatableEntity;
19 23
import eu.etaxonomy.cdm.model.common.Marker;
20 24
import eu.etaxonomy.cdm.model.common.MarkerType;
21 25
import eu.etaxonomy.cdm.persistence.dao.common.IAnnotatableDao;
26
import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
22 27
import eu.etaxonomy.cdm.persistence.query.OrderHint;
23 28
import eu.etaxonomy.cdm.persistence.query.OrderHint.SortOrder;
24 29

  
......
227 232
		return result;
228 233
	}
229 234

  
235
    @Override
236
    public List<UuidAndTitleCache<T>> getUuidAndTitleCache(Integer limit, String pattern){
237
        return getUuidAndTitleCache(type, limit, pattern);
238
    }
239

  
240

  
241
    @Override
242
    public <S extends T> List<UuidAndTitleCache<S>> getUuidAndTitleCache(Class<S> clazz, Integer limit, String pattern){
243
        Session session = getSession();
244
        Query query = null;
245
        if (pattern != null){
246
            query = session.createQuery("select uuid, id, titleCache from " + clazz.getSimpleName() +" where titleCache like :pattern");
247
            pattern = pattern.replace("*", "%");
248
            pattern = pattern.replace("?", "_");
249
            pattern = pattern + "%";
250
            query.setParameter("pattern", pattern);
251
        } else {
252
            query = session.createQuery("select uuid, id, titleCache from " + clazz.getSimpleName() );
253
        }
254
        if (limit != null){
255
           query.setMaxResults(limit);
256
        }
257
        return getUuidAndTitleCache(query);
258
    }
259

  
260

  
261
    @Override
262
    public List<UuidAndTitleCache<T>> getUuidAndTitleCache(){
263
        return getUuidAndTitleCache(type, null, null);
264
    }
265

  
266
    protected <E extends IAnnotatableEntity> List<UuidAndTitleCache<E>> getUuidAndAbbrevTitleCache(Query query){
267
        List<UuidAndTitleCache<E>> list = new ArrayList<UuidAndTitleCache<E>>();
268

  
269
        List<Object[]> result = query.list();
270

  
271
        for(Object[] object : result){
272
            list.add(new UuidAndTitleCache<E>((UUID) object[0],(Integer) object[1], (String) object[3], (String) object[2]));
273
        }
274
        return list;
275
    }
276

  
277
    protected <E extends IAnnotatableEntity> List<UuidAndTitleCache<E>> getUuidAndTitleCache(Query query){
278
        List<UuidAndTitleCache<E>> list = new ArrayList<UuidAndTitleCache<E>>();
279

  
280
        List<Object[]> result = query.list();
281

  
282
        for(Object[] object : result){
283
            list.add(new UuidAndTitleCache<E>((UUID) object[0],(Integer) object[1], (String) object[2]));
284
        }
285
        return list;
286
    }
287

  
230 288
}

Also available in: Unified diff