Project

General

Profile

« Previous | Next » 

Revision ebedad1f

Added by Anahit Babadshanjan over 15 years ago

Name search functionality for taxonomic editor

View differences:

cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/name/TaxonNameDaoHibernateImpl.java
28 28
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
29 29
import eu.etaxonomy.cdm.model.name.TypeDesignationBase;
30 30
import eu.etaxonomy.cdm.model.name.TypeDesignationStatus;
31
import eu.etaxonomy.cdm.model.taxon.Taxon;
32
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
31 33
import eu.etaxonomy.cdm.persistence.dao.hibernate.common.IdentifiableDaoBase;
32 34
import eu.etaxonomy.cdm.persistence.dao.name.ITaxonNameDao;
33 35

  
......
58 60
		query.setParameter("name",name);
59 61
		return ((Long)query.uniqueResult()).intValue();
60 62
	}
63
	
64
	public int countNames(String queryString) {
65
		
66
        Criteria criteria = getSession().createCriteria(TaxonNameBase.class);
67
        
68
		if (queryString != null) {
69
			criteria.add(Restrictions.ilike("nameCache", queryString));
70
		}
71
		criteria.setProjection(Projections.projectionList().add(Projections.rowCount()));
72
		
73
		return (Integer)criteria.uniqueResult();
74
	}
61 75

  
62 76
	public int countNames(String genusOrUninomial, String infraGenericEpithet,	String specificEpithet, String infraSpecificEpithet, Rank rank) {
63 77
       Criteria criteria = getSession().createCriteria(TaxonNameBase.class);
......
182 196
		return (List<TypeDesignationBase>)query.list();
183 197
	}
184 198

  
199
	
200
	public List<TaxonNameBase<?,?>> searchNames(String queryString, Integer pageSize, Integer pageNumber) {
201
		
202
		Criteria criteria = getSession().createCriteria(TaxonNameBase.class);
203

  
204
		if (queryString != null) {
205
			criteria.add(Restrictions.ilike("nameCache", queryString));
206
		}
207
		if(pageSize != null) {
208
	    	criteria.setMaxResults(pageSize);
209
		    if(pageNumber != null) {
210
		    	criteria.setFirstResult(pageNumber * pageSize);
211
		    } else {
212
		    	criteria.setFirstResult(0);
213
		    }
214
		}
215
		List<TaxonNameBase<?,?>> results = criteria.list();
216
		return results;
217
	}
218

  
219
	
185 220
	public List<TaxonNameBase> searchNames(String genusOrUninomial,String infraGenericEpithet, String specificEpithet,	String infraSpecificEpithet, Rank rank, Integer pageSize,Integer pageNumber) {
186 221
       Criteria criteria = getSession().createCriteria(TaxonNameBase.class);
187 222
		
......
222 257
		    	criteria.setFirstResult(0);
223 258
		    }
224 259
		}
225
		
226
		
260

  
227 261
		return (List<TaxonNameBase>)criteria.list();
228 262
	}
229 263

  
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImpl.java
57 57
import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao;
58 58
import eu.etaxonomy.cdm.persistence.fetch.CdmFetch;
59 59

  
60
/**
61
 * @author a.mueller
62
 *
63
 */
64
/**
65
 * @author a.mueller
66
 * @created 24.11.2008
67
 * @version 1.0
68
 */
69 60
/**
70 61
 * @author a.mueller
71 62
 * @created 24.11.2008
......
150 141
		return results;
151 142
	}
152 143

  
153
	public List<TaxonBase> getTaxaByName(String name, ReferenceBase sec) {
154
		Criteria crit = getSession().createCriteria(Taxon.class);
144
	public List<TaxonBase> getTaxaByName(String queryString, ReferenceBase sec) {
145
		
146
		return getTaxaByName(queryString, true, sec);
147
	}
148

  
149
	public List<TaxonBase> getTaxaByName(String queryString, Boolean accepted, ReferenceBase sec) {
150
		
151
		Criteria criteria = null;
152
		if (accepted == true) {
153
			criteria = getSession().createCriteria(Taxon.class);
154
		} else {
155
			criteria = getSession().createCriteria(Synonym.class);
156
		}
157

  
158
		criteria.setFetchMode( "name", FetchMode.JOIN );
159
		criteria.createAlias("name", "name");
160

  
155 161
		if (sec != null){
156 162
			if(sec.getId() == 0){
157 163
				getSession().save(sec);
158 164
			}
159
			crit.add(Restrictions.eq("sec", sec ) );
165
			criteria.add(Restrictions.eq("sec", sec ) );
160 166
		}
161
		crit.createCriteria("name").add(Restrictions.like("nameCache", name));
162
		List<TaxonBase> results = crit.list();
167
		if (queryString != null) {
168
			criteria.add(Restrictions.ilike("name.nameCache", queryString));
169
		}
170
		List<TaxonBase> results = criteria.list();
163 171
		return results;
164 172
	}
165 173

  
......
332 340
			throw new QueryParseException(e, queryString);
333 341
		}
334 342
	}
343
	
344
	public int countTaxaByName(String queryString, Boolean accepted, ReferenceBase sec) {
345
		
346
		Criteria criteria = null;
347
		
348
		if (accepted == true) {
349
			criteria = getSession().createCriteria(Taxon.class);
350
		} else {
351
			criteria = getSession().createCriteria(Synonym.class);
352
		}
353
		
354
		criteria.setFetchMode( "name", FetchMode.JOIN );
355
		criteria.createAlias("name", "name");
356

  
357
		if (sec != null){
358
			if(sec.getId() == 0){
359
				getSession().save(sec);
360
			}
361
			criteria.add(Restrictions.eq("sec", sec ) );
362
		}
363
		if (queryString != null) {
364
			criteria.add(Restrictions.ilike("name.nameCache", queryString));
365
		}
366
		criteria.setProjection(Projections.projectionList().add(Projections.rowCount()));
367
		
368
		return (Integer)criteria.uniqueResult();
369
	}
335 370

  
336
	public int countTaxaByName(Boolean accepted, String genusOrUninomial,	String infraGenericEpithet, String specificEpithet,	String infraSpecificEpithet, Rank rank) {
371
	public int countTaxaByName(Boolean accepted, String genusOrUninomial, String infraGenericEpithet, String specificEpithet,	String infraSpecificEpithet, Rank rank) {
337 372
        Criteria criteria = null;
338 373
		
339 374
		if(accepted == null) {
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/name/ITaxonNameDao.java
119 119
	 */
120 120
	public int countNames(String uninomial, String infraGenericEpithet, String specificEpithet, String infraspecificEpithet, Rank rank);
121 121

  
122
	/**
123
	 * Returns a List of TaxonNameBase instances which nameCache matches the query string
124
	 * 
125
	 * @param queryString
126
	 * @param pageSize The maximum number of names returned (can be null for all names)
127
	 * @param pageNumber The offset (in pageSize chunks) from the start of the result set (0 - based)
128
	 * @return a List of TaxonNameBase instances
129
	 */
130
	public List<TaxonNameBase<?,?>> searchNames(String queryString, Integer pageSize, Integer pageNumber);
131

  
132
	/**
133
	 * Returns a count of TaxonNameBase instances which nameCache matches the String queryString
134
	 * 
135
	 * @param queryString
136
	 * @return a count of TaxonNameBase instances
137
	 */
138
	public int countNames(String queryString);
122 139
}
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/taxon/ITaxonDao.java
33 33
 */
34 34
public interface ITaxonDao extends IIdentifiableDao<TaxonBase>, ITitledDao<TaxonBase> {
35 35
	
36
	/**
37
	 * Returns a count of TaxonBase instances (or Taxon instances, if accepted == true, or Synonym instance, if accepted == false) 
38
	 * where the taxonBase.name.nameCache property matches the String queryString
39
	 * 
40
	 * @param queryString
41
	 * @param accepted
42
	 * @param sec
43
	 * @return a count of the matching taxa
44
	 */
45
	public int countTaxaByName(String queryString, Boolean accepted, ReferenceBase sec);
46

  
47
	/** 
48
	 * Returns a list of TaxonBase instances where the taxon.titleCache property matches the name parameter, 
49
	 * and taxon.sec matches the sec parameter.
50
	 * @param name
51
	 * @param sec
52
	 * @return
53
	 */
36 54
	public List<TaxonBase> getTaxaByName(String name, ReferenceBase sec);
37 55
	
56
	/** 
57
	 * Returns a list of TaxonBase instances (or Taxon instances, if accepted == true, or Synonym instance, if accepted == false) 
58
	 * where the taxonBase.name.nameCache property matches the String queryString, and taxon.sec matches the sec parameter.
59
	 * @param name
60
	 * @param sec
61
	 * @return
62
	 */
63
	public List<TaxonBase> getTaxaByName(String queryString, Boolean accepted, ReferenceBase sec);
64

  
38 65
	/**
39 66
	 * Computes all Taxon instances that do not have a taxonomic parent and has at least one child.
40 67
	 * @return The List<Taxon> of root taxa.

Also available in: Unified diff