Project

General

Profile

« Previous | Next » 

Revision fb707701

Added by Andreas Müller over 6 years ago

ref #4957 split terms into bulks of 2000 during termloading

View differences:

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

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

  
12
import java.util.ArrayList;
13
import java.util.Collection;
12 14
import java.util.HashSet;
13 15
import java.util.List;
14 16
import java.util.Map;
......
184 186
				" WHERE terms.uuid IN (:uuids) " +
185 187
				" ORDER BY voc.uuid ";
186 188
		Query query = getSession().createQuery(hql);
187
		query.setParameterList("uuids", missingTermCandidateUuids);
188
		List<?> persistedUuids = query.list();
189

  
190
		int splitSize = 2000;
191
		List<Collection<UUID>> missingTermCandidates = splitCollection(missingTermCandidateUuids, splitSize);
192
		List<UUID> persistedUuids = new ArrayList<>();
193

  
194
		for (Collection<UUID> uuids : missingTermCandidates){
195
		    query.setParameterList("uuids", uuids);
196
		    @SuppressWarnings("unchecked")
197
            List<UUID> list = query.list();
198
		    persistedUuids.addAll(list);
199
		}
189 200

  
190 201

  
191 202
 		//fully load and initialize vocabularies if required
......
199 210
//					" WHERE  voc.uuid IN (:vocUuids) AND voc.terms is empty  " +
200 211
					" ORDER BY voc.uuid ";
201 212
			query = getSession().createQuery(hql2);
202
			query.setParameterList("termUuids",missingTermCandidateUuids);
203
			query.setParameterList("vocUuids",uuidsRequested.keySet());
204
			List<TermVocabulary> o = query.list();
205
			for (TermVocabulary<?> voc : o){
206
				vocabularyResponse.put(voc.getUuid(), voc);
207
			}
213
			query.setParameterList("termUuids", missingTermCandidateUuids);
214
			query.setParameterList("vocUuids", uuidsRequested.keySet());
215

  
216
			for (Collection<UUID> uuids : missingTermCandidates){
217
			    query.setParameterList("termUuids", uuids);
218
			    @SuppressWarnings("unchecked")
219
	            List<TermVocabulary<?>> o = query.list();
220
	            for (TermVocabulary<?> voc : o){
221
	                vocabularyResponse.put(voc.getUuid(), voc);
222
	            }
223
	        }
208 224
		}
209 225

  
210 226
		//compute missing terms

Also available in: Unified diff