Explorar o código

show directory containing exported health report

Armin Schrenk %!s(int64=4) %!d(string=hai) anos
pai
achega
a8364a8c1a

+ 9 - 14
main/ui/src/main/java/org/cryptomator/ui/health/ReportWriter.java

@@ -3,13 +3,12 @@ package org.cryptomator.ui.health;
 import org.apache.commons.lang3.exception.ExceptionUtils;
 import org.cryptomator.common.Environment;
 import org.cryptomator.common.vaults.Vault;
-import org.cryptomator.common.vaults.Volume;
 import org.cryptomator.cryptofs.VaultConfig;
-import org.cryptomator.ui.common.HostServiceRevealer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import javax.inject.Inject;
+import javafx.application.Application;
 import javafx.concurrent.Worker;
 import java.io.BufferedWriter;
 import java.io.IOException;
@@ -48,24 +47,24 @@ public class ReportWriter {
 
 	private final Vault vault;
 	private final VaultConfig vaultConfig;
-	private final Path path;
-	private final HostServiceRevealer revealer;
+	private final Application application;
+	private final Path exportDestination;
 
 	@Inject
-	public ReportWriter(@HealthCheckWindow Vault vault, AtomicReference<VaultConfig> vaultConfigRef, Environment env, HostServiceRevealer revealer) {
+	public ReportWriter(@HealthCheckWindow Vault vault, AtomicReference<VaultConfig> vaultConfigRef, Application application, Environment env) {
 		this.vault = vault;
 		this.vaultConfig = Objects.requireNonNull(vaultConfigRef.get());
-		this.revealer = revealer;
-		this.path = env.getLogDir().orElse(Path.of(System.getProperty("user.home"))).resolve("healthReport_" + vault.getDisplayName() + "_" + TIME_STAMP.format(Instant.now()) + ".log");
+		this.application = application;
+		this.exportDestination = env.getLogDir().orElse(Path.of(System.getProperty("user.home"))).resolve("healthReport_" + vault.getDisplayName() + "_" + TIME_STAMP.format(Instant.now()) + ".log");
 	}
 
 	protected void writeReport(Collection<HealthCheckTask> tasks) throws IOException {
-		try (var out = Files.newOutputStream(path, StandardOpenOption.CREATE, StandardOpenOption.WRITE, StandardOpenOption.TRUNCATE_EXISTING); //
+		try (var out = Files.newOutputStream(exportDestination, StandardOpenOption.CREATE, StandardOpenOption.WRITE, StandardOpenOption.TRUNCATE_EXISTING); //
 			 var writer = new BufferedWriter(new OutputStreamWriter(out, StandardCharsets.UTF_8))) {
 			writer.write(REPORT_HEADER.formatted(vaultConfig.getId(), vault.getDisplayName(), vault.getPath()));
 			for (var task : tasks) {
 				if (task.getState() == Worker.State.READY) {
-					LOG.debug("Skipping not performed check {}.",task.getCheck().identifier());
+					LOG.debug("Skipping not performed check {}.", task.getCheck().identifier());
 					continue;
 				}
 				writer.write(REPORT_CHECK_HEADER.formatted(task.getCheck().identifier()));
@@ -100,11 +99,7 @@ public class ReportWriter {
 	}
 
 	private void reveal() {
-		try {
-			revealer.reveal(path);
-		} catch (Volume.VolumeException e) {
-			//should not happen
-		}
+		application.getHostServices().showDocument(exportDestination.getParent().toUri().toString());
 	}
 
 }