Skip to content

Commit

Permalink
Cleaned up CSVStockFileWriter and added a logger for exceptions
Browse files Browse the repository at this point in the history
Deleted CSVStockFileWriterTest
  • Loading branch information
Nikollai committed May 18, 2026
1 parent 91ce42c commit c717175
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 62 deletions.
9 changes: 7 additions & 2 deletions src/main/java/millions/App.java
Original file line number Diff line number Diff line change
@@ -1,18 +1,22 @@
package millions;

import java.math.BigDecimal;
import java.util.logging.Level;
import java.util.logging.Logger;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.stage.Stage;
import millions.controller.GameController;
import millions.controller.fileIO.CSV.CSVStockFileWriter;
import millions.controller.fileIO.InvalidFormatException;
import millions.view.GameView;
import millions.view.StartView;

/** Main JavaFX application entry point for the Millions stock trading game. */
public class App extends Application {

private static final Logger logger = Logger.getLogger(App.class.getName());
@Override
public void start(Stage stage) {
GameController controller = new GameController();
Expand All @@ -36,6 +40,7 @@ public void start(Stage stage) {
Scene gameScene = new Scene(gameView, 1920, 1080);
stage.setScene(gameScene);
} catch (InvalidFormatException e) {
logger.log(Level.FINE, "Invalid format", e);
Alert alert = new Alert(Alert.AlertType.ERROR);
alert.setTitle("Error");
alert.setHeaderText("Error with selected file");
Expand All @@ -44,7 +49,7 @@ public void start(Stage stage) {
alert.showAndWait();

} catch (RuntimeException ex) {
System.err.println(ex);
logger.log(Level.SEVERE, "Runtime error", ex);
System.exit(0);
}
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
import java.io.BufferedWriter;
import java.nio.file.Path;
import java.util.List;
import java.util.logging.Logger;

import millions.controller.fileIO.StockFileWriter;
import millions.model.Stock;

Expand All @@ -13,22 +15,16 @@
*
*/
public class CSVStockFileWriter implements StockFileWriter {
private final List<Stock> stocks;
private static final Logger logger = Logger.getLogger(CSVStockFileWriter.class.getName());
private String finalString;

/**
* Constructor for CSVStockFileWriter
* @param stocks list of stocks to be formatted and written
*/
public CSVStockFileWriter(List<Stock> stocks) {
this.stocks = stocks;
}
public CSVStockFileWriter() {}

/**
* Formats given string to CSV format to prepare for writing to file
*/
@Override
public void formatString() {
public String formatString(List<Stock> stocks) {
StringBuilder builder = new StringBuilder();
stocks.forEach(stock -> {
builder.append(stock.getSymbol());
Expand All @@ -38,23 +34,22 @@ public void formatString() {
builder.append(stock.getSalesPrice().toString());
builder.append("\n");
});
this.finalString = builder.toString();
return builder.toString();
}

/**
* Writes the saved string to a file
* @param stocks List of stock objects to write
* @param path Path to desired file
* @return Boolean for success
*/
// TODO: Disable writing before formatting
@Override
public boolean write(Path path){
public boolean write(List<Stock> stocks, Path path){
try (FileWriter fw = new FileWriter(path.toString()); BufferedWriter writer = new BufferedWriter(fw);) {
this.formatString();
this.formatString(stocks);
writer.write(finalString);
// TODO: exception handling
} catch (IOException e) {
e.printStackTrace();
logger.severe(e.getMessage());
}
return false;
}
Expand Down
7 changes: 5 additions & 2 deletions src/main/java/millions/controller/fileIO/StockFileWriter.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
package millions.controller.fileIO;

import millions.model.Stock;

import java.nio.file.Path;
import java.util.List;

/**
* Interface for writing stock data to a file.
*/
public interface StockFileWriter {
public void formatString();
public boolean write(Path path);
String formatString(List<Stock> stocks);
boolean write(List<Stock> stocks, Path path);
}
43 changes: 0 additions & 43 deletions src/test/java/millions/CSVStockFileWriterTest.java

This file was deleted.

0 comments on commit c717175

Please sign in to comment.