dbf-exporter. jdbc -> hazelcast, ready for test (fix delete empty file)

This commit is contained in:
akulikov 2022-09-21 13:08:53 +03:00
parent 4e08b8acd0
commit cc8a36018d

View file

@ -70,6 +70,8 @@ public class ExportFromHazelcast extends Stage implements InitializingBean {
Imdg<? extends SpcexObjectBase> map = imdgProvider.getImdg(table.getHazelcastMapName(), table.getEntityClass());
File dbfFile = resultContainer.getFileForExport();
boolean writeOk = false;
boolean emptyMap = true;
try (DBFWriter dbfWriter = new DBFWriter(dbfFile, dbfCharset)) {
dbfWriter.setFields(dbfFieldsForTable.get(table));
Collection<? extends SpcexObjectBase> allValues = map.getAllValues();
@ -88,9 +90,18 @@ public class ExportFromHazelcast extends Stage implements InitializingBean {
else throw new Exception("Get unknown object from imdg. Class: " + value.getClass().getSimpleName());
dbfWriter.addRecord(values);
}
writeOk = true;
emptyMap = allValues.isEmpty();
} catch (Exception e) {
log.error(String.format("uuid %s. Can't export table %s to file %s. Table was skipped.", resultContainer.getUuid(), table, dbfFile), e);
return StageResult.ERROR;
} finally {
if (!writeOk || emptyMap) {
boolean deleteOk = resultContainer.getFileForExport().delete();
if (!deleteOk) {
log.warn("Can't delete file {}", resultContainer.getFileForExport().getName());
}
}
}
return StageResult.COMPLETE;