Project

General

Profile

« Previous | Next » 

Revision 0327830c

Added by Katja Luther almost 3 years ago

ref #9680: adapt agent search methods to fill teamOrPersonUuidAndTitlecache dto

View differences:

cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/agent/IAgentDao.java
20 20
import eu.etaxonomy.cdm.model.agent.Person;
21 21
import eu.etaxonomy.cdm.model.agent.Team;
22 22
import eu.etaxonomy.cdm.persistence.dao.common.IIdentifiableDao;
23
import eu.etaxonomy.cdm.persistence.dto.TeamOrPersonUuidAndTitleCache;
23 24
import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
24 25
import eu.etaxonomy.cdm.persistence.query.MatchMode;
25 26
import eu.etaxonomy.cdm.persistence.query.OrderHint;
......
107 108

  
108 109
	public List<UuidAndTitleCache<Institution>> getInstitutionUuidAndTitleCache(Integer limit, String pattern);
109 110

  
110
    public <T extends AgentBase> List<UuidAndTitleCache<T>> getUuidAndAbbrevTitleCache(Class<T> clazz, Integer limit, String pattern);
111
    public <T extends AgentBase> List<TeamOrPersonUuidAndTitleCache<T>> getUuidAndAbbrevTitleCache(Class<T> clazz, Integer limit, String pattern);
111 112

  
112 113
    public <T extends AgentBase<?>> List<T> findByTitleAndAbbrevTitle(Class<T> clazz, String queryString, MatchMode matchmode,
113 114
            List<Criterion> criterion, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints,
114 115
            List<String> propertyPaths);
116

  
117
    public <T extends AgentBase> List<TeamOrPersonUuidAndTitleCache<T>> getUuidAndTitleCacheWithCollector(Class<T> clazz, Integer limit, String pattern);
118

  
119
    public <T extends AgentBase> List<TeamOrPersonUuidAndTitleCache<T>> getTeamOrPersonUuidAndTitleCache(Class<T> clazz, Integer limit, String pattern);
115 120
}
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/agent/AgentDaoImpl.java
31 31
import eu.etaxonomy.cdm.model.agent.InstitutionalMembership;
32 32
import eu.etaxonomy.cdm.model.agent.Person;
33 33
import eu.etaxonomy.cdm.model.agent.Team;
34
import eu.etaxonomy.cdm.model.common.IAnnotatableEntity;
35 34
import eu.etaxonomy.cdm.model.view.AuditEvent;
36 35
import eu.etaxonomy.cdm.persistence.dao.agent.IAgentDao;
37 36
import eu.etaxonomy.cdm.persistence.dao.hibernate.common.IdentifiableDaoBase;
......
178 177
	}
179 178

  
180 179
	@Override
181
    public <T extends AgentBase> List<UuidAndTitleCache<T>> getUuidAndTitleCache(Class<T> clazz, Integer limit, String pattern){
180
    public <T extends AgentBase> List<TeamOrPersonUuidAndTitleCache<T>> getUuidAndTitleCacheWithCollector(Class<T> clazz, Integer limit, String pattern){
182 181
	    Session session = getSession();
183 182

  
184 183
        clazz = clazz == null? (Class)type : clazz;
......
187 186
        Query query = null;
188 187

  
189 188
        if (pattern != null){
190
            String whereClause = " WHERE nomenclaturalTitleCache LIKE :pattern";
189
            String whereClause = " WHERE collectorTitleCache LIKE :pattern";
191 190
            whereClause += " OR titleCache LIKE :pattern";
192
            whereClause += " OR collectorTitleCache like :pattern";
191
            whereClause += " OR nomenclaturalTitleCache like :pattern";
193 192

  
194 193
            query = session.createQuery("SELECT DISTINCT uuid, id, nomenclaturalTitleCache, titleCache, collectorTitleCache " + clazzString  + whereClause);
195 194
            pattern = pattern + "%";
......
203 202
            query.setMaxResults(limit);
204 203
        }
205 204

  
206
        return getUuidAndAbbrevTitleCache(query);
205
        return getTeamOrPersonUuidAndTitleCache(query);
207 206
	}
208 207

  
209 208
	@Override
210
    public <T extends AgentBase> List<UuidAndTitleCache<T>> getUuidAndAbbrevTitleCache(Class<T> clazz, Integer limit, String pattern){
209
    public <T extends AgentBase> List<TeamOrPersonUuidAndTitleCache<T>> getTeamOrPersonUuidAndTitleCache(Class<T> clazz, Integer limit, String pattern){
210
        Session session = getSession();
211

  
212
        clazz = clazz == null? (Class)type : clazz;
213
        String clazzString = " FROM " + clazz.getSimpleName();
214

  
215
        Query query = null;
216

  
217
        if (pattern != null){
218
            String whereClause = " WHERE titleCache LIKE :pattern";
219

  
220

  
221
            query = session.createQuery("SELECT DISTINCT uuid, id, nomenclaturalTitleCache, titleCache, collectorTitleCache " + clazzString  + whereClause);
222
            pattern = pattern + "%";
223
            pattern = pattern.replace("*", "%");
224
            pattern = pattern.replace("?", "_");
225
            query.setParameter("pattern", pattern);
226
        } else {
227
            query = session.createQuery("SELECT DISTINCT uuid, id, nomenclaturalTitleCache, titleCache, collectorTitleCache " + clazzString);
228
        }
229
        if (limit != null){
230
            query.setMaxResults(limit);
231
        }
232

  
233
        return getTeamOrPersonUuidAndTitleCache(query);
234
    }
235

  
236

  
237
	@Override
238
    public <T extends AgentBase> List<TeamOrPersonUuidAndTitleCache<T>> getUuidAndAbbrevTitleCache(Class<T> clazz, Integer limit, String pattern){
211 239
        Session session = getSession();
212 240

  
213 241
        clazz = clazz == null? (Class)type : clazz;
......
234 262
            query.setMaxResults(limit);
235 263
        }
236 264

  
237
        return getUuidAndAbbrevTitleCache(query);
265
        return getTeamOrPersonUuidAndTitleCache(query);
238 266
    }
239 267

  
240 268
	@Override
......
247 275
	    return findByParam(clazz, params, queryString, matchmode, criterion, pageSize, pageNumber, orderHints, propertyPaths);
248 276
    }
249 277

  
250
	@Override
251
    protected <E extends IAnnotatableEntity> List<UuidAndTitleCache<E>> getUuidAndAbbrevTitleCache(Query query){
252
        List<UuidAndTitleCache<E>> list = new ArrayList<>();
253 278

  
254
        List<Object[]> result = query.list();
255 279

  
256
        for(Object[] object : result){
257
            list.add(new TeamOrPersonUuidAndTitleCache<E>((UUID) object[0],(Integer) object[1], (String) object[3], (String) object[2], (String) object[4]));
258
        }
259
        return list;
260
    }
261 280

  
262
	@Override
263
    protected <E extends IAnnotatableEntity> List<UuidAndTitleCache<E>> getUuidAndTitleCache(Query query){
264
        List<UuidAndTitleCache<E>> list = new ArrayList<>();
281
    protected <T extends AgentBase> List<TeamOrPersonUuidAndTitleCache<T>> getTeamOrPersonUuidAndTitleCache(Query query){
282
        List<TeamOrPersonUuidAndTitleCache<T>> list = new ArrayList<>();
265 283

  
266 284

  
267 285
        List<Object> result = query.list();
268 286

  
269 287
        for(Object obj : result){
270 288
          Object[] object = (Object[])obj;
271
          list.add(new TeamOrPersonUuidAndTitleCache((UUID) object[0],(Integer) object[1], (String) object[2], (String) object[3], (String) object[4]));
289
          list.add(new TeamOrPersonUuidAndTitleCache((UUID) object[0],(Integer) object[1], (String) object[3], (String) object[2], (String) object[4]));
272 290

  
273 291
        }
274 292
        return list;
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/AgentServiceImpl.java
32 32
import eu.etaxonomy.cdm.model.common.CdmBase;
33 33
import eu.etaxonomy.cdm.persistence.dao.agent.IAgentDao;
34 34
import eu.etaxonomy.cdm.persistence.dao.common.ICdmGenericDao;
35
import eu.etaxonomy.cdm.persistence.dto.TeamOrPersonUuidAndTitleCache;
35 36
import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
36 37
import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
37 38
import eu.etaxonomy.cdm.strategy.merge.ConvertMergeStrategy;
......
135 136

  
136 137
	@Override
137 138
	public List<UuidAndTitleCache<Institution>> getInstitutionUuidAndTitleCache(Integer limit, String pattern) {
138
		return dao.getUuidAndAbbrevTitleCache(Institution.class, limit, pattern);
139
		return dao.getUuidAndTitleCache(Institution.class, limit, pattern);
139 140
	}
140 141

  
141 142
	@Override
......
258 259
	}
259 260

  
260 261
    @Override
261
    public <T extends AgentBase> List<UuidAndTitleCache<T>> getUuidAndAbbrevTitleCache(Class<T> clazz, Integer limit, String pattern) {
262
    public <T extends AgentBase> List<TeamOrPersonUuidAndTitleCache<T>> getUuidAndAbbrevTitleCache(Class<T> clazz, Integer limit, String pattern) {
262 263
        return dao.getUuidAndAbbrevTitleCache(clazz, null, pattern);
263 264
    }
264 265

  
266
    @Override
267
    public <T extends AgentBase> List<TeamOrPersonUuidAndTitleCache<T>> getUuidAndTitleCacheWithCollectorTitleCache(Class<T> clazz, Integer limit, String pattern) {
268
        return dao.getUuidAndTitleCacheWithCollector(clazz, null, pattern);
269
    }
270

  
271
    @Override
272
    public <T extends AgentBase> List<TeamOrPersonUuidAndTitleCache<T>> getTeamOrPersonUuidAndTitleCache(Class<T> clazz, Integer limit, String pattern) {
273
        return dao.getTeamOrPersonUuidAndTitleCache(clazz, null, pattern);
274
    }
275

  
265 276
    @Override
266 277
    public <T extends AgentBase<?>> List<T> findByTitleAndAbbrevTitle(IIdentifiableEntityServiceConfigurator<T> config){
267 278
        return dao.findByTitleAndAbbrevTitle(config.getClazz(),config.getTitleSearchStringSqlized(), config.getMatchMode(), config.getCriteria(), config.getPageSize(), config.getPageNumber(), config.getOrderHints(), config.getPropertyPaths());
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/IAgentService.java
20 20
import eu.etaxonomy.cdm.model.agent.InstitutionalMembership;
21 21
import eu.etaxonomy.cdm.model.agent.Person;
22 22
import eu.etaxonomy.cdm.model.agent.Team;
23
import eu.etaxonomy.cdm.persistence.dto.TeamOrPersonUuidAndTitleCache;
23 24
import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
24 25
import eu.etaxonomy.cdm.persistence.query.OrderHint;
25 26
import eu.etaxonomy.cdm.strategy.merge.MergeException;
......
113 114
     *
114 115
     * @return a list of <code>UuidAndTitleCache</code> instances
115 116
     */
116
    public <T extends AgentBase> List<UuidAndTitleCache<T>> getUuidAndAbbrevTitleCache(Class<T> clazz, Integer limit, String pattern);
117
    public <T extends AgentBase> List<TeamOrPersonUuidAndTitleCache<T>> getUuidAndAbbrevTitleCache(Class<T> clazz, Integer limit, String pattern);
118

  
119
    /**
120
     * Returns a list of <code>UuidAndTitleCache</code> containing all {@link Institution} objects
121
     * with their respectiveCollectorTitleCache
122
     *
123
     * @return a list of <code>UuidAndTitleCache</code> instances
124
     */
125
    public <T extends AgentBase> List<TeamOrPersonUuidAndTitleCache<T>> getUuidAndTitleCacheWithCollectorTitleCache(Class<T> clazz, Integer limit, String pattern);
126

  
127
    /**
128
     * Returns a list of <code>UuidAndTitleCache</code> containing all {@link Institution} objects
129
     * with their respectiveCollectorTitleCache
130
     *
131
     * @return a list of <code>UuidAndTitleCache</code> instances
132
     */
133
    public <T extends AgentBase> List<TeamOrPersonUuidAndTitleCache<T>> getTeamOrPersonUuidAndTitleCache(Class<T> clazz, Integer limit, String pattern);
134

  
117 135

  
118 136
    /**
119 137
     * @param teamUuid

Also available in: Unified diff