\r
private static final Logger logger = Logger.getLogger(TaxonNodeDaoHibernateImpl.class);\r
\r
+ private static final int DEFAULT_SET_SUBTREE_PARTITION_SIZE = 100;\r
+\r
@Autowired\r
private ITaxonDao taxonDao;\r
@Autowired\r
private <T extends TaxonBase<?>> Set<T> setSecundum(Reference newSec, boolean emptyDetail, String queryStr, IProgressMonitor monitor) {\r
Set<T> result = new HashSet<>();\r
Query query = getSession().createQuery(queryStr);\r
- List<List<Integer>> partitionList = splitIdList(query.list(), DEFAULT_PARTITION_SIZE);\r
+ List<List<Integer>> partitionList = splitIdList(query.list(), DEFAULT_SET_SUBTREE_PARTITION_SIZE);\r
for (List<Integer> taxonIdList : partitionList){\r
List<TaxonBase> taxonList = taxonDao.loadList(taxonIdList, null, null);\r
for (TaxonBase<?> taxonBase : taxonList){\r
}\r
}\r
}\r
+ commitAndRestartTransaction(newSec);\r
}\r
return result;\r
}\r
\r
+ private void commitAndRestartTransaction(CdmBase... cdmBaseToUpdate) {\r
+ getSession().getTransaction().commit();\r
+ getSession().beginTransaction();\r
+ getSession().update(cdmBaseToUpdate);\r
+ }\r
+\r
@Override\r
public Set<TaxonRelationship> setSecundumForSubtreeRelations(TreeIndex subTreeIndex, Reference newRef,\r
Set<UUID> relationTypes, boolean overwriteExisting, boolean includeSharedTaxa, boolean emptyDetail, IProgressMonitor monitor) {\r
Set<TaxonRelationship> result = new HashSet<>();\r
Query query = getSession().createQuery(queryStr);\r
@SuppressWarnings("unchecked")\r
- List<List<Integer>> partitionList = splitIdList(query.list(), DEFAULT_PARTITION_SIZE);\r
+ List<List<Integer>> partitionList = splitIdList(query.list(), DEFAULT_SET_SUBTREE_PARTITION_SIZE);\r
for (List<Integer> relIdList : partitionList){\r
List<TaxonRelationship> relList = taxonRelDao.loadList(relIdList, null, null);\r
for (TaxonRelationship rel : relList){\r
}\r
}\r
}\r
+ commitAndRestartTransaction();\r
}\r
\r
return result;\r
return setPublish(publish, queryStr, relationTypes, monitor);\r
}\r
\r
- private static final int DEFAULT_PARTITION_SIZE = 100;\r
-\r
private <T extends TaxonBase<?>> Set<T> setPublish(boolean publish, String queryStr, Set<UUID> relTypeUuids, IProgressMonitor monitor) {\r
Set<T> result = new HashSet<>();\r
Query query = getSession().createQuery(queryStr);\r
query.setParameterList("relTypeUuid", relTypeUuids);\r
}\r
@SuppressWarnings("unchecked")\r
- List<List<Integer>> partitionList = splitIdList(query.list(), DEFAULT_PARTITION_SIZE);\r
+ List<List<Integer>> partitionList = splitIdList(query.list(), DEFAULT_SET_SUBTREE_PARTITION_SIZE);\r
for (List<Integer> taxonIdList : partitionList){\r
List<TaxonBase> taxonList = taxonDao.loadList(taxonIdList, null, null);\r
for (TaxonBase<?> taxonBase : taxonList){\r
}\r
}\r
}\r
+ commitAndRestartTransaction();\r
}\r
return result;\r
}\r