diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/TransactionArchive.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/TransactionArchive.java index e69de29..c09cec6 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/TransactionArchive.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/TransactionArchive.java @@ -0,0 +1,101 @@ +package edu.ntnu.idi.idatt2003.g40.mappe; + +import java.util.ArrayList; +import java.util.List; + +/** + * Stores completed transactions. + */ +public class TransactionArchive { + + private final List transactions = new ArrayList<>(); + + /** + * Creates an empty transaction archive. + */ + public TransactionArchive() { + } + + /** + * Adds a transaction to the archive. + * + * @param transaction the transaction to add + * @return true if the transaction was added + */ + public boolean add(Transaction transaction) { + return transactions.add(transaction); + } + + /** + * Checks whether the archive is empty. + * + * @return true if no transactions exist + */ + public boolean isEmpty() { + return transactions.isEmpty(); + } + + /** + * Returns all transactions from a given week. + * + * @param week the week number + * @return list of transactions from the given week + */ + public List getTransactions(int week) { + List result = new ArrayList<>(); + for (Transaction transaction : transactions) { + if (transaction.getWeek() == week) { + result.add(transaction); + } + } + return result; + } + + /** + * Returns all purchase transactions from a given week. + * + * @param week the week number + * @return list of purchases from the given week + */ + public List getPurchases(int week) { + List result = new ArrayList<>(); + for (Transaction transaction : transactions) { + if (transaction instanceof Purchase purchase && transaction.getWeek() == week) { + result.add(purchase); + } + } + return result; + } + + /** + * Returns all sale transactions from a given week. + * + * @param week the week number + * @return list of sales from the given week + */ + public List getSales(int week) { + List result = new ArrayList<>(); + for (Transaction transaction : transactions) { + if (transaction instanceof Sale sale && transaction.getWeek() == week) { + result.add(sale); + } + } + return result; + } + + /** + * Counts the number of distinct weeks with transactions. + * + * @return number of distinct weeks + */ + public int countDistinctWeeks() { + List weeks = new ArrayList<>(); + for (Transaction transaction : transactions) { + int week = transaction.getWeek(); + if (!weeks.contains(week)) { + weeks.add(week); + } + } + return weeks.size(); + } +} \ No newline at end of file