diff --git a/framework/webtools/src/main/groovy/org/apache/ofbiz/webtools/entity/XmlDsDump.groovy b/framework/webtools/src/main/groovy/org/apache/ofbiz/webtools/entity/XmlDsDump.groovy index 59d8367fe82..861d871c77a 100644 --- a/framework/webtools/src/main/groovy/org/apache/ofbiz/webtools/entity/XmlDsDump.groovy +++ b/framework/webtools/src/main/groovy/org/apache/ofbiz/webtools/entity/XmlDsDump.groovy @@ -25,7 +25,7 @@ import org.apache.ofbiz.entity.condition.EntityCondition import org.apache.ofbiz.entity.condition.EntityJoinOperator import org.apache.ofbiz.entity.model.ModelViewEntity import org.apache.ofbiz.entity.transaction.TransactionUtil -import org.apache.ofbiz.entity.util.EntityFindOptions +import org.apache.ofbiz.entity.util.EntityQuery outpath = parameters.outpath filename = parameters.filename @@ -188,7 +188,6 @@ if (passedEntityNames) { session.setAttribute('xmlrawdump_entitylist', passedEntityNames) session.setAttribute('entityDateCond', entityDateCond) } else { - efo = new EntityFindOptions(true, EntityFindOptions.TYPE_SCROLL_INSENSITIVE, EntityFindOptions.CONCUR_READ_ONLY, false) numberOfEntities = passedEntityNames?.size() ?: 0 context.numberOfEntities = numberOfEntities numberWritten = 0 @@ -213,22 +212,22 @@ if (passedEntityNames) { beganTransaction = TransactionUtil.begin(3600) try { me = reader.getModelEntity(curEntityName) - if (me.getNoAutoStamp() || me instanceof ModelViewEntity) { - values = delegator.find(curEntityName, null, null, null, null, efo) - } else { - values = delegator.find(curEntityName, entityDateCond, null, null, null, efo) + entityQuery = EntityQuery.use(delegator).from(curEntityName).cursorScrollInsensitive() + if (!me.getNoAutoStamp() && !(me instanceof ModelViewEntity) && entityDateCond) { + entityQuery.where(entityDateCond) } curNumberWritten = 0 - while ((value = values.next()) != null) { - value.writeXmlText(writer, '') - numberWritten++ - curNumberWritten++ - if (curNumberWritten % 500 == 0 || curNumberWritten == 1) { - Debug.log("Records written [$curEntityName]: $curNumberWritten Total: $numberWritten") + entityQuery.queryIterator().withCloseable { values -> + while ((value = values.next()) != null) { + value.writeXmlText(writer, '') + numberWritten++ + curNumberWritten++ + if (curNumberWritten % 500 == 0 || curNumberWritten == 1) { + Debug.log("Records written [$curEntityName]: $curNumberWritten Total: $numberWritten") + } } } - values.close() Debug.log("Wrote [$curNumberWritten] from entity : $curEntityName") TransactionUtil.commit(beganTransaction) } catch (Exception e) { @@ -258,7 +257,6 @@ if (passedEntityNames) { fileName = preConfiguredSetName ? UtilFormatOut.formatPaddedNumber((long) fileNumber, 3) + '_' : '' fileName = fileName + curEntityName - values = null beganTransaction = false try { beganTransaction = TransactionUtil.begin(3600) @@ -268,47 +266,48 @@ if (passedEntityNames) { results.add("[$fileNumber] [vvv] $curEntityName skipping view entity") return } - if (me.getNoAutoStamp() || me instanceof ModelViewEntity) { - values = delegator.find(curEntityName, null, null, null, null, efo) - } else { - values = delegator.find(curEntityName, entityDateCond, null, null, null, efo) + entityQuery = EntityQuery.use(delegator).from(curEntityName).cursorScrollInsensitive() + if (!me.getNoAutoStamp() && !(me instanceof ModelViewEntity) && entityDateCond) { + entityQuery.where(entityDateCond) } isFirst = true writer = null fileSplitNumber = 1 - while ((value = values.next()) != null) { - //Don't bother writing the file if there's nothing - //to put into it - if (isFirst) { - writer = new PrintWriter( - new BufferedWriter( - new OutputStreamWriter(new FileOutputStream(new File(outdir, fileName + '.xml')), 'UTF-8'))) - writer.println('') - writer.println('') - isFirst = false - } - value.writeXmlText(writer, '') - numberWritten++ + entityQuery.queryIterator().withCloseable { values -> + while ((value = values.next()) != null) { + //Don't bother writing the file if there's nothing + //to put into it + if (isFirst) { + writer = new PrintWriter( + new BufferedWriter( + new OutputStreamWriter(new FileOutputStream(new File(outdir, fileName + '.xml')), 'UTF-8'))) + writer.println('') + writer.println('') + isFirst = false + } + value.writeXmlText(writer, '') + numberWritten++ - // split into small files - if (maxRecordsPerFile > 0 && (numberWritten % maxRecordsPerFile == 0)) { - fileSplitNumber++ - // close the file - writer.println('') - writer.close() + // split into small files + if (maxRecordsPerFile > 0 && (numberWritten % maxRecordsPerFile == 0)) { + fileSplitNumber++ + // close the file + writer.println('') + writer.close() - // create a new file - splitNumStr = UtilFormatOut.formatPaddedNumber((long) fileSplitNumber, 3) - writer = new PrintWriter( - new BufferedWriter( - new OutputStreamWriter( - new FileOutputStream(new File(outdir, fileName + '_' + splitNumStr + '.xml')), 'UTF-8'))) - writer.println('') - writer.println('') - } + // create a new file + splitNumStr = UtilFormatOut.formatPaddedNumber((long) fileSplitNumber, 3) + writer = new PrintWriter( + new BufferedWriter( + new OutputStreamWriter( + new FileOutputStream(new File(outdir, fileName + '_' + splitNumStr + '.xml')), 'UTF-8'))) + writer.println('') + writer.println('') + } - if (numberWritten % 500 == 0 || numberWritten == 1) { - Debug.log("Records written [$curEntityName]: $numberWritten") + if (numberWritten % 500 == 0 || numberWritten == 1) { + Debug.log("Records written [$curEntityName]: $numberWritten") + } } } if (writer) { @@ -322,11 +321,7 @@ if (passedEntityNames) { Debug.log(thisResult) results.add(thisResult) } - values.close() } catch (Exception ex) { - if (values != null) { - values.close() - } thisResult = "[$fileNumber] [xxx] Error when writing $curEntityName: $ex" Debug.log(thisResult) results.add(thisResult)