From 56eb0b3f0823387abd5ae8905292d8511d5cfd71 Mon Sep 17 00:00:00 2001 From: martin Date: Thu, 5 Mar 2026 10:32:58 +0100 Subject: [PATCH 01/12] adding google formatting --- .vscode/settings.json | 6 ++ src/main/java/Main.java | 3 +- src/main/java/temppackage/Exchange.java | 71 +++++++++---------- src/main/java/temppackage/Player.java | 12 ++-- src/main/java/temppackage/Portfolio.java | 5 ++ src/main/java/temppackage/Purchase.java | 19 ++--- src/main/java/temppackage/Sale.java | 19 +++-- src/main/java/temppackage/Share.java | 3 + src/main/java/temppackage/Stock.java | 7 +- src/main/java/temppackage/Transaction.java | 67 +++++++++-------- .../java/temppackage/TransactionArchive.java | 70 +++++++++--------- .../calculators/PurchaseCalculator.java | 10 ++- .../calculators/SaleCalculator.java | 12 ++-- .../calculators/TransactionCalculator.java | 3 + 14 files changed, 158 insertions(+), 149 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..ed34fc0 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,6 @@ +{ + "java.configuration.updateBuildConfiguration": "interactive", + "java.format.settings.profile": "GoogleStyle", + "editor.formatOnSave": true, + "editor.defaultFormatter": "redhat.java", +} diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 7046417..6029b2a 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,2 +1 @@ -public class Main { -} +public class Main {} diff --git a/src/main/java/temppackage/Exchange.java b/src/main/java/temppackage/Exchange.java index ea8eef2..54ab83d 100644 --- a/src/main/java/temppackage/Exchange.java +++ b/src/main/java/temppackage/Exchange.java @@ -7,42 +7,37 @@ import java.util.Random; public class Exchange { - private String name; - private Map stocks; - private int weekNumber; - private Random random = new Random(); - - public Exchange(String name, List stockList){ - this.name = name; - this.stocks = new HashMap<>(); - this.weekNumber = 1; - } - - public void buy(Player player, Stock stock, BigDecimal quantity){ - Share shareToBuy = new Share(stock, quantity, stock.getPrice()); - Purchase purchase = new Purchase(shareToBuy, this.weekNumber); - purchase.commit(player); - } - - public void sell(Player player, Share share){ - Sale sale = new Sale(share, weekNumber); - sale.commit(player); - } - - public void advance(){ - this.weekNumber++; - } - - - public Map getStocks(){ - return this.stocks; - } - - public Stock geStock(String symbol){ - // filter med symbol eller company name - } - - - - + private String name; + private Map stocks; + private int weekNumber; + private Random random = new Random(); + + public Exchange(String name, List stockList) { + this.name = name; + this.stocks = new HashMap<>(); + this.weekNumber = 1; + } + + public void buy(Player player, Stock stock, BigDecimal quantity) { + Share shareToBuy = new Share(stock, quantity, stock.getPrice()); + Purchase purchase = new Purchase(shareToBuy, this.weekNumber); + purchase.commit(player); + } + + public void sell(Player player, Share share) { + Sale sale = new Sale(share, weekNumber); + sale.commit(player); + } + + public void advance() { + this.weekNumber++; + } + + public Map getStocks() { + return this.stocks; + } + + public Stock geStock(String symbol) { + // filter med symbol eller company name + } } diff --git a/src/main/java/temppackage/Player.java b/src/main/java/temppackage/Player.java index b1b2757..4f2b6d6 100644 --- a/src/main/java/temppackage/Player.java +++ b/src/main/java/temppackage/Player.java @@ -3,11 +3,9 @@ import java.math.BigDecimal; public class Player { - private String name; - private BigDecimal startingMoney; - private BigDecimal money; - private Portfolio portfolio; - private TransactionArchive transactionArchive; - - + private String name; + private BigDecimal startingMoney; + private BigDecimal money; + private Portfolio portfolio; + private TransactionArchive transactionArchive; } diff --git a/src/main/java/temppackage/Portfolio.java b/src/main/java/temppackage/Portfolio.java index adc4af0..ccadd19 100644 --- a/src/main/java/temppackage/Portfolio.java +++ b/src/main/java/temppackage/Portfolio.java @@ -5,18 +5,23 @@ public class Portfolio { List shares; + public Portfolio() { shares = new ArrayList<>(); } + public boolean addShare(Share share) { return this.shares.add(share); } + public boolean removeShare(Share share) { return this.shares.remove(share); } + public List getShares() { return this.shares; } + public boolean contains(Share share) { return this.shares.contains(share); } diff --git a/src/main/java/temppackage/Purchase.java b/src/main/java/temppackage/Purchase.java index 6ff7a17..b929f27 100644 --- a/src/main/java/temppackage/Purchase.java +++ b/src/main/java/temppackage/Purchase.java @@ -1,17 +1,12 @@ package temppackage; -public class Purchase extends Transaction{ +public class Purchase extends Transaction { + public Purchase(Share share, int week) {} - public Purchase(Share share, int week){ - - - } - - @Override - public void commit(Player player) { - // TODO Auto-generated method stub - super.commit(player); - } - + @Override + public void commit(Player player) { + // TODO Auto-generated method stub + super.commit(player); + } } diff --git a/src/main/java/temppackage/Sale.java b/src/main/java/temppackage/Sale.java index 7173e34..958389b 100644 --- a/src/main/java/temppackage/Sale.java +++ b/src/main/java/temppackage/Sale.java @@ -1,14 +1,11 @@ package temppackage; -public class Sale extends Transaction{ - public Sale(Share share, int week){ - - } - - @Override - public void commit(Player player) { - // TODO Auto-generated method stub - super.commit(player); - } - +public class Sale extends Transaction { + public Sale(Share share, int week) {} + + @Override + public void commit(Player player) { + // TODO Auto-generated method stub + super.commit(player); + } } diff --git a/src/main/java/temppackage/Share.java b/src/main/java/temppackage/Share.java index 8055c3f..77694f9 100644 --- a/src/main/java/temppackage/Share.java +++ b/src/main/java/temppackage/Share.java @@ -12,12 +12,15 @@ public Share(Stock stock, BigDecimal quantity, BigDecimal purchasePrice) { this.quantity = quantity; this.purchasePrice = purchasePrice; } + public Stock getStock() { return this.stock; } + public BigDecimal getQuantity() { return this.quantity; } + public BigDecimal getPurchasePrice() { return this.purchasePrice; } diff --git a/src/main/java/temppackage/Stock.java b/src/main/java/temppackage/Stock.java index dfa2c23..880b035 100644 --- a/src/main/java/temppackage/Stock.java +++ b/src/main/java/temppackage/Stock.java @@ -7,20 +7,25 @@ public class Stock { String symbol; String company; List prices; - public Stock(String symbol, String company, List prices){ + + public Stock(String symbol, String company, List prices) { this.symbol = symbol; this.company = company; this.prices = prices; } + public String getSymbol() { return this.symbol; } + public String getCompany() { return this.company; } + public BigDecimal getPrice() { return this.prices.getLast(); } + public void addNewSalesPrice(BigDecimal price) { this.prices.add(price); } diff --git a/src/main/java/temppackage/Transaction.java b/src/main/java/temppackage/Transaction.java index 3c741a8..ae4a355 100644 --- a/src/main/java/temppackage/Transaction.java +++ b/src/main/java/temppackage/Transaction.java @@ -3,40 +3,37 @@ import temppackage.calculators.TransactionCalculator; public abstract class Transaction { - private Share share; - private int week; - private TransactionCalculator transactionCalculator; - private boolean commited; - - protected Transaction(Share share, int week, TransactionCalculator transactionCalculator){ - this.share = share; - this.week = week; - this.transactionCalculator = transactionCalculator; - this.commited = commited; - } - - public Share getShare(){ - return this.share; - } - - public int getWeeek(){ - return this.week; - } - - public TransactionCalculator getCalculator(){ - return this.transactionCalculator; - } - - public boolean isCommitted(){ - return this.commited; - } - - public void commit(Player player){ - //TODO - this.commited = true; - } - - - + private Share share; + private int week; + private TransactionCalculator transactionCalculator; + private boolean commited; + + protected Transaction(Share share, int week, TransactionCalculator transactionCalculator) { + this.share = share; + this.week = week; + this.transactionCalculator = transactionCalculator; + this.commited = commited; + } + + public Share getShare() { + return this.share; + } + + public int getWeek() { + return this.week; + } + + public TransactionCalculator getCalculator() { + return this.transactionCalculator; + } + + public boolean isCommitted() { + return this.commited; + } + + public void commit(Player player) { + // TODO + this.commited = true; + } } diff --git a/src/main/java/temppackage/TransactionArchive.java b/src/main/java/temppackage/TransactionArchive.java index a6d5c6e..9888c8c 100644 --- a/src/main/java/temppackage/TransactionArchive.java +++ b/src/main/java/temppackage/TransactionArchive.java @@ -2,46 +2,44 @@ import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; public class TransactionArchive { - List transactions; + List transactions; - public TransactionArchive() { - this.transactions = new ArrayList<>(); - } - - public boolean add(Transaction transaction){ - if (transactions.contains(transaction)){ - return false; - } - this.transactions.add(transaction); - return true; - } - - public boolean isEmpty(){ - return transactions.isEmpty(); - } - - public List getTransactions(int week){ - //TODO - return null; - } + public TransactionArchive() { + this.transactions = new ArrayList<>(); + } - public List getPurchases(int week){ - //TODO - return null; + public boolean add(Transaction transaction) { + if (transactions.contains(transaction)) { + return false; } - - public List getSales(int week){ - //TODO - return null; - } - - public int countDistinctWeeks(){ - //TODO - return 0; - } - - + this.transactions.add(transaction); + return true; + } + + public boolean isEmpty() { + return transactions.isEmpty(); + } + + public List getTransactions(int week) { + return transactions.stream().filter(x -> x.getWeek() == week).collect(Collectors.toList()); + } + + public List getPurchases(int week) { + // TODO + return null; + } + + public List getSales(int week) { + // TODO + return null; + } + + public int countDistinctWeeks() { + // TODO + return 0; + } } diff --git a/src/main/java/temppackage/calculators/PurchaseCalculator.java b/src/main/java/temppackage/calculators/PurchaseCalculator.java index 9f6dc06..d80aa8f 100644 --- a/src/main/java/temppackage/calculators/PurchaseCalculator.java +++ b/src/main/java/temppackage/calculators/PurchaseCalculator.java @@ -1,31 +1,35 @@ package temppackage.calculators; -import temppackage.Share; - import java.math.BigDecimal; +import temppackage.Share; public class PurchaseCalculator implements TransactionCalculator { BigDecimal purchasePrice; BigDecimal quantity; + public PurchaseCalculator(Share share) { super(); this.purchasePrice = share.getPurchasePrice(); this.quantity = share.getQuantity(); } + @Override public BigDecimal calculateGross() { return this.purchasePrice.multiply(this.quantity); } + @Override public BigDecimal calculateComission() { return this.calculateGross().multiply(new BigDecimal("0.05")); } + @Override public BigDecimal calculateTax() { return new BigDecimal("0"); } + @Override public BigDecimal calculateTotal() { - return this.calculateGross().add(this.calculateTax().add(this.calculateComission())) ; + return this.calculateGross().add(this.calculateTax().add(this.calculateComission())); } } diff --git a/src/main/java/temppackage/calculators/SaleCalculator.java b/src/main/java/temppackage/calculators/SaleCalculator.java index af66c97..2e63ef4 100644 --- a/src/main/java/temppackage/calculators/SaleCalculator.java +++ b/src/main/java/temppackage/calculators/SaleCalculator.java @@ -2,17 +2,18 @@ import java.math.BigDecimal; import java.math.RoundingMode; - import temppackage.Share; -public class SaleCalculator implements TransactionCalculator{ +public class SaleCalculator implements TransactionCalculator { BigDecimal purchasePrice; BigDecimal salesPrice; BigDecimal quantity; + public SaleCalculator(Share share) { super(); this.purchasePrice = share.getPurchasePrice(); } + @Override public BigDecimal calculateGross() { return salesPrice.multiply(quantity); @@ -26,8 +27,11 @@ public BigDecimal calculateComission() { @Override public BigDecimal calculateTax() { BigDecimal purchaseCosts = this.purchasePrice.multiply(this.quantity); - BigDecimal earnings = this.calculateGross().subtract(this.calculateComission()).subtract(purchaseCosts); - return earnings.multiply(new BigDecimal("30")).divide(new BigDecimal("100"), RoundingMode.HALF_UP); + BigDecimal earnings = + this.calculateGross().subtract(this.calculateComission()).subtract(purchaseCosts); + return earnings + .multiply(new BigDecimal("30")) + .divide(new BigDecimal("100"), RoundingMode.HALF_UP); } @Override diff --git a/src/main/java/temppackage/calculators/TransactionCalculator.java b/src/main/java/temppackage/calculators/TransactionCalculator.java index de2e179..78699bc 100644 --- a/src/main/java/temppackage/calculators/TransactionCalculator.java +++ b/src/main/java/temppackage/calculators/TransactionCalculator.java @@ -4,7 +4,10 @@ public interface TransactionCalculator { public BigDecimal calculateGross(); + public BigDecimal calculateComission(); + public BigDecimal calculateTax(); + public BigDecimal calculateTotal(); } From a1a4d2e9a4b453ad0c8dfd45b01daae23e3b7e0a Mon Sep 17 00:00:00 2001 From: martin Date: Thu, 5 Mar 2026 12:10:35 +0100 Subject: [PATCH 02/12] Adding vsc settings to ignore. add google_checks --- .gitignore | 5 +++-- pom.xml | 9 +++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 480bdf5..9bf95a9 100644 --- a/.gitignore +++ b/.gitignore @@ -33,7 +33,8 @@ build/ !**/src/test/**/build/ ### VS Code ### -.vscode/ +#.vscode/ +!.vscode/settings.json ### Mac OS ### -.DS_Store \ No newline at end of file +.DS_Store diff --git a/pom.xml b/pom.xml index 44b6f4e..5a5267a 100644 --- a/pom.xml +++ b/pom.xml @@ -56,6 +56,15 @@ maven-javadoc-plugin 3.12.0 + + org.apache.maven.plugins + maven-checkstyle-plugin + 3.3.1 + + google_checks.xml + true + + From 570e37cb6795abd9d91bf1c5a8fb097fbc0725f4 Mon Sep 17 00:00:00 2001 From: martin Date: Thu, 5 Mar 2026 17:43:49 +0100 Subject: [PATCH 03/12] Adding player class --- src/main/java/temppackage/Player.java | 32 +++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/main/java/temppackage/Player.java b/src/main/java/temppackage/Player.java index 4f2b6d6..1e12a80 100644 --- a/src/main/java/temppackage/Player.java +++ b/src/main/java/temppackage/Player.java @@ -8,4 +8,36 @@ public class Player { private BigDecimal money; private Portfolio portfolio; private TransactionArchive transactionArchive; + + public Player(String name, BigDecimal startingMoney) { + this.name = name; + this.startingMoney = startingMoney; + this.money = startingMoney; + this.portfolio = new Portfolio(); + this.transactionArchive = new TransactionArchive(); + } + + public void addMoney(BigDecimal amount) { + this.money = this.money.add(amount); + } + + public void withdrawMoney(BigDecimal amount) { + this.money = this.money.subtract(amount); + } + + public String getName() { + return this.name; + } + + public BigDecimal getMoney() { + return this.money; + } + + public Portfolio getPortfolio() { + return this.portfolio; + } + + public TransactionArchive getTransactionArchive() { + return this.transactionArchive; + } } From 9964e4bb59aee83289609be282df580327a03a0d Mon Sep 17 00:00:00 2001 From: martin Date: Thu, 5 Mar 2026 17:44:10 +0100 Subject: [PATCH 04/12] Finishing Exchange methods, and spelling --- src/main/java/temppackage/Exchange.java | 39 ++++++++++++++++++++----- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/src/main/java/temppackage/Exchange.java b/src/main/java/temppackage/Exchange.java index 54ab83d..2e24ebc 100644 --- a/src/main/java/temppackage/Exchange.java +++ b/src/main/java/temppackage/Exchange.java @@ -1,6 +1,7 @@ package temppackage; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -16,10 +17,15 @@ public Exchange(String name, List stockList) { this.name = name; this.stocks = new HashMap<>(); this.weekNumber = 1; + + // Populate the stocks map to get ticker -> stock + for (Stock stock : stockList) { + this.stocks.put(stock.getSymbol(), stock); + } } public void buy(Player player, Stock stock, BigDecimal quantity) { - Share shareToBuy = new Share(stock, quantity, stock.getPrice()); + Share shareToBuy = new Share(stock, quantity, stock.getSalesPrice()); Purchase purchase = new Purchase(shareToBuy, this.weekNumber); purchase.commit(player); } @@ -29,15 +35,34 @@ public void sell(Player player, Share share) { sale.commit(player); } - public void advance() { - this.weekNumber++; - } - public Map getStocks() { return this.stocks; } - public Stock geStock(String symbol) { - // filter med symbol eller company name + public Stock getStock(String symbol) { + return this.stocks.get(symbol); + } + + public boolean hasStock(String symbol) { + return this.stocks.containsKey(symbol); + } + + public List findStocks(String searchTerm) { + return this.stocks.values().stream() + .filter(s -> s.getSymbol().contains(searchTerm) || s.getCompany().contains(searchTerm)) + .toList(); + } + + public void advance() { + this.weekNumber++; + for (Stock stock : this.stocks.values()) { + double change = 0.9 + random.nextDouble() * 0.2; + stock.addNewSalesPrice( + stock + .getSalesPrice() + .multiply(BigDecimal.valueOf(change)) + .setScale(2, RoundingMode.HALF_UP)); + // RoundingMode from AI suggestion + } } } From 74507e4fe3ea7e7dc756d64d8869be44fa7d8c7f Mon Sep 17 00:00:00 2001 From: martin Date: Thu, 5 Mar 2026 17:44:39 +0100 Subject: [PATCH 05/12] Finishing sale constructor --- src/main/java/temppackage/Sale.java | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/main/java/temppackage/Sale.java b/src/main/java/temppackage/Sale.java index 958389b..2507589 100644 --- a/src/main/java/temppackage/Sale.java +++ b/src/main/java/temppackage/Sale.java @@ -1,11 +1,25 @@ package temppackage; +import temppackage.calculators.SaleCalculator; + public class Sale extends Transaction { - public Sale(Share share, int week) {} + + public Sale(Share share, int week) { + super(share, week, new SaleCalculator(share)); + } @Override public void commit(Player player) { - // TODO Auto-generated method stub - super.commit(player); + if (isCommitted()) { + throw new IllegalStateException("Already committed"); + } + + if (!player.getPortfolio().contains(getShare())) { + throw new IllegalStateException("Does not own the share"); + } + player.addMoney(getCalculator().calculateTotal()); + player.getPortfolio().removeShare(getShare()); + player.getTransactionArchive().add(this); + setCommitted(true); } } From ec4cf027709446363a282b86f6b62b66d38e1cf1 Mon Sep 17 00:00:00 2001 From: martin Date: Thu, 5 Mar 2026 17:45:03 +0100 Subject: [PATCH 06/12] Adding GetShares to Portfolio --- src/main/java/temppackage/Portfolio.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/temppackage/Portfolio.java b/src/main/java/temppackage/Portfolio.java index ccadd19..89c19c2 100644 --- a/src/main/java/temppackage/Portfolio.java +++ b/src/main/java/temppackage/Portfolio.java @@ -22,6 +22,12 @@ public List getShares() { return this.shares; } + public List getShares(String symbol) { + return this.shares.stream() + .filter(share -> share.getStock().getSymbol().equals(symbol)) + .toList(); + } + public boolean contains(Share share) { return this.shares.contains(share); } From 3ceaf8af2a23bd2474eebbc2d256ff39cb174632 Mon Sep 17 00:00:00 2001 From: martin Date: Thu, 5 Mar 2026 17:45:32 +0100 Subject: [PATCH 07/12] Finishing Purchase methods and constructor --- src/main/java/temppackage/Purchase.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/main/java/temppackage/Purchase.java b/src/main/java/temppackage/Purchase.java index b929f27..0db1f8e 100644 --- a/src/main/java/temppackage/Purchase.java +++ b/src/main/java/temppackage/Purchase.java @@ -1,12 +1,25 @@ package temppackage; +import temppackage.calculators.PurchaseCalculator; + public class Purchase extends Transaction { - public Purchase(Share share, int week) {} + public Purchase(Share share, int week) { + super(share, week, new PurchaseCalculator(share)); + } @Override public void commit(Player player) { - // TODO Auto-generated method stub - super.commit(player); + if (isCommitted()) { + throw new IllegalStateException("Already committed"); + } + + if (player.getMoney().compareTo(getCalculator().calculateTotal()) < 0) { + throw new IllegalStateException("Not enought money"); + } + player.withdrawMoney(getCalculator().calculateTotal()); + player.getPortfolio().addShare(getShare()); + player.getTransactionArchive().add(this); + setCommitted(true); } } From 8b666ea20524eaf0b28401e175510d23153b3a80 Mon Sep 17 00:00:00 2001 From: martin Date: Thu, 5 Mar 2026 17:45:52 +0100 Subject: [PATCH 08/12] Fix: spelling --- src/main/java/temppackage/Stock.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/temppackage/Stock.java b/src/main/java/temppackage/Stock.java index 880b035..193d457 100644 --- a/src/main/java/temppackage/Stock.java +++ b/src/main/java/temppackage/Stock.java @@ -22,7 +22,7 @@ public String getCompany() { return this.company; } - public BigDecimal getPrice() { + public BigDecimal getSalesPrice() { return this.prices.getLast(); } From 3172a5e2a2cbb3522e39098281e4b71fae693262 Mon Sep 17 00:00:00 2001 From: martin Date: Thu, 5 Mar 2026 17:46:12 +0100 Subject: [PATCH 09/12] spelling. Adding abstract to class --- src/main/java/temppackage/Transaction.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/main/java/temppackage/Transaction.java b/src/main/java/temppackage/Transaction.java index ae4a355..6a000ec 100644 --- a/src/main/java/temppackage/Transaction.java +++ b/src/main/java/temppackage/Transaction.java @@ -7,13 +7,13 @@ public abstract class Transaction { private Share share; private int week; private TransactionCalculator transactionCalculator; - private boolean commited; + private boolean committed; protected Transaction(Share share, int week, TransactionCalculator transactionCalculator) { this.share = share; this.week = week; this.transactionCalculator = transactionCalculator; - this.commited = commited; + this.committed = false; } public Share getShare() { @@ -29,11 +29,12 @@ public TransactionCalculator getCalculator() { } public boolean isCommitted() { - return this.commited; + return this.committed; } - public void commit(Player player) { - // TODO - this.commited = true; + protected void setCommitted(boolean committed) { + this.committed = committed; } + + public abstract void commit(Player player); } From 687ffae6859415e5c7fbf5750669b3e07b0ce3c2 Mon Sep 17 00:00:00 2001 From: martin Date: Thu, 5 Mar 2026 17:47:49 +0100 Subject: [PATCH 10/12] Adding TransactionArchive methods --- src/main/java/temppackage/TransactionArchive.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/main/java/temppackage/TransactionArchive.java b/src/main/java/temppackage/TransactionArchive.java index 9888c8c..8b257b2 100644 --- a/src/main/java/temppackage/TransactionArchive.java +++ b/src/main/java/temppackage/TransactionArchive.java @@ -29,17 +29,20 @@ public List getTransactions(int week) { } public List getPurchases(int week) { - // TODO - return null; + return transactions.stream() + .filter(t -> t.getWeek() == week && t instanceof Purchase) + .map(t -> (Purchase) t) + .collect(Collectors.toList()); } public List getSales(int week) { - // TODO - return null; + return transactions.stream() + .filter(t -> t.getWeek() == week && t instanceof Sale) + .map(t -> (Sale) t) + .collect(Collectors.toList()); } public int countDistinctWeeks() { - // TODO - return 0; + return (int) transactions.stream().map(Transaction::getWeek).distinct().count(); } } From baacde8d83019232af31224f4acb2054d4dc99bc Mon Sep 17 00:00:00 2001 From: martin Date: Thu, 5 Mar 2026 17:49:00 +0100 Subject: [PATCH 11/12] spelling --- .../java/temppackage/calculators/PurchaseCalculator.java | 4 ++-- src/main/java/temppackage/calculators/SaleCalculator.java | 6 +++--- .../java/temppackage/calculators/TransactionCalculator.java | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/temppackage/calculators/PurchaseCalculator.java b/src/main/java/temppackage/calculators/PurchaseCalculator.java index d80aa8f..4f7a3f1 100644 --- a/src/main/java/temppackage/calculators/PurchaseCalculator.java +++ b/src/main/java/temppackage/calculators/PurchaseCalculator.java @@ -19,7 +19,7 @@ public BigDecimal calculateGross() { } @Override - public BigDecimal calculateComission() { + public BigDecimal calculateCommission() { return this.calculateGross().multiply(new BigDecimal("0.05")); } @@ -30,6 +30,6 @@ public BigDecimal calculateTax() { @Override public BigDecimal calculateTotal() { - return this.calculateGross().add(this.calculateTax().add(this.calculateComission())); + return this.calculateGross().add(this.calculateTax().add(this.calculateCommission())); } } diff --git a/src/main/java/temppackage/calculators/SaleCalculator.java b/src/main/java/temppackage/calculators/SaleCalculator.java index 2e63ef4..7f9e2d5 100644 --- a/src/main/java/temppackage/calculators/SaleCalculator.java +++ b/src/main/java/temppackage/calculators/SaleCalculator.java @@ -20,7 +20,7 @@ public BigDecimal calculateGross() { } @Override - public BigDecimal calculateComission() { + public BigDecimal calculateCommission() { return this.calculateGross().divide(new BigDecimal("100"), RoundingMode.HALF_UP); } @@ -28,7 +28,7 @@ public BigDecimal calculateComission() { public BigDecimal calculateTax() { BigDecimal purchaseCosts = this.purchasePrice.multiply(this.quantity); BigDecimal earnings = - this.calculateGross().subtract(this.calculateComission()).subtract(purchaseCosts); + this.calculateGross().subtract(this.calculateCommission()).subtract(purchaseCosts); return earnings .multiply(new BigDecimal("30")) .divide(new BigDecimal("100"), RoundingMode.HALF_UP); @@ -36,6 +36,6 @@ public BigDecimal calculateTax() { @Override public BigDecimal calculateTotal() { - return this.calculateGross().subtract(this.calculateComission()).subtract(this.calculateTax()); + return this.calculateGross().subtract(this.calculateCommission()).subtract(this.calculateTax()); } } diff --git a/src/main/java/temppackage/calculators/TransactionCalculator.java b/src/main/java/temppackage/calculators/TransactionCalculator.java index 78699bc..687fb9d 100644 --- a/src/main/java/temppackage/calculators/TransactionCalculator.java +++ b/src/main/java/temppackage/calculators/TransactionCalculator.java @@ -5,7 +5,7 @@ public interface TransactionCalculator { public BigDecimal calculateGross(); - public BigDecimal calculateComission(); + public BigDecimal calculateCommission(); public BigDecimal calculateTax(); From e2450da2dba50e37f4e7dba663bb2016f1d6333c Mon Sep 17 00:00:00 2001 From: martin Date: Thu, 5 Mar 2026 18:08:38 +0100 Subject: [PATCH 12/12] Renamed folder --- src/main/java/{temppackage => millions}/Exchange.java | 2 +- src/main/java/{temppackage => millions}/Player.java | 2 +- src/main/java/{temppackage => millions}/Portfolio.java | 2 +- src/main/java/{temppackage => millions}/Purchase.java | 4 ++-- src/main/java/{temppackage => millions}/Sale.java | 4 ++-- src/main/java/{temppackage => millions}/Share.java | 2 +- src/main/java/{temppackage => millions}/Stock.java | 2 +- src/main/java/{temppackage => millions}/Transaction.java | 4 ++-- .../java/{temppackage => millions}/TransactionArchive.java | 2 +- .../calculators/PurchaseCalculator.java | 4 ++-- .../calculators/SaleCalculator.java | 4 ++-- .../calculators/TransactionCalculator.java | 2 +- src/test/java/millions/ExchangeTest.java | 5 +++++ src/test/java/{temppackage => millions}/PlayerTest.java | 6 ++---- src/test/java/millions/PortfolioTest.java | 5 +++++ src/test/java/millions/PurchaseTest.java | 5 +++++ src/test/java/{temppackage => millions}/SaleTest.java | 6 ++---- src/test/java/{temppackage => millions}/ShareTest.java | 6 ++---- src/test/java/{temppackage => millions}/StockTest.java | 6 ++---- .../TransactionArchiveTest.java} | 6 ++---- src/test/java/millions/TransactionTest.java | 5 +++++ .../java/millions/calculators/PurchaseCalculatorTest.java | 5 +++++ src/test/java/millions/calculators/SaleCalculatorTest.java | 5 +++++ .../millions/calculators/TransactionCalculatorTest.java | 5 +++++ src/test/java/temppackage/PortfolioTest.java | 7 ------- src/test/java/temppackage/PurchaseTest.java | 7 ------- src/test/java/temppackage/TransactionArchiveTest.java | 7 ------- src/test/java/temppackage/TransactionTest.java | 7 ------- .../temppackage/calculators/PurchaseCalculatorTest.java | 7 ------- .../java/temppackage/calculators/SaleCalculatorTest.java | 7 ------- .../temppackage/calculators/TransactionCalculatorTest.java | 7 ------- 31 files changed, 62 insertions(+), 86 deletions(-) rename src/main/java/{temppackage => millions}/Exchange.java (98%) rename src/main/java/{temppackage => millions}/Player.java (97%) rename src/main/java/{temppackage => millions}/Portfolio.java (96%) rename src/main/java/{temppackage => millions}/Purchase.java (89%) rename src/main/java/{temppackage => millions}/Sale.java (89%) rename src/main/java/{temppackage => millions}/Share.java (95%) rename src/main/java/{temppackage => millions}/Stock.java (96%) rename src/main/java/{temppackage => millions}/Transaction.java (91%) rename src/main/java/{temppackage => millions}/TransactionArchive.java (98%) rename src/main/java/{temppackage => millions}/calculators/PurchaseCalculator.java (92%) rename src/main/java/{temppackage => millions}/calculators/SaleCalculator.java (94%) rename src/main/java/{temppackage => millions}/calculators/TransactionCalculator.java (87%) create mode 100644 src/test/java/millions/ExchangeTest.java rename src/test/java/{temppackage => millions}/PlayerTest.java (55%) create mode 100644 src/test/java/millions/PortfolioTest.java create mode 100644 src/test/java/millions/PurchaseTest.java rename src/test/java/{temppackage => millions}/SaleTest.java (56%) rename src/test/java/{temppackage => millions}/ShareTest.java (55%) rename src/test/java/{temppackage => millions}/StockTest.java (55%) rename src/test/java/{temppackage/ExchangeTest.java => millions/TransactionArchiveTest.java} (50%) create mode 100644 src/test/java/millions/TransactionTest.java create mode 100644 src/test/java/millions/calculators/PurchaseCalculatorTest.java create mode 100644 src/test/java/millions/calculators/SaleCalculatorTest.java create mode 100644 src/test/java/millions/calculators/TransactionCalculatorTest.java delete mode 100644 src/test/java/temppackage/PortfolioTest.java delete mode 100644 src/test/java/temppackage/PurchaseTest.java delete mode 100644 src/test/java/temppackage/TransactionArchiveTest.java delete mode 100644 src/test/java/temppackage/TransactionTest.java delete mode 100644 src/test/java/temppackage/calculators/PurchaseCalculatorTest.java delete mode 100644 src/test/java/temppackage/calculators/SaleCalculatorTest.java delete mode 100644 src/test/java/temppackage/calculators/TransactionCalculatorTest.java diff --git a/src/main/java/temppackage/Exchange.java b/src/main/java/millions/Exchange.java similarity index 98% rename from src/main/java/temppackage/Exchange.java rename to src/main/java/millions/Exchange.java index 2e24ebc..98584f2 100644 --- a/src/main/java/temppackage/Exchange.java +++ b/src/main/java/millions/Exchange.java @@ -1,4 +1,4 @@ -package temppackage; +package millions; import java.math.BigDecimal; import java.math.RoundingMode; diff --git a/src/main/java/temppackage/Player.java b/src/main/java/millions/Player.java similarity index 97% rename from src/main/java/temppackage/Player.java rename to src/main/java/millions/Player.java index 1e12a80..747c8d0 100644 --- a/src/main/java/temppackage/Player.java +++ b/src/main/java/millions/Player.java @@ -1,4 +1,4 @@ -package temppackage; +package millions; import java.math.BigDecimal; diff --git a/src/main/java/temppackage/Portfolio.java b/src/main/java/millions/Portfolio.java similarity index 96% rename from src/main/java/temppackage/Portfolio.java rename to src/main/java/millions/Portfolio.java index 89c19c2..e6fe889 100644 --- a/src/main/java/temppackage/Portfolio.java +++ b/src/main/java/millions/Portfolio.java @@ -1,4 +1,4 @@ -package temppackage; +package millions; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/temppackage/Purchase.java b/src/main/java/millions/Purchase.java similarity index 89% rename from src/main/java/temppackage/Purchase.java rename to src/main/java/millions/Purchase.java index 0db1f8e..72f02ad 100644 --- a/src/main/java/temppackage/Purchase.java +++ b/src/main/java/millions/Purchase.java @@ -1,6 +1,6 @@ -package temppackage; +package millions; -import temppackage.calculators.PurchaseCalculator; +import millions.calculators.PurchaseCalculator; public class Purchase extends Transaction { diff --git a/src/main/java/temppackage/Sale.java b/src/main/java/millions/Sale.java similarity index 89% rename from src/main/java/temppackage/Sale.java rename to src/main/java/millions/Sale.java index 2507589..25f2919 100644 --- a/src/main/java/temppackage/Sale.java +++ b/src/main/java/millions/Sale.java @@ -1,6 +1,6 @@ -package temppackage; +package millions; -import temppackage.calculators.SaleCalculator; +import millions.calculators.SaleCalculator; public class Sale extends Transaction { diff --git a/src/main/java/temppackage/Share.java b/src/main/java/millions/Share.java similarity index 95% rename from src/main/java/temppackage/Share.java rename to src/main/java/millions/Share.java index 77694f9..6eddada 100644 --- a/src/main/java/temppackage/Share.java +++ b/src/main/java/millions/Share.java @@ -1,4 +1,4 @@ -package temppackage; +package millions; import java.math.BigDecimal; diff --git a/src/main/java/temppackage/Stock.java b/src/main/java/millions/Stock.java similarity index 96% rename from src/main/java/temppackage/Stock.java rename to src/main/java/millions/Stock.java index 193d457..886ecba 100644 --- a/src/main/java/temppackage/Stock.java +++ b/src/main/java/millions/Stock.java @@ -1,4 +1,4 @@ -package temppackage; +package millions; import java.math.BigDecimal; import java.util.List; diff --git a/src/main/java/temppackage/Transaction.java b/src/main/java/millions/Transaction.java similarity index 91% rename from src/main/java/temppackage/Transaction.java rename to src/main/java/millions/Transaction.java index 6a000ec..b4b4022 100644 --- a/src/main/java/temppackage/Transaction.java +++ b/src/main/java/millions/Transaction.java @@ -1,6 +1,6 @@ -package temppackage; +package millions; -import temppackage.calculators.TransactionCalculator; +import millions.calculators.TransactionCalculator; public abstract class Transaction { diff --git a/src/main/java/temppackage/TransactionArchive.java b/src/main/java/millions/TransactionArchive.java similarity index 98% rename from src/main/java/temppackage/TransactionArchive.java rename to src/main/java/millions/TransactionArchive.java index 8b257b2..0a83e92 100644 --- a/src/main/java/temppackage/TransactionArchive.java +++ b/src/main/java/millions/TransactionArchive.java @@ -1,4 +1,4 @@ -package temppackage; +package millions; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/temppackage/calculators/PurchaseCalculator.java b/src/main/java/millions/calculators/PurchaseCalculator.java similarity index 92% rename from src/main/java/temppackage/calculators/PurchaseCalculator.java rename to src/main/java/millions/calculators/PurchaseCalculator.java index 4f7a3f1..e23293c 100644 --- a/src/main/java/temppackage/calculators/PurchaseCalculator.java +++ b/src/main/java/millions/calculators/PurchaseCalculator.java @@ -1,7 +1,7 @@ -package temppackage.calculators; +package millions.calculators; import java.math.BigDecimal; -import temppackage.Share; +import millions.Share; public class PurchaseCalculator implements TransactionCalculator { BigDecimal purchasePrice; diff --git a/src/main/java/temppackage/calculators/SaleCalculator.java b/src/main/java/millions/calculators/SaleCalculator.java similarity index 94% rename from src/main/java/temppackage/calculators/SaleCalculator.java rename to src/main/java/millions/calculators/SaleCalculator.java index 7f9e2d5..2bddf30 100644 --- a/src/main/java/temppackage/calculators/SaleCalculator.java +++ b/src/main/java/millions/calculators/SaleCalculator.java @@ -1,8 +1,8 @@ -package temppackage.calculators; +package millions.calculators; import java.math.BigDecimal; import java.math.RoundingMode; -import temppackage.Share; +import millions.Share; public class SaleCalculator implements TransactionCalculator { BigDecimal purchasePrice; diff --git a/src/main/java/temppackage/calculators/TransactionCalculator.java b/src/main/java/millions/calculators/TransactionCalculator.java similarity index 87% rename from src/main/java/temppackage/calculators/TransactionCalculator.java rename to src/main/java/millions/calculators/TransactionCalculator.java index 687fb9d..8b85c6a 100644 --- a/src/main/java/temppackage/calculators/TransactionCalculator.java +++ b/src/main/java/millions/calculators/TransactionCalculator.java @@ -1,4 +1,4 @@ -package temppackage.calculators; +package millions.calculators; import java.math.BigDecimal; diff --git a/src/test/java/millions/ExchangeTest.java b/src/test/java/millions/ExchangeTest.java new file mode 100644 index 0000000..a852a0d --- /dev/null +++ b/src/test/java/millions/ExchangeTest.java @@ -0,0 +1,5 @@ +package millions; + +import static org.junit.jupiter.api.Assertions.*; + +class ExchangeTest {} diff --git a/src/test/java/temppackage/PlayerTest.java b/src/test/java/millions/PlayerTest.java similarity index 55% rename from src/test/java/temppackage/PlayerTest.java rename to src/test/java/millions/PlayerTest.java index 813e09c..62a3263 100644 --- a/src/test/java/temppackage/PlayerTest.java +++ b/src/test/java/millions/PlayerTest.java @@ -1,7 +1,5 @@ -package temppackage; +package millions; import static org.junit.jupiter.api.Assertions.*; -class PlayerTest { - -} \ No newline at end of file +class PlayerTest {} diff --git a/src/test/java/millions/PortfolioTest.java b/src/test/java/millions/PortfolioTest.java new file mode 100644 index 0000000..3fb1019 --- /dev/null +++ b/src/test/java/millions/PortfolioTest.java @@ -0,0 +1,5 @@ +package millions; + +import static org.junit.jupiter.api.Assertions.*; + +class PortfolioTest {} diff --git a/src/test/java/millions/PurchaseTest.java b/src/test/java/millions/PurchaseTest.java new file mode 100644 index 0000000..a67c37a --- /dev/null +++ b/src/test/java/millions/PurchaseTest.java @@ -0,0 +1,5 @@ +package millions; + +import static org.junit.jupiter.api.Assertions.*; + +class PurchaseTest {} diff --git a/src/test/java/temppackage/SaleTest.java b/src/test/java/millions/SaleTest.java similarity index 56% rename from src/test/java/temppackage/SaleTest.java rename to src/test/java/millions/SaleTest.java index ddd72ae..b808f7a 100644 --- a/src/test/java/temppackage/SaleTest.java +++ b/src/test/java/millions/SaleTest.java @@ -1,7 +1,5 @@ -package temppackage; +package millions; import static org.junit.jupiter.api.Assertions.*; -class SaleTest { - -} \ No newline at end of file +class SaleTest {} diff --git a/src/test/java/temppackage/ShareTest.java b/src/test/java/millions/ShareTest.java similarity index 55% rename from src/test/java/temppackage/ShareTest.java rename to src/test/java/millions/ShareTest.java index f70aa16..cf3d676 100644 --- a/src/test/java/temppackage/ShareTest.java +++ b/src/test/java/millions/ShareTest.java @@ -1,7 +1,5 @@ -package temppackage; +package millions; import static org.junit.jupiter.api.Assertions.*; -class ShareTest { - -} \ No newline at end of file +class ShareTest {} diff --git a/src/test/java/temppackage/StockTest.java b/src/test/java/millions/StockTest.java similarity index 55% rename from src/test/java/temppackage/StockTest.java rename to src/test/java/millions/StockTest.java index 79d647a..eda8962 100644 --- a/src/test/java/temppackage/StockTest.java +++ b/src/test/java/millions/StockTest.java @@ -1,7 +1,5 @@ -package temppackage; +package millions; import static org.junit.jupiter.api.Assertions.*; -class StockTest { - -} \ No newline at end of file +class StockTest {} diff --git a/src/test/java/temppackage/ExchangeTest.java b/src/test/java/millions/TransactionArchiveTest.java similarity index 50% rename from src/test/java/temppackage/ExchangeTest.java rename to src/test/java/millions/TransactionArchiveTest.java index b556dd5..bdc9ca8 100644 --- a/src/test/java/temppackage/ExchangeTest.java +++ b/src/test/java/millions/TransactionArchiveTest.java @@ -1,7 +1,5 @@ -package temppackage; +package millions; import static org.junit.jupiter.api.Assertions.*; -class ExchangeTest { - -} \ No newline at end of file +class TransactionArchiveTest {} diff --git a/src/test/java/millions/TransactionTest.java b/src/test/java/millions/TransactionTest.java new file mode 100644 index 0000000..9074225 --- /dev/null +++ b/src/test/java/millions/TransactionTest.java @@ -0,0 +1,5 @@ +package millions; + +import static org.junit.jupiter.api.Assertions.*; + +class TransactionTest {} diff --git a/src/test/java/millions/calculators/PurchaseCalculatorTest.java b/src/test/java/millions/calculators/PurchaseCalculatorTest.java new file mode 100644 index 0000000..2915b5e --- /dev/null +++ b/src/test/java/millions/calculators/PurchaseCalculatorTest.java @@ -0,0 +1,5 @@ +package millions.calculators; + +import static org.junit.jupiter.api.Assertions.*; + +class PurchaseCalculatorTest {} diff --git a/src/test/java/millions/calculators/SaleCalculatorTest.java b/src/test/java/millions/calculators/SaleCalculatorTest.java new file mode 100644 index 0000000..3d7cebb --- /dev/null +++ b/src/test/java/millions/calculators/SaleCalculatorTest.java @@ -0,0 +1,5 @@ +package millions.calculators; + +import static org.junit.jupiter.api.Assertions.*; + +class SaleCalculatorTest {} diff --git a/src/test/java/millions/calculators/TransactionCalculatorTest.java b/src/test/java/millions/calculators/TransactionCalculatorTest.java new file mode 100644 index 0000000..ad398f8 --- /dev/null +++ b/src/test/java/millions/calculators/TransactionCalculatorTest.java @@ -0,0 +1,5 @@ +package millions.calculators; + +import static org.junit.jupiter.api.Assertions.*; + +class TransactionCalculatorTest {} diff --git a/src/test/java/temppackage/PortfolioTest.java b/src/test/java/temppackage/PortfolioTest.java deleted file mode 100644 index 7448406..0000000 --- a/src/test/java/temppackage/PortfolioTest.java +++ /dev/null @@ -1,7 +0,0 @@ -package temppackage; - -import static org.junit.jupiter.api.Assertions.*; - -class PortfolioTest { - -} \ No newline at end of file diff --git a/src/test/java/temppackage/PurchaseTest.java b/src/test/java/temppackage/PurchaseTest.java deleted file mode 100644 index b6dc786..0000000 --- a/src/test/java/temppackage/PurchaseTest.java +++ /dev/null @@ -1,7 +0,0 @@ -package temppackage; - -import static org.junit.jupiter.api.Assertions.*; - -class PurchaseTest { - -} \ No newline at end of file diff --git a/src/test/java/temppackage/TransactionArchiveTest.java b/src/test/java/temppackage/TransactionArchiveTest.java deleted file mode 100644 index d3b2726..0000000 --- a/src/test/java/temppackage/TransactionArchiveTest.java +++ /dev/null @@ -1,7 +0,0 @@ -package temppackage; - -import static org.junit.jupiter.api.Assertions.*; - -class TransactionArchiveTest { - -} \ No newline at end of file diff --git a/src/test/java/temppackage/TransactionTest.java b/src/test/java/temppackage/TransactionTest.java deleted file mode 100644 index 3d786a4..0000000 --- a/src/test/java/temppackage/TransactionTest.java +++ /dev/null @@ -1,7 +0,0 @@ -package temppackage; - -import static org.junit.jupiter.api.Assertions.*; - -class TransactionTest { - -} \ No newline at end of file diff --git a/src/test/java/temppackage/calculators/PurchaseCalculatorTest.java b/src/test/java/temppackage/calculators/PurchaseCalculatorTest.java deleted file mode 100644 index cdab551..0000000 --- a/src/test/java/temppackage/calculators/PurchaseCalculatorTest.java +++ /dev/null @@ -1,7 +0,0 @@ -package temppackage.calculators; - -import static org.junit.jupiter.api.Assertions.*; - -class PurchaseCalculatorTest { - -} \ No newline at end of file diff --git a/src/test/java/temppackage/calculators/SaleCalculatorTest.java b/src/test/java/temppackage/calculators/SaleCalculatorTest.java deleted file mode 100644 index 3a140ce..0000000 --- a/src/test/java/temppackage/calculators/SaleCalculatorTest.java +++ /dev/null @@ -1,7 +0,0 @@ -package temppackage.calculators; - -import static org.junit.jupiter.api.Assertions.*; - -class SaleCalculatorTest { - -} \ No newline at end of file diff --git a/src/test/java/temppackage/calculators/TransactionCalculatorTest.java b/src/test/java/temppackage/calculators/TransactionCalculatorTest.java deleted file mode 100644 index 6307192..0000000 --- a/src/test/java/temppackage/calculators/TransactionCalculatorTest.java +++ /dev/null @@ -1,7 +0,0 @@ -package temppackage.calculators; - -import static org.junit.jupiter.api.Assertions.*; - -class TransactionCalculatorTest { - -} \ No newline at end of file