Project

General

Profile

« Previous | Next » 

Revision 706e7541

Added by Andreas Müller almost 13 years ago

getTermByRepresentationAbbrev

View differences:

cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IDefinedTermDao.java
49 49
	
50 50
	public int countDefinedTermByRepresentationText(String text, Class<? extends DefinedTermBase> clazz);
51 51
	
52
	public <TYPE extends DefinedTermBase> List<TYPE> getDefinedTermByRepresentationAbbrev(String text, Class<TYPE> clazz, Integer pageSize,Integer  pageNumber);
53
	
54
	public int countDefinedTermByRepresentationAbbrev(String text, Class<? extends DefinedTermBase> clazz);
55

  
56
	
52 57
    /**
53 58
     * Returns a List of Media that represent a given DefinedTerm instance
54 59
     * 
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/DefinedTermDaoImpl.java
210 210
		return (List<T>) criteria.list();
211 211
	}
212 212
	
213
public int countDefinedTermByRepresentationText(String text, Class<? extends DefinedTermBase> clazz) {
213
	public int countDefinedTermByRepresentationText(String text, Class<? extends DefinedTermBase> clazz) {
214 214
	    checkNotInPriorView("DefinedTermDaoImpl.countDefinedTermByRepresentationText(String text, Class<? extends DefinedTermBase> clazz)");		
215 215
		Criteria criteria = null;
216 216
		if(clazz == null) {
......
227 227
		 return (Integer)criteria.uniqueResult();
228 228
	}
229 229
	
230
	@Override
231
	public <T extends DefinedTermBase> List<T> getDefinedTermByRepresentationAbbrev(String text, Class<T> clazz, Integer pageSize,Integer  pageNumber) {
232
		checkNotInPriorView("DefinedTermDaoImpl.getDefinedTermByRepresentationAbbrev(String abbrev, Class<T> clazz, Integer pageSize,Integer  pageNumber)");		
233
		
234
		Criteria criteria = null;
235
		if(clazz == null) {
236
			criteria = getSession().createCriteria(type);
237
		} else {
238
			criteria = getSession().createCriteria(clazz);
239
		}
240
		
241
		criteria.createAlias("representations", "r").add(Restrictions.like("r.abbreviatedLabel", text));
242
		
243
		if(pageSize != null) {
244
			criteria.setMaxResults(pageSize);
245
		    if(pageNumber != null) {
246
		    	criteria.setFirstResult(pageNumber * pageSize);
247
		    }
248
		}
249
		
250
		return (List<T>) criteria.list();
251
	}
252
	
253
	@Override
254
	public int countDefinedTermByRepresentationAbbrev(String text, Class<? extends DefinedTermBase> clazz) {
255
	    checkNotInPriorView("DefinedTermDaoImpl.countDefinedTermByRepresentationAbbrev(String abbrev, Class<? extends DefinedTermBase> clazz)");		
256
		Criteria criteria = null;
257
		if(clazz == null) {
258
			criteria = getSession().createCriteria(type);
259
		} else {
260
			criteria = getSession().createCriteria(clazz);
261
		}
262
		
263
		criteria.createAlias("representations", "r").add(Restrictions.like("r.abbreviatedLabel", text));
264

  
265
		
266
		 criteria.setProjection(Projections.rowCount());
267
			
268
		 return (Integer)criteria.uniqueResult();
269
	}
270

  
271
	
230 272
	/* (non-Javadoc)
231 273
	 * @see eu.etaxonomy.cdm.persistence.dao.common.IDefinedTermDao#getLangaugeByIso(java.lang.String)
232 274
	 */
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ITermService.java
99 99
	public <T extends DefinedTermBase> Pager<T> getIncludes(Set<T> definedTerms, Integer pageSize, Integer pageNumber, List<String> propertyPaths);
100 100

  
101 101
	/**
102
	 * Return a paged list of terms which have representations that match the supplied string
102
	 * Return a paged list of terms which have representations that match the supplied string in the text (description)
103 103
	 * 
104 104
	 * @param label a string to match (exactly)
105 105
	 * @param pageSize The maximum number of terms returned (can be null for all terms)
......
108 108
	 */
109 109
	public <T extends DefinedTermBase> Pager<T> findByRepresentationText(String label, Class<T> clazz,  Integer pageSize, Integer pageNumber);
110 110
	
111
	/**
112
	 * Return a paged list of terms which have representations that match the supplied string in the abbreviated label
113
	 * 
114
	 * @param label a string to match (exactly)
115
	 * @param pageSize The maximum number of terms returned (can be null for all terms)
116
	 * @param pageNumber The offset (in pageSize chunks) from the start of the result set (0 - based)
117
	 * @return a Pager of DefinedTerms
118
	 */
119
	public <T extends DefinedTermBase> Pager<T> findByRepresentationAbbreviation(String abbrev, Class<T> clazz, Integer pageSize, Integer pageNumber);
120
		 	    
121
	
111 122
	/**
112 123
	 * 
113 124
	 * @param <TERM>
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TermServiceImpl.java
168 168
		
169 169
		return new DefaultPagerImpl<T>(pageNumber, numberOfResults, pageSize, results);
170 170
	}
171
	
172
	public <T extends DefinedTermBase> Pager<T> findByRepresentationAbbreviation(String abbrev, Class<T> clazz, Integer pageSize, Integer pageNumber) {
173
        Integer numberOfResults = dao.countDefinedTermByRepresentationAbbrev(abbrev,clazz);
174
		
175
		List<T> results = new ArrayList<T>();
176
		if(numberOfResults > 0) { // no point checking again //TODO use AbstractPagerImpl.hasResultsInRange(numberOfResults, pageNumber, pageSize)
177
			results = dao.getDefinedTermByRepresentationAbbrev(abbrev, clazz, pageSize, pageNumber);
178
		}
179
		
180
		return new DefaultPagerImpl<T>(pageNumber, numberOfResults, pageSize, results);
181
	}
171 182

  
172 183
	public List<LanguageString> getAllLanguageStrings(int limit, int start) {
173 184
		return languageStringDao.list(limit, start);

Also available in: Unified diff