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(); }