From 59aba086666ff3c9b98c01d611768f8d78516047 Mon Sep 17 00:00:00 2001 From: Jonathan Knoblauch Date: Wed, 18 Jan 2017 15:49:46 +0100 Subject: [PATCH] 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 * Extended sync function with bulk progress bar set to 100% if runtime exception is thrown Signed-off-by: Jonathan Philip Knoblauch * Changed method parameter to totalNumberOfLines Signed-off-by: Jonathan Philip Knoblauch * Changed parameter type to long Signed-off-by: Jonathan Philip Knoblauch --- .../targettable/BulkUploadHandler.java | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/BulkUploadHandler.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/BulkUploadHandler.java index 70ee7606e..6266e67fb 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/BulkUploadHandler.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/BulkUploadHandler.java @@ -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);