diff --git a/src/main/java/com/salesforce/dataloader/action/AbstractLoadAction.java b/src/main/java/com/salesforce/dataloader/action/AbstractLoadAction.java index e60fa712..c0f61c34 100644 --- a/src/main/java/com/salesforce/dataloader/action/AbstractLoadAction.java +++ b/src/main/java/com/salesforce/dataloader/action/AbstractLoadAction.java @@ -83,7 +83,6 @@ protected boolean visit() throws DataAccessObjectException, ParameterLoadExcepti if (daoRowList == null || daoRowList.size() == 0) return false; int daoRowCount = 0; - getVisitor().initLoadRateCalculator(); for (final Row daoRow : daoRowList) { if (!DAORowUtil.isValidRow(daoRow)) { getVisitor().setRowConversionStatus(daoRowNumBase + daoRowCount++, diff --git a/src/main/java/com/salesforce/dataloader/action/visitor/DAOLoadVisitor.java b/src/main/java/com/salesforce/dataloader/action/visitor/DAOLoadVisitor.java index 6408538e..70a56d8b 100644 --- a/src/main/java/com/salesforce/dataloader/action/visitor/DAOLoadVisitor.java +++ b/src/main/java/com/salesforce/dataloader/action/visitor/DAOLoadVisitor.java @@ -104,6 +104,7 @@ protected DAOLoadVisitor(Controller controller, ILoaderProgress monitor, DataWri if (newRichTextRegex != null && !newRichTextRegex.isBlank()) { this.richTextRegex = newRichTextRegex; } + this.initLoadRateCalculator(); } public void setRowConversionStatus(int dataSourceRow, boolean conversionSuccess) { @@ -223,8 +224,14 @@ protected boolean writeStatus() { return true; } - public void initLoadRateCalculator() throws DataAccessObjectException { - getRateCalculator().start(((DataReader)getController().getDao()).getTotalRows()); + private void initLoadRateCalculator() { + try { + DataReader dao = (DataReader)getController().getDao(); + getRateCalculator().start(dao.getTotalRows()); + } catch (Exception e) { + logger.error("Unable to get total rows to upload from CSV or database"); + getRateCalculator().start(0); + } } @Override diff --git a/src/main/java/com/salesforce/dataloader/dao/csv/CSVFileReader.java b/src/main/java/com/salesforce/dataloader/dao/csv/CSVFileReader.java index 1d2fe13e..9d544b11 100644 --- a/src/main/java/com/salesforce/dataloader/dao/csv/CSVFileReader.java +++ b/src/main/java/com/salesforce/dataloader/dao/csv/CSVFileReader.java @@ -224,7 +224,7 @@ public List getColumnNames() { public int getTotalRows() throws DataAccessObjectException { if (totalRows == 0) { if (!isOpen) { - throw new IllegalStateException("File is not open"); + open(); } totalRows = DAORowUtil.calculateTotalRows(this); }