" SELECT dbo.Taxon.UUID AS ChildUuid, Parent.UUID AS ParentUuid " +\r
" FROM dbo.Taxon INNER JOIN dbo.Taxon AS Parent " +\r
" ON dbo.Taxon.TAX_TAX_IDPARENT = Parent.TAX_ID " +\r
- " WHERE (dbo.Taxon.TAX_VALID <> 0) AND (dbo.Taxon.TAX_AUT_ID <> " + A_AUCT + ")";\r
+ " WHERE (dbo.Taxon.TAX_VALID <> 0) AND (dbo.Taxon.TAX_AUT_ID <> " + A_AUCT + ")" +\r
+ " ORDER BY dbo.Taxon.TAX_RNK_ID ASC";\r
\r
if (logger.isInfoEnabled()) {\r
logger.info("Query: " + strQuery);\r
\r
while (rs.next()) {\r
\r
+ // take memory snapshot every 10000 relations\r
+ if((i % 10000) == 0){\r
+ ProfilerController.memorySnapshot(); \r
+ }\r
+ \r
if ((i++ % limit) == 0) { \r
\r
- ProfilerController.memorySnapshot();\r
txStatus = startTransaction();\r
childParentMap = new HashMap<UUID, UUID>(limit);\r
\r
boolean success = true;\r
\r
//add tree to new session\r
- TaxonomicTree tree = state.getTree(sourceRef);\r
- if (tree == null){\r
- tree = makeTree(state, sourceRef);\r
+ \r
+ UUID treeUuid = state.getTreeUuid(sourceRef);\r
+ TaxonomicTree tree;\r
+ if (treeUuid == null){\r
+ tree = makeTreeMemSave(state, sourceRef);\r
+ } else {\r
+ tree = getTaxonService().getTaxonomicTreeByUuid(treeUuid); \r
}\r
- getTaxonService().saveTaxonomicTree(tree);\r
\r
Set<TaxonBase> childSet = new HashSet<TaxonBase>(limit);\r
\r
}\r
List<TaxonBase> children = getTaxonService().findByUuid(childKeysSet);\r
List<TaxonBase> parents = getTaxonService().findByUuid(parentValuesSet);\r
- Map<UUID, TaxonBase> parentsMap = new HashMap<UUID, TaxonBase>();\r
+ Map<UUID, TaxonBase> parentsMap = new HashMap<UUID, TaxonBase>(parents.size());\r
for (TaxonBase taxonBase : parents){\r
parentsMap.put(taxonBase.getUuid(), taxonBase);\r
}\r