From 188230724217556fce401366542181491f5fef63 Mon Sep 17 00:00:00 2001 From: nathanrsxtn Date: Fri, 25 Mar 2022 08:46:04 -0600 Subject: [PATCH] Make ShooterTuner OutputStream lazy --- src/main/java/frc4388/robot/commands/ShooterTuner.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/frc4388/robot/commands/ShooterTuner.java b/src/main/java/frc4388/robot/commands/ShooterTuner.java index e5aab2f..3cc1bb4 100644 --- a/src/main/java/frc4388/robot/commands/ShooterTuner.java +++ b/src/main/java/frc4388/robot/commands/ShooterTuner.java @@ -5,6 +5,7 @@ import java.io.OutputStream; import java.nio.file.Files; import java.nio.file.StandardOpenOption; import java.util.Arrays; +import java.util.Objects; import com.diffplug.common.base.Errors; @@ -36,8 +37,10 @@ public class ShooterTuner extends CommandBase { m_shotCsvAppender = new PersistentInstantCommand(this::appendCsv).withName("Append"); m_shooterTableView = new ShooterTableEditor(); // m_shooterTableUpdater = new PersistentInstantCommand(m_boomBoom::loadShooterTable).withName("Reload"); + } - csvOutputStream = Errors.rethrow().get(() -> Files.newOutputStream(new File(Filesystem.getDeployDirectory(), "ShooterData.csv").toPath(), StandardOpenOption.WRITE, StandardOpenOption.APPEND)); + private OutputStream getCsvOutputStream() { + return Objects.requireNonNullElseGet(csvOutputStream, () -> Errors.rethrow().get(() -> Files.newOutputStream(new File(Filesystem.getDeployDirectory(), "ShooterData.csv").toPath(), StandardOpenOption.WRITE, StandardOpenOption.APPEND))); } private class ShotEditor implements Sendable { @@ -79,7 +82,7 @@ public class ShooterTuner extends CommandBase { m_boomBoom.m_shooterTable[0].drumVelocity ); byte[] b = s.getBytes(); - Errors.log().run(() -> csvOutputStream.write(b)); + Errors.log().run(() -> getCsvOutputStream().write(b)); } @Override @@ -107,7 +110,7 @@ public class ShooterTuner extends CommandBase { @Override public void end(boolean interrupted) { - Errors.log().run(csvOutputStream::close); + Errors.log().run(getCsvOutputStream()::close); m_boomBoom.loadShooterTable(); } @Override