Преглед на файлове

Apply code suggestions

* use Futures done() method
* single deque interaction during cancel()
* use enum compareTo method
Armin Schrenk преди 4 години
родител
ревизия
419eb93cb3
променени са 1 файла, в които са добавени 11 реда и са изтрити 19 реда
  1. 11 19
      src/main/java/org/cryptomator/ui/health/CheckExecutor.java

+ 11 - 19
src/main/java/org/cryptomator/ui/health/CheckExecutor.java

@@ -48,16 +48,16 @@ public class CheckExecutor {
 	}
 
 	public synchronized void cancel() {
-		while (!tasksToExecute.isEmpty()) {
-			var task = (CheckTask) tasksToExecute.removeLast();
+		CheckTask task;
+		while ((task = tasksToExecute.pollLast()) != null) {
 			task.cancel(true);
 		}
 	}
 
 	private class CheckTask extends Task<Void> {
 
-		private Check c;
-		private DiagnosticResult.Severity highestResultSeverity;
+		private final Check c;
+		private DiagnosticResult.Severity highestResultSeverity = DiagnosticResult.Severity.GOOD;
 
 		CheckTask(Check c) {
 			this.c = c;
@@ -69,24 +69,14 @@ public class CheckExecutor {
 				 var cryptor = CryptorProvider.forScheme(vaultConfig.getCipherCombo()).provide(masterkeyClone, csprng)) {
 				c.getHealthCheck().check(vaultPath, vaultConfig, masterkeyClone, cryptor, diagnosis -> {
 					c.getResults().add(Result.create(diagnosis));
-					compareAndSetSeverity(diagnosis.getSeverity());
+					if (highestResultSeverity.compareTo(diagnosis.getSeverity()) < 0) {
+						highestResultSeverity = diagnosis.getSeverity();
+					}
 				});
 			}
 			return null;
 		}
 
-		private void compareAndSetSeverity(DiagnosticResult.Severity newOne) {
-			if (highestResultSeverity != DiagnosticResult.Severity.CRITICAL && newOne == DiagnosticResult.Severity.CRITICAL) {
-				highestResultSeverity = DiagnosticResult.Severity.CRITICAL;
-			} else if (highestResultSeverity != DiagnosticResult.Severity.WARN && newOne == DiagnosticResult.Severity.WARN) {
-				highestResultSeverity = DiagnosticResult.Severity.WARN;
-			} else if (highestResultSeverity != DiagnosticResult.Severity.GOOD && newOne == DiagnosticResult.Severity.GOOD) {
-				highestResultSeverity = DiagnosticResult.Severity.GOOD;
-			} else {
-				highestResultSeverity = DiagnosticResult.Severity.INFO;
-			}
-		}
-
 		@Override
 		protected void running() {
 			c.setState(Check.CheckState.RUNNING);
@@ -95,20 +85,22 @@ public class CheckExecutor {
 		@Override
 		protected void cancelled() {
 			c.setState(Check.CheckState.CANCELLED);
-			tasksToExecute.remove(this);
 		}
 
 		@Override
 		protected void succeeded() {
 			c.setState(Check.CheckState.SUCCEEDED);
 			c.setHighestResultSeverity(highestResultSeverity);
-			tasksToExecute.remove(this);
 		}
 
 		@Override
 		protected void failed() {
 			c.setState(Check.CheckState.ERROR);
 			c.setError(this.getException());
+		}
+
+		@Override
+		protected void done() {
 			tasksToExecute.remove(this);
 		}