}
int fileNumber = 1;
for (String curEntityName: passedEntityNames) {
long numberWritten = 0;
EntityListIterator values = null;
try {
ModelEntity me = delegator.getModelEntity(curEntityName);
if (me instanceof ModelViewEntity) {
results.add("["+fileNumber +"] [vvv] " + curEntityName + " skipping view entity");
continue;
}
boolean beganTx = TransactionUtil.begin();
// some databases don't support cursors, or other problems may happen, so if there is an error here log it and move on to get as much as possible
try {
values = delegator.find(curEntityName, null, null, null, me.getPkFieldNames(), null);
} catch (Exception entityEx) {
results.add("["+fileNumber +"] [xxx] Error when writing " + curEntityName + ": " + entityEx);
continue;
}
//Don't bother writing the file if there's nothing
//to put into it
GenericValue value = values.next();
if (value != null) {
PrintWriter writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(outdir, curEntityName +".xml")), "UTF-8")));
writer.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
writer.println("<entity-engine-xml>");
do {
value.writeXmlText(writer, "");
numberWritten++;
if (numberWritten % 500 == 0) {
TransactionUtil.commit(beganTx);
beganTx = TransactionUtil.begin();
}
} while ((value = values.next()) != null);
writer.println("</entity-engine-xml>");
writer.close();
results.add("["+fileNumber +"] [" + numberWritten + "] " + curEntityName + " wrote " + numberWritten + " records");
} else {
results.add("["+fileNumber +"] [---] " + curEntityName + " has no records, not writing file");
}
values.close();
TransactionUtil.commit(beganTx);
} catch (Exception ex) {
if (values != null) {
try {
values.close();
} catch (Exception exc) {
//Debug.warning();
}
}
results.add("["+fileNumber +"] [xxx] Error when writing " + curEntityName + ": " + ex);