Bug wrong count bulk upload dialog when runtime exception (#417)

* Fix for the bug by synchronizing the counts based on total target count

Signed-off-by: Jonathan Philip Knoblauch <JonathanPhilip.Knoblauch@bosch-si.com>

* Extended sync function with bulk progress bar set to 100% if runtime exception is thrown

Signed-off-by: Jonathan Philip Knoblauch <JonathanPhilip.Knoblauch@bosch-si.com>

* Changed method parameter to totalNumberOfLines

Signed-off-by: Jonathan Philip Knoblauch <JonathanPhilip.Knoblauch@bosch-si.com>

* Changed parameter type to long

Signed-off-by: Jonathan Philip Knoblauch <JonathanPhilip.Knoblauch@bosch-si.com>
This commit is contained in:
Jonathan Knoblauch
2017-01-18 15:49:46 +01:00
committed by Kai Zimmermann
parent 8288904b1e
commit 59aba08666

View File

@@ -193,11 +193,11 @@ public class BulkUploadHandler extends CustomComponent
private void readFileStream(final InputStream tempStream) {
String line;
final long totalNumberOfLines = getTotalNumberOfLines();
try (final BufferedReader reader = new BufferedReader(
new InputStreamReader(tempStream, Charset.defaultCharset()))) {
LOG.info("Bulk file upload started");
long innerCounter = 0;
final double totalFileSize = getTotalNumberOfLines();
/**
* Once control is in upload succeeded method automatically
@@ -207,7 +207,7 @@ public class BulkUploadHandler extends CustomComponent
eventBus.publish(this, new TargetTableEvent(TargetComponentEvent.BULK_UPLOAD_PROCESS_STARTED));
while ((line = reader.readLine()) != null) {
innerCounter++;
readEachLine(line, innerCounter, totalFileSize);
readEachLine(line, innerCounter, totalNumberOfLines);
}
} catch (final IOException e) {
@@ -217,7 +217,7 @@ public class BulkUploadHandler extends CustomComponent
} finally {
deleteFile();
}
syncCountAfterUpload();
syncCountAfterUpload(totalNumberOfLines);
doAssignments();
eventBus.publish(this, new TargetTableEvent(TargetComponentEvent.BULK_UPLOAD_COMPLETED));
// Clearing after assignments are done
@@ -225,21 +225,21 @@ public class BulkUploadHandler extends CustomComponent
resetCounts();
}
private void syncCountAfterUpload() {
if (managementUIState.getTargetTableFilters().getBulkUpload()
.getSucessfulUploadCount() != successfullTargetCount) {
private void syncCountAfterUpload(final long totalNumberOfLines) {
if ((successfullTargetCount + failedTargetCount) != totalNumberOfLines) {
// something went wrong due to runtimeexception etc.
final long syncedFailedTargetCount = totalNumberOfLines - successfullTargetCount;
managementUIState.getTargetTableFilters().getBulkUpload()
.setSucessfulUploadCount(successfullTargetCount);
eventBus.publish(this, new TargetTableEvent(TargetComponentEvent.BULK_TARGET_CREATED));
}
if (managementUIState.getTargetTableFilters().getBulkUpload().getFailedUploadCount() != failedTargetCount) {
managementUIState.getTargetTableFilters().getBulkUpload().setSucessfulUploadCount(failedTargetCount);
managementUIState.getTargetTableFilters().getBulkUpload().setFailedUploadCount(syncedFailedTargetCount);
managementUIState.getTargetTableFilters().getBulkUpload().setProgressBarCurrentValue(1);
}
}
private double getTotalNumberOfLines() {
private long getTotalNumberOfLines() {
double totalFileSize = 0;
long totalFileSize = 0;
try (InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(tempFile),
Charset.defaultCharset())) {
try (BufferedReader readerForSize = new BufferedReader(inputStreamReader)) {
@@ -269,7 +269,7 @@ public class BulkUploadHandler extends CustomComponent
tempFile = null;
}
private void readEachLine(final String line, final double innerCounter, final double totalFileSize) {
private void readEachLine(final String line, final long innerCounter, final long totalNumberOfLines) {
final String csvDelimiter = ",";
final String[] targets = line.split(csvDelimiter);
if (targets.length == 2) {
@@ -281,7 +281,7 @@ public class BulkUploadHandler extends CustomComponent
}
final float current = managementUIState.getTargetTableFilters().getBulkUpload()
.getProgressBarCurrentValue();
final float next = (float) (innerCounter / totalFileSize);
final float next = innerCounter / totalNumberOfLines;
if (Math.abs(next - 0.1) < 0.00001 || current - next >= 0 || next - current >= 0.05
|| Math.abs(next - 1) < 0.00001) {
managementUIState.getTargetTableFilters().getBulkUpload().setProgressBarCurrentValue(next);