From 35bf19c5d90dad15cbb3369ca9a3f7644868b9c0 Mon Sep 17 00:00:00 2001 From: Nikollai Date: Wed, 11 Mar 2026 16:28:41 +0100 Subject: [PATCH 1/2] Created StockInformationCSVReader --- .../millions/StockInformationCSVReader.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/main/java/millions/StockInformationCSVReader.java diff --git a/src/main/java/millions/StockInformationCSVReader.java b/src/main/java/millions/StockInformationCSVReader.java new file mode 100644 index 0000000..ea0fef9 --- /dev/null +++ b/src/main/java/millions/StockInformationCSVReader.java @@ -0,0 +1,38 @@ +package millions; + +import java.io.*; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + + +public class StockInformationCSVReader { + File file; + + public StockInformationCSVReader(File file) { + this.file = file; + } + + public List readFile() { + List stocks = new ArrayList<>(); + try (Reader reader = new FileReader(file); BufferedReader bufferedReader = new BufferedReader(reader)) { + List lines = bufferedReader.readAllLines(); + for (String line : lines) { + // Skips comment and blank lines + if ( !(line.startsWith("#") || line.isEmpty()) ) { + String[] data = line.split(","); + // Ensures only fields of the correct length are read + if (data.length == 3) { + String symbol = data[0]; + String company = data[1]; + BigDecimal price = new BigDecimal(data[2]); + stocks.add(new Stock(symbol, company, price)); + } + } + } + } catch (IOException e) { + e.printStackTrace(); + } + return stocks; + } +} \ No newline at end of file From 072dbc1049ef04ee9ca87050305a633d197c6d57 Mon Sep 17 00:00:00 2001 From: Nikollai Date: Wed, 11 Mar 2026 16:41:21 +0100 Subject: [PATCH 2/2] Created StockInformationCSVWriter --- .../millions/StockInformationCSVReader.java | 2 +- .../millions/StockInformationCSVWriter.java | 34 +++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 src/main/java/millions/StockInformationCSVWriter.java diff --git a/src/main/java/millions/StockInformationCSVReader.java b/src/main/java/millions/StockInformationCSVReader.java index ea0fef9..7b36a63 100644 --- a/src/main/java/millions/StockInformationCSVReader.java +++ b/src/main/java/millions/StockInformationCSVReader.java @@ -7,7 +7,7 @@ public class StockInformationCSVReader { - File file; + private final File file; public StockInformationCSVReader(File file) { this.file = file; diff --git a/src/main/java/millions/StockInformationCSVWriter.java b/src/main/java/millions/StockInformationCSVWriter.java new file mode 100644 index 0000000..f36dd18 --- /dev/null +++ b/src/main/java/millions/StockInformationCSVWriter.java @@ -0,0 +1,34 @@ +package millions; + +import java.io.*; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +public class StockInformationCSVWriter { + private final List stocks; + private final File destinationFile; + + public StockInformationCSVWriter(List stocks,File destinationFile) { + this.stocks = stocks; + this.destinationFile = destinationFile; + } + + public void write() { + StringBuilder builder = new StringBuilder(); + for (Stock stock : stocks) { + builder.append(stock.getSymbol()); + builder.append(","); + builder.append(stock.getCompany()); + builder.append(","); + // Unsure if price history or just latest price should be saved + builder.append(stock.getSalesPrice().toPlainString()); + builder.append("\n"); + } + try (FileWriter writer = new FileWriter(destinationFile); BufferedWriter bufferedWriter = new BufferedWriter(writer)) { + bufferedWriter.write(builder.toString()); + } catch (IOException e) { + e.printStackTrace(); + } + } +}