Skip to content

Commit

Permalink
Updated Exchange class
Browse files Browse the repository at this point in the history
for observer
  • Loading branch information
elisab3 committed May 24, 2026
1 parent 57eec55 commit d0b7b3f
Showing 1 changed file with 30 additions and 4 deletions.
34 changes: 30 additions & 4 deletions src/main/java/Model/Exchange.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ public class Exchange {
private final Map<String, Stock> stockMap;
private final Random random;

// Registered observers
private final List<ExchangeObserver> observers = new ArrayList<>();

public Exchange(String name, List<Stock> stocks) {
this.name = name;
this.week = 1;
Expand All @@ -22,9 +25,26 @@ public Exchange(String name, List<Stock> stocks) {
for (Stock stock : stocks) {
stockMap.put(stock.getSymbol(), stock);
}
}

// ---- Observer ----

public void addObserver(ExchangeObserver observer) {
if (observer != null && !observers.contains(observer)) {
observers.add(observer);
}
}

public void removeObserver(ExchangeObserver observer) {
observers.remove(observer);
}


private void notifyObservers() {
for (ExchangeObserver observer : observers) {
observer.onExchangeUpdated(this);
}
}

public String getName() {
return name;
}
Expand Down Expand Up @@ -57,7 +77,7 @@ public List<Stock> findStocks(String searchTerm) {

public Transaction buy(String symbol, BigDecimal quantity, Player player) {
Stock stock = getStock(symbol);

// unngå nullpointerexception
if (stock == null) {
return null;
Expand All @@ -71,7 +91,9 @@ public Transaction buy(String symbol, BigDecimal quantity, Player player) {

// committer til player
purchase.commit(player);


notifyObservers();

return purchase;
}

Expand All @@ -86,7 +108,9 @@ public Transaction sell(Share share, Player player) {

// commiter til player
sale.commit(player);


notifyObservers();

return sale;
}

Expand All @@ -108,6 +132,8 @@ public void advance() {
stock.addNewSalesPrice(newPrice);
}
}

notifyObservers();
}

public List<Stock> getGainers(int limit) { // viser "vinnerne"
Expand Down

0 comments on commit d0b7b3f

Please sign in to comment.