diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/Portfolio.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/Portfolio.java
index f27e44c..25b0953 100644
--- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/Portfolio.java
+++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/Portfolio.java
@@ -1,79 +1,102 @@
package edu.ntnu.idi.idatt2003.g40.mappe;
+import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
* Represents a player's portfolio of shares.
- *
- * The portfolio stores shares and provides operations for adding, removing,
- * retrieving and checking ownership of shares.
- *
+ *
+ * The portfolio stores shares and provides operations for adding, removing,
+ * retrieving and checking ownership of shares.
*/
-public class Portfolio {
+public final class Portfolio {
- private final List shares = new ArrayList<>();
+ /**
+ * List of shares.
+ * */
+ private final List shares = new ArrayList<>();
- /**
- * Creates an empty portfolio.
- */
- public Portfolio() {
- // Intentionally empty
- }
+ /**
+ * Creates an empty portfolio.
+ */
+ public Portfolio() {
+ // Intentionally empty
+ }
- /**
- * Adds a share to the portfolio.
- *
- * @param share the share to add
- * @return {@code true} if the share was added, {@code false} otherwise
- */
- public boolean addShare(Share share) {
- Objects.requireNonNull(share, "share cannot be null");
- return shares.add(share);
- }
+ /**
+ * Adds a share to the portfolio.
+ *
+ * @param share the share to add
+ * @return {@code true} if the share was added, {@code false} otherwise
+ */
+ public boolean addShare(final Share share) {
+ Objects.requireNonNull(share, "share cannot be null");
+ return shares.add(share);
+ }
- /**
- * Removes a share from the portfolio.
- *
- * @param share the share to remove
- * @return {@code true} if the share was removed, {@code false} if it was not present
- */
- public boolean removeShare(Share share) {
- Objects.requireNonNull(share, "share cannot be null");
- return shares.remove(share);
- }
+ /**
+ * Removes a share from the portfolio.
+ *
+ * @param share the share to remove
+ * @return {@code true} if the share was removed,
+ * {@code false} if it was not present.
+ */
+ public boolean removeShare(final Share share) {
+ Objects.requireNonNull(share, "share cannot be null");
+ return shares.remove(share);
+ }
- /**
- * Returns an immutable snapshot of all shares in the portfolio.
- *
- * @return a list of shares
- */
- public List getShares() {
- return List.copyOf(shares);
- }
+ /**
+ * Returns an immutable snapshot of all shares in the portfolio.
+ *
+ * @return a list of shares
+ */
+ public List getShares() {
+ return List.copyOf(shares);
+ }
- /**
- * Returns an immutable snapshot of all shares whose stock symbol matches the given symbol.
- *
- * @param symbol the stock symbol to match
- * @return a list of shares matching the symbol
- */
- public List getShares(String symbol) {
- Objects.requireNonNull(symbol, "symbol cannot be null");
- return shares.stream()
- .filter(s -> symbol.equalsIgnoreCase(s.getStock().getSymbol()))
- .toList();
- }
+ /**
+ * Returns an immutable snapshot of all shares whose
+ * stock symbol matches the given symbol.
+ *
+ * @param symbol the stock symbol to match
+ * @return a list of shares matching the symbol
+ */
+ public List getShares(final String symbol) {
+ Objects.requireNonNull(symbol, "symbol cannot be null");
+ return shares.stream()
+ .filter(s -> symbol.equalsIgnoreCase(s.getStock().getSymbol()))
+ .toList();
+ }
+
+ /**
+ * Checks whether the given share exists in the portfolio.
+ *
+ * @param share the share to check
+ * @return {@code true} if the portfolio
+ * contains the share, otherwise {@code false}
+ */
+ public boolean contains(final Share share) {
+ Objects.requireNonNull(share, "share cannot be null");
+ return shares.contains(share);
+ }
+
+ /**
+ * Returns the total net worth of the portfolios shares,
+ * using a sale calculator.
+ *
+ * @return the net worth.
+ * */
+ public BigDecimal getNetWorth() {
+ BigDecimal netWorth = new BigDecimal("0");
+
+ for (Share s : shares) {
+ SaleCalculator calculator = new SaleCalculator(s);
- /**
- * Checks whether the given share exists in the portfolio.
- *
- * @param share the share to check
- * @return {@code true} if the portfolio contains the share, otherwise {@code false}
- */
- public boolean contains(Share share) {
- Objects.requireNonNull(share, "share cannot be null");
- return shares.contains(share);
+ netWorth = netWorth.add(calculator.calculateTotal());
}
+ return netWorth;
+ }
}