|
@@ -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());
|
|
|
}
|
|
|
|
|
|
}
|