From 20e38b5789389c93bde32d7b1b004f0747c29d04 Mon Sep 17 00:00:00 2001 From: Elisabeth Berg Date: Fri, 13 Feb 2026 12:30:25 +0100 Subject: [PATCH 01/26] Test Commit 2 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2cae075..40c323f 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -Branch test \ No newline at end of file +Branch test 2 \ No newline at end of file From a73f9e872189326ea8f3fcce623164896e146977 Mon Sep 17 00:00:00 2001 From: Elisabeth Berg Date: Fri, 13 Feb 2026 12:33:36 +0100 Subject: [PATCH 02/26] test 2 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 40c323f..2cae075 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -Branch test 2 \ No newline at end of file +Branch test \ No newline at end of file From c5abc6684dc8f0ead2ee62cfc513fc78ae6c84e9 Mon Sep 17 00:00:00 2001 From: Elisabeth Berg Date: Fri, 13 Feb 2026 12:36:49 +0100 Subject: [PATCH 03/26] test 3 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2cae075..a20c7a6 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -Branch test \ No newline at end of file +Branch test 3 \ No newline at end of file From 0ec9bd598673aaa59cadf88b29a4066e48013375 Mon Sep 17 00:00:00 2001 From: Solveig Natvig Date: Fri, 20 Feb 2026 12:52:46 +0100 Subject: [PATCH 04/26] Add TransactionCalculator interface --- src/main/java/TransactionCalculator.java | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 src/main/java/TransactionCalculator.java diff --git a/src/main/java/TransactionCalculator.java b/src/main/java/TransactionCalculator.java new file mode 100644 index 0000000..dd17eef --- /dev/null +++ b/src/main/java/TransactionCalculator.java @@ -0,0 +1,9 @@ +import java.math.BigDecimal; + +public interface TransactionCalculator { + // Methods in interface is automatically public abstract. + BigDecimal calculateGross(); + BigDecimal calculateCommission(); + BigDecimal calculateTax(); + BigDecimal calculateTotal(); +} From bc38441427d8288997764244a0e42c92f5364c91 Mon Sep 17 00:00:00 2001 From: Elisabeth Berg Date: Tue, 24 Feb 2026 21:20:38 +0100 Subject: [PATCH 05/26] Added Stock class --- src/main/java/Stock.java | 33 +++++++++++++++++++++++++++++++++ target/classes/Stock.class | Bin 0 -> 1218 bytes 2 files changed, 33 insertions(+) create mode 100644 src/main/java/Stock.java create mode 100644 target/classes/Stock.class diff --git a/src/main/java/Stock.java b/src/main/java/Stock.java new file mode 100644 index 0000000..e650b01 --- /dev/null +++ b/src/main/java/Stock.java @@ -0,0 +1,33 @@ +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +public class Stock { + + private final String symbol; + private final String company; + private final List prices; + + public Stock(String symbol, String company, BigDecimal salesPrice) { + this.symbol = symbol; + this.company = company; + this.prices = new ArrayList<>(); + this.prices.add(salesPrice); + } + + public String getSymbol() { + return symbol; + } + + public String getCompany() { + return company; + } + + public BigDecimal getSalesPrice() { + return prices.get(prices.size() - 1); + } + + public void addNewSalesPrice(BigDecimal price) { + prices.add(price); + } +} diff --git a/target/classes/Stock.class b/target/classes/Stock.class new file mode 100644 index 0000000000000000000000000000000000000000..af494f4215bc73624297cdcbbb3c93061ab355e4 GIT binary patch literal 1218 zcmZuvYflqF6g{(jtds?6sig%KP|q-GERdHPvj( zpy#^+#YlR!zi-K4zr3lM+peQp(yOdfS#njiRj@9w78Yq?;oX3B%wmrCWurlygR=X6R!ScPCaS9K?)F-B*MBSP9+{Gh9UMHwEiUTJ)kO;K!Ml(K@J#29_Y>EtU_#A#iy zPcUIG9wTEf9V2W1Lhk(u^2aFHKTudc#f*V>-!;WNeWx|`D3w}7K1NjIC}0A2kj5>_ z+kH~prW5`xXi-8(EX&Z*0`AiF0{2i1<&TGh=PoVgT8#Ra b(z#h0$DHQL^|9xES$Iy~uoo|g!@$e`wR`K2 literal 0 HcmV?d00001 From ce3580d4fdc04e605c8ecd2cfb5a7a89cea3b8f0 Mon Sep 17 00:00:00 2001 From: Elisabeth Berg Date: Tue, 24 Feb 2026 21:24:15 +0100 Subject: [PATCH 06/26] Added Share class --- src/main/java/Share.java | 27 +++++++++++++++++++++++++++ target/classes/Share.class | Bin 0 -> 748 bytes 2 files changed, 27 insertions(+) create mode 100644 src/main/java/Share.java create mode 100644 target/classes/Share.class diff --git a/src/main/java/Share.java b/src/main/java/Share.java new file mode 100644 index 0000000..0ab76b5 --- /dev/null +++ b/src/main/java/Share.java @@ -0,0 +1,27 @@ +import java.math.BigDecimal; + +public class Share { + + private final Stock stock; + private final BigDecimal quantity; + private final BigDecimal purchasePrice; + + public Share(Stock stock, BigDecimal quantity, BigDecimal purchasePrice) { + this.stock = stock; + this.quantity = quantity; + this.purchasePrice = purchasePrice; + } + + public Stock getStock() { + return stock; + } + + public BigDecimal getQuantity() { + return quantity; + } + + public BigDecimal getPurchasePrice() { + return purchasePrice; + } + +} diff --git a/target/classes/Share.class b/target/classes/Share.class new file mode 100644 index 0000000000000000000000000000000000000000..9e7f4f908924e472e13aa53e2eed739502c26f0f GIT binary patch literal 748 zcmZ`$$xZ@65Pi)I+c?NLBH}JL7#D6{Tn=hH5tm@NH)97H2hd?K@vk(In0W95{3v5} zLyVg7(*5dny{dZEAD?gU01i=3Bf*etba*JzFd3XKf8e!%_uI9LR#*5Dy$+*+f6I`r zHx$@s$lQ;3Ka$ZSL$R&}Jsx#x$FhAYeA(jx<>c;0q2J*{aT!WqFr*G-Uq(j^dzERO zcx60WZ8DfAgBxMNz^n}mc?P3WZDzqRXCsM}Li0A#$SAa6BZ~|}zApRXeAH`+@S3** z8pN#+d>%A;C{;Wq&8Q=X+M?Qove*`pw#$&MRKK0i5PkJ+zC+OtD zcqTr9BArF51zLhh$}DMTNjr}m7K!yHdX%t45mnNCnMSH}LL=4Npq|TEnRc$xt+JBd u3!EnclU6BBI=ZwyNtl*qSj8GKYV4n4_pi7RD_)Nk7ygP%vEmIq-{u!HEPSH? literal 0 HcmV?d00001 From 99d7fc9f905fc4d30f52f197498d6f0e1f1d472b Mon Sep 17 00:00:00 2001 From: Elisabeth Berg Date: Tue, 24 Feb 2026 21:25:23 +0100 Subject: [PATCH 07/26] Added Portfolio class --- src/main/java/Portfolio.java | 38 +++++++++++++++++++++++++++++++++ target/classes/Portfolio.class | Bin 0 -> 1631 bytes 2 files changed, 38 insertions(+) create mode 100644 src/main/java/Portfolio.java create mode 100644 target/classes/Portfolio.class diff --git a/src/main/java/Portfolio.java b/src/main/java/Portfolio.java new file mode 100644 index 0000000..a25561f --- /dev/null +++ b/src/main/java/Portfolio.java @@ -0,0 +1,38 @@ +import java.util.ArrayList; +import java.util.List; + +public class Portfolio { + + private final List shares; + + public Portfolio() { + this.shares = new ArrayList<>(); + } + + public boolean addShare(Share share) { + return shares.add(share); + } + + public boolean removeShare(Share share) { + return shares.remove(share); + } + + public List getShares() { + return new ArrayList<>(shares); + } + + public List getShares(String symbol) { + List result = new ArrayList<>(); + for (Share share : shares) { + if (share.getStock().getSymbol().equals(symbol)) { + result.add(share); + } + } + return result; + } + + public boolean contains(Share share) { + return shares.contains(share); + } + +} diff --git a/target/classes/Portfolio.class b/target/classes/Portfolio.class new file mode 100644 index 0000000000000000000000000000000000000000..2dc14922577b214c461130e0a35c7f4139d42aae GIT binary patch literal 1631 zcma)5$x;(h6g@A5bV!;oC_#cVph*C69thwN#3|qq#nN39T4-##wbQZWQ}hSixX>zv zLaQv-E?oOH;(0Gk5AX9fbMATf{rLUm8-Q`lY6uCm+;ctunQL3FhOj{UlJUwI zu?=Tomp;8 zWBC&TP3g?6KsfKtn=v$@RYwbA8rlT*)WNTMp0OesVo0F11p=Kqnh_CbD_D*>Q(2xf zy@$q}P1eqWTQclf!?WZ$2!{Pdi-O~Y+HlkmHRk7)B7s;s(3W``M+*Bj^a>>E0wlMN z12{;*>=NioSBGmbCYO0C(5$=>&;mSidgikG%2Y%WyH7{I#EDenv~0ojRh9xf)0u6i zQD^UtVBJY+NJe^=rQd-jbsu@xws~8Y>*S=t{f&ByzGpcLxxY{i|3_J!T#j=>#|Tc+ zOv^Vt!*@M_SZ)45zFcyP4H-4(GWCj`^A!ws#Yu(OwM~>92Ash6@9~q(fz>O^bFRIeBd{cfNladZsi(Wpi{ap4G_xF&J zm1P|%YtH3Sz%+e}@-@t`H^i=_auNh^=v%mHqes SY5s$q=J)Ml{zGzw@aPZAtvcoa literal 0 HcmV?d00001 From 233303b9f86a1f941bd2536928a2f27bd151b8c2 Mon Sep 17 00:00:00 2001 From: Elisabeth Berg Date: Tue, 24 Feb 2026 21:26:37 +0100 Subject: [PATCH 08/26] Added Exchange class --- src/main/java/Exchange.java | 86 ++++++++++++++++++++++++++++++++++ target/classes/Exchange.class | Bin 0 -> 3108 bytes 2 files changed, 86 insertions(+) create mode 100644 src/main/java/Exchange.java create mode 100644 target/classes/Exchange.class diff --git a/src/main/java/Exchange.java b/src/main/java/Exchange.java new file mode 100644 index 0000000..9c60de4 --- /dev/null +++ b/src/main/java/Exchange.java @@ -0,0 +1,86 @@ +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Random; + +public class Exchange { + + private final String name; + private int week; + private final Map stockMap; + private final Random random; + + public Exchange(String name, List stocks) { + this.name = name; + this.week = 1; + this.stockMap = new HashMap<>(); + this.random = new Random(); + + for (Stock stock : stocks) { + stockMap.put(stock.getSymbol(), stock); + } + + } + + public String getName() { + return name; + } + + public int getWeek() { + return week; + } + + public boolean hasStock(String symbol) { + return stockMap.containsKey(symbol); + } + + public Stock getStock(String symbol) { + return stockMap.get(symbol); + } + + public List findStocks(String searchTerm) { + List result = new ArrayList<>(); + + for (Stock stock : stockMap.values()) { + if (stock.getSymbol().contains(searchTerm) + || stock.getCompany().contains(searchTerm)) { + result.add(stock); + } + } + + return result; + } + + // public Transaction buy(String symbol, BigDecimal quantity, Player player) { + // return; + // } + + // public Transaction sell(Share share, Player player) { + // return; + // } + + public void advance() { + + week++; + + for (Stock stock : stockMap.values()) { // henter stock-objektene + + BigDecimal currentPrice = stock.getSalesPrice(); // henter siste pris fra Stock + + double changePercent = (random.nextDouble() - 0.5) * 0.1; + + BigDecimal change = currentPrice.multiply(BigDecimal.valueOf(changePercent)); + + BigDecimal newPrice = currentPrice.add(change); + + if (newPrice.compareTo(BigDecimal.ZERO) > 0) { // unngå negativ pris + stock.addNewSalesPrice(newPrice); + } + } + } + + + +} diff --git a/target/classes/Exchange.class b/target/classes/Exchange.class new file mode 100644 index 0000000000000000000000000000000000000000..1a55e6d7d62f120e9e1d96e74949362b515e4d4e GIT binary patch literal 3108 zcma)7Syx+C7~LlcxsY6F8A?g#R*Dd&R;{*xr7g4+%OpW+apDqg$%T;6n*@sEa#`m( z)v>5`cME(&wOl^?xLW?z!iDXP@ue-`?l`^4E_)0eBE! zYj6pap1c^27_k{sgGXTVtg&dcNBQ19JT+^ElLDTYF>eY~4djz)B=Lo5ls&{yVNKce>o*>4{I9KDbe%V-vOrxEq_s z%OJ2-M+v-g6wsleRKs?G%KVY1jYNdC`>+i)GHREOGWay?$#Ps!i4VIoL3imWM};5z zakqvBfr>nyEI~&jn#i=3G;Jdpw*_h&n+n+Mcji0&Xhy4s7SfhS$gb*WL%VFNd6C_% z$s!c=yi>zLffCgP9}eJN9rxi7yEtPeL(B71@o4crM-YBIfFl|X3zX;2B?~$_z;?M8 zQatf+VGlAQ>n!M=Gvm}%n3b&RK^;fYEuck=#E>e04VjRVvts5@YJSSJ$Be0{(rY|y zM8^%=lJCx>CmFF40=|K)=%t91a5=lVfJ&tpa-i0DoFfV{K5!fC@-&b`ai<*3~Mk1s`HXNZrjGPY@rX6sFA5p>o9SiWiJ}hl*v5mvbtA3 z?1@LCyzH!ajNXYz_gR#99x%V|!x_x!h=O-gX_o0C>UtuE9WpPZ%vjj$Y?_c3itAXA z7V?q0p7{KN5nGlvw{;|B&)mlJG#3-5VTU7QrcH3KZ6;Dt@~j!tiw2P-%tal`c$$Ke zO*5iqV#Kz>6nn0kc_SHVKVi-Enqh0+h<3`W~)M<6v=}x;SC*c;xc)fXCc-?lyb~o zz{TPJg7UWH=yDnH-qrCQuJG!bI5|2jt*9DQ3?)zgK*xvph&NVPa&4PqahdDJ@lE}b z*-vy_#R`4NP7Ik#h2;L@Mt&dkaLTsLSkmc3dFE3(V%lL&^26B6MrP(nL(E)q;(Vca ziXo>gc~g~VFQYbD5BBnF;bv1jsFI%;j$HBs!)KNJgmBfb=5)UEYr(O`xlP#2xXel= zSAai=Qo`q0@FuE*&8w&ldR9>vyoGJ&ZeqtOc5=9z!@aB6*RqCsfez1g>zp$^1KrbP9dU{4{6v+*&`^9^%YaxYp5*5>~9?j7A4( z{3sA!U=WA+FAHzyQ-YQ-{n~FiaH&i)C+$#~WROdoOaz87yus$WZ;CeW*>Lj+9(Fc& z^C%bh_$6`8YZ!H*7@}T5)MmnRO!zUbm=HLNM;)*e4p@Z)cFrYxQe01C0bWH8uOf%{ z1fC>LMi);>dPFJTr7lKpVUpdS8kG2J2n(!XCZmCt0u9LiH>WYXf(i~}a(ET~7E0oR zt3VRJw#dvfn%Kpz04>yP8}-qSgY;Jy|9km9#5U!%Fp|r71WCm}DLbE1T4=zoA}wUr zvRXI>_d2%Up@ntqDVWo6Kq+LMDHW@RJTFq6N;JaF+@;56gXeCb&NC^UavLv$*U?9p zWSlWT8kVFz_NDPm4PKb3!HaW8Jgs$}AMjEduXlJ`1Ku>=>d*q(_jo6b_phO>IiRKS zF)@^f($Yh2rOY5*4Km>)Lk+CCnH+Rc?|m4cE{8C||4FV{7**UIRky;d!(9ViBRwOy z?+`x46{2?0f1lxV*3?IHT;rUV7?t>fBTYG}S~_V5-16>F4E;${3Vg{#T=?p5cTKUi literal 0 HcmV?d00001 From cca567e4c0e185ae16c78ec42ba8f7864ab8da61 Mon Sep 17 00:00:00 2001 From: Solveig Natvig Date: Wed, 25 Feb 2026 07:35:46 +0100 Subject: [PATCH 09/26] Add PurchaseCalculator --- src/main/java/PurchaseCalculator.java | 29 +++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/main/java/PurchaseCalculator.java diff --git a/src/main/java/PurchaseCalculator.java b/src/main/java/PurchaseCalculator.java new file mode 100644 index 0000000..0ca34cb --- /dev/null +++ b/src/main/java/PurchaseCalculator.java @@ -0,0 +1,29 @@ +import java.math.BigDecimal; + +public class PurchaseCalculator { + private BigDecimal purchasePrice; + private BigDecimal quantity; + + public PurchaseCalculator(Share share) { + this.purchasePrice = share.getPurchasePrice(); + this.quantity = share.getQuantity(); + } + + public BigDecimal calculateGross() { + return this.purchasePrice.multiply(this.quantity); + } + + public BigDecimal calculateCommission() { + BigDecimal rate = new BigDecimal("0.005"); + return calculateGross().multiply(rate); + } + + public BigDecimal calculateTax() { + BigDecimal tax = new BigDecimal("0"); + return tax; + } + + public BigDecimal calculateTotal() { + return calculateGross().add(calculateCommission()).add(calculateTax()); + } +} From d770dbe118169f2c3b91f4659aa0a62e23c2a0cc Mon Sep 17 00:00:00 2001 From: Elisabeth Berg Date: Wed, 25 Feb 2026 21:19:08 +0100 Subject: [PATCH 10/26] Added StockTest class --- target/classes/Exchange.class | Bin 3108 -> 3064 bytes target/classes/Portfolio.class | Bin 1631 -> 1623 bytes target/classes/Share.class | Bin 748 -> 748 bytes target/classes/Stock.class | Bin 1218 -> 1218 bytes target/classes/TransactionCalculator.class | Bin 0 -> 253 bytes .../compile/default-compile/createdFiles.lst | 0 .../compile/default-compile/inputFiles.lst | 5 +++ target/test-classes/StockTest.java | 37 ++++++++++++++++++ 8 files changed, 42 insertions(+) create mode 100644 target/classes/TransactionCalculator.class create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 target/test-classes/StockTest.java diff --git a/target/classes/Exchange.class b/target/classes/Exchange.class index 1a55e6d7d62f120e9e1d96e74949362b515e4d4e..74e0a4f7dcb48cfdee048e185c3512e728edd816 100644 GIT binary patch literal 3064 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 diff --git a/target/classes/Portfolio.class b/target/classes/Portfolio.class index 2dc14922577b214c461130e0a35c7f4139d42aae..907718848df5cf82fa84ffdc818ac326eb9313aa 100644 GIT binary patch literal 1623 zcma)6SyR(s6g^)Xnl=qv6|~@n3$_KseJkQpH?ZJR#nHD=B1A)?Y3j&N@fY~wgU%=n zI^+1{gU|jNXI##geqb2J(U&CO%{}Lyd+trX{`~L>z&XqqNFb?0Gtq{WK-XjIxi#uq z-u&pz*~fN06iAIZo)eA>Bn!nE9ch6rQBpH>+|i3cU@cXhMrc4sGJ`Bk9qlGM&?%6) zf24_X4tS#%?(V~dHc=n?4H_?l&{xjBKJLJJp@RxUo2*li}Z zOJFLn7yak96w)WV=@-Z=P$aeDyDl4Ye6L)bk-(iMc443`%LV|0fF2fiEAkW`hwM%wqMXN`b1#^IB24PqJZW_;jL@j@fLIp3AELuHwH== zF>wf^lr(RLwa~9Wp^1b=k7WZ#a8$=J6UT8vqEv#+U0R&=U4e}?YGL4b^TeIPX&q-w zoRvPsM%+rEb@sESS}}qCO~JVG{qf~euEiHYk)#^R=3HzSReH34ji$@_ z_ik)=>FHX_?X}RVKbf+gDho#bqikHJQS+NY-M;EbQ#;muJ0#bU`(nshIR*-oQ<873Ek=G7p0BLB*kjEebFk2W@aG588 zE4Zro&a;NBn=QSAF|>-V1YYx)fTWT|f%b@^x0R+S2*5R5=X-&PzmoNCChPtO*(7eT z&;^z~sX8@flTzIZ@^2WAOY4bsXDVqe->MWgi7CbPh4(gME6T7b$+wCf0@EX_*dy=~ zMLrA)d`9W4me-asyo|#`%Q*QG=5St%jJf~n*SBFQL5tk!qd!2NR`+2L{WyUg9NI3v z+a1X&F>jDRH|dimi?4fE!8C4CU>arI;*b)!&G&Lht%w}T9Y#8l{2_m?-8u$_zBAbB Xt;WQ2e>J_l+4Oz?F#RrTC2;RIQ{F+9 literal 1631 zcma)5$x;(h6g@A5bV!;oC_#cVph*C69thwN#3|qq#nN39T4-##wbQZWQ}hSixX>zv zLaQv-E?oOH;(0Gk5AX9fbMATf{rLUm8-Q`lY6uCm+;ctunQL3FhOj{UlJUwI zu?=Tomp;8 zWBC&TP3g?6KsfKtn=v$@RYwbA8rlT*)WNTMp0OesVo0F11p=Kqnh_CbD_D*>Q(2xf zy@$q}P1eqWTQclf!?WZ$2!{Pdi-O~Y+HlkmHRk7)B7s;s(3W``M+*Bj^a>>E0wlMN z12{;*>=NioSBGmbCYO0C(5$=>&;mSidgikG%2Y%WyH7{I#EDenv~0ojRh9xf)0u6i zQD^UtVBJY+NJe^=rQd-jbsu@xws~8Y>*S=t{f&ByzGpcLxxY{i|3_J!T#j=>#|Tc+ zOv^Vt!*@M_SZ)45zFcyP4H-4(GWCj`^A!ws#Yu(OwM~>92Ash6@9~q(fz>O^bFRIeBd{cfNladZsi(Wpi{ap4G_xF&J zm1P|%YtH3Sz%+e}@-@t`H^i=_auNh^=v%mHqes SY5s$q=J)Ml{zGzw@aPZAtvcoa diff --git a/target/classes/Share.class b/target/classes/Share.class index 9e7f4f908924e472e13aa53e2eed739502c26f0f..b304eb7d7df8242b5ad45c4bf42c1e77d9104f87 100644 GIT binary patch delta 326 zcmaFE`i3>@)W2Q(7#J9A85Fq~m>8JZ8CZB2SQ*$D83eKt%M$f-67$ma{gbj%lS>#G z*laTMGE3|j8JIOR!#Ei@7&zG(xOf=28F&~OSc5YXi&BAfaY=r1HX{SOPcVpK4N}I( z!@$oVFws^;3d9rQVGw2zU}WGeC@o6PNGwhbD9TJuomk~C@x=-+4xl3#7?>G^K&Ap& zLLi-B8mI?IvoHXyU=RV4qCj2_P&EsX7SY91t;%k(ggr< CVK8L? delta 327 zcmaFE`i9l^)W2Q(7#J9A85G$Wm>3yYgEJC~QrQ_;7#Rez63Y_xa}x8?_5G8wQj<%7 zvc)C&$=Qqy>^{LDhV{fO6-h=0-h$GiIO zco?`C_!$|PH8jIG85kJ^c^Ft3*gz~{9tL&>4iHO}hk=uUW8#YyUO;s~=P)w}ffNB* zLLenz8mItBvjA0dF>nJ(9w0A=fe9$Wz#yWvoq<Xlxzvm diff --git a/target/classes/Stock.class b/target/classes/Stock.class index af494f4215bc73624297cdcbbb3c93061ab355e4..4d448e4ef9b5ddcb370961819c6365c485764c25 100644 GIT binary patch literal 1218 zcmZuxX-^YT6g_XcjBTfYElU9xP|$W*>b@0B1Y$zcph*ozzr9W;+BFUtu`tSb z)9H5)Wbe?#MS-G*4t>?BKJz?zSXTo-i!mfPV%)+6CW-mLQ;s_zWdXB>GqRRL3DYKK zEX?APz{nXJzb3h|)e@K}M-&Am)hcf}_KJn8m=j12)JIoWx6RkrEL_I|o!c&vOq91P z{}Y(FAuz5JcBQ{p-B9f<*HK+b4rCgt-IM;%BhE1QsphqSDi%|FS`%20>I|KWB>v|n z9$(p|DmMEq$~anAJ$Gl=ZMxno+3e6wq2707XIFZP&*5d#-&5qNS=are^x1*zxPzDM zwZP>0GO0H5q!D&{yc{(q)JH@F*$kR2kY{{^xb!zBUIDe2y0zneh@z)MOX6TIH>Jmd z(lz=+&vBnCE;XyGS>?W9o@U6P5l^7Nqe{C1kDy*@upn@g_6Eu{_e6&ZJ#D)AL=j0^ z7wuyRd+7+Ky?lhc{T*X(j!`&5(f*3!$_b_ny#AsomgqTyG(B?^Y9WI>M(8t52^VOd zm+6fikYWX^bRv2!O6VQSVyTO$;ufVBxQ#oZoGPu1N>NtxGi?lTy0pG5YHBM0gwz6e z&kfGUgQw07zK8on$3|>uB|wSmq-GERdHPvj( zpy#^+#YlR!zi-K4zr3lM+peQp(yOdfS#njiRj@9w78Yq?;oX3B%wmrCWurlygR=X6R!ScPCaS9K?)F-B*MBSP9+{Gh9UMHwEiUTJ)kO;K!Ml(K@J#29_Y>EtU_#A#iy zPcUIG9wTEf9V2W1Lhk(u^2aFHKTudc#f*V>-!;WNeWx|`D3w}7K1NjIC}0A2kj5>_ z+kH~prW5`xXi-8(EX&Z*0`AiF0{2i1<&TGh=PoVgT8#Ra b(z#h0$DHQL^|9xES$Iy~uoo|g!@$e`wR`K2 diff --git a/target/classes/TransactionCalculator.class b/target/classes/TransactionCalculator.class new file mode 100644 index 0000000000000000000000000000000000000000..47f318a458bbba5cf97cd0faa611971485ea80ec GIT binary patch literal 253 zcmZvXK?=e!5JmrJwOWe^B8Vr@jXi+4QPGXy!d_quK_h7cO)8$vg$M9ZVw55-+{_<_ z$Nc{v&)Xfq9C3&mVUQM_TNX~4e92mrnw=>^1cct1FPv!3kIC+EmckLbqC(`RFxC== z#uZLFfPg literal 0 HcmV?d00001 diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..69de3f4 --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,5 @@ +C:\Users\elisa\Downloads\progdel1\Programmering2_mappe_v26\src\main\java\Exchange.java +C:\Users\elisa\Downloads\progdel1\Programmering2_mappe_v26\src\main\java\Portfolio.java +C:\Users\elisa\Downloads\progdel1\Programmering2_mappe_v26\src\main\java\Share.java +C:\Users\elisa\Downloads\progdel1\Programmering2_mappe_v26\src\main\java\Stock.java +C:\Users\elisa\Downloads\progdel1\Programmering2_mappe_v26\src\main\java\TransactionCalculator.java diff --git a/target/test-classes/StockTest.java b/target/test-classes/StockTest.java new file mode 100644 index 0000000..5f587f9 --- /dev/null +++ b/target/test-classes/StockTest.java @@ -0,0 +1,37 @@ +import static org.junit.Assert.assertEquals; + +import java.math.BigDecimal; + +import org.junit.Test; + + +public class StockTest { + + @Test + public void testGetSalesPrice() { + Stock stock = new Stock("AAPL", "APPLE", new BigDecimal("1000")); + assertEquals(new BigDecimal("1000"), stock.getSalesPrice()); + } + + @Test + public void testAddNewSalesPrice() { + Stock stock = new Stock("AAPL", "APPLE", new BigDecimal("1000")); + stock.addNewSalesPrice(new BigDecimal("1200")); + assertEquals(new BigDecimal("1200"), stock.getSalesPrice()); + } + + @Test + public void testGetSalesPriceNone() { + Stock stock = new Stock("AAPL", "APPLE", new BigDecimal("0")); + assertEquals(new BigDecimal("0"), stock.getSalesPrice()); + } + + @Test + public void testAddNewSalesPriceNone() { + Stock stock = new Stock("AAPL", "APPLE", new BigDecimal("1000")); + stock.addNewSalesPrice(new BigDecimal("0")); + assertEquals(new BigDecimal("0"), stock.getSalesPrice()); + } + + +} From d379010fac0199b3b056d5dc1da3f65eca5ff6f9 Mon Sep 17 00:00:00 2001 From: Elisabeth Berg Date: Wed, 25 Feb 2026 21:38:56 +0100 Subject: [PATCH 11/26] Added ExchangeTest class --- target/classes/Exchange.class | Bin 3064 -> 3108 bytes target/classes/Portfolio.class | Bin 1623 -> 1631 bytes target/classes/PurchaseCalculator.class | Bin 0 -> 1119 bytes target/classes/Share.class | Bin 748 -> 748 bytes target/classes/Stock.class | Bin 1218 -> 1218 bytes target/test-classes/ExchangeTest.java | 50 ++++++++++++++++++++++++ 6 files changed, 50 insertions(+) create mode 100644 target/classes/PurchaseCalculator.class create mode 100644 target/test-classes/ExchangeTest.java diff --git a/target/classes/Exchange.class b/target/classes/Exchange.class index 74e0a4f7dcb48cfdee048e185c3512e728edd816..1a55e6d7d62f120e9e1d96e74949362b515e4d4e 100644 GIT binary patch literal 3108 zcma)7Syx+C7~LlcxsY6F8A?g#R*Dd&R;{*xr7g4+%OpW+apDqg$%T;6n*@sEa#`m( z)v>5`cME(&wOl^?xLW?z!iDXP@ue-`?l`^4E_)0eBE! zYj6pap1c^27_k{sgGXTVtg&dcNBQ19JT+^ElLDTYF>eY~4djz)B=Lo5ls&{yVNKce>o*>4{I9KDbe%V-vOrxEq_s z%OJ2-M+v-g6wsleRKs?G%KVY1jYNdC`>+i)GHREOGWay?$#Ps!i4VIoL3imWM};5z zakqvBfr>nyEI~&jn#i=3G;Jdpw*_h&n+n+Mcji0&Xhy4s7SfhS$gb*WL%VFNd6C_% z$s!c=yi>zLffCgP9}eJN9rxi7yEtPeL(B71@o4crM-YBIfFl|X3zX;2B?~$_z;?M8 zQatf+VGlAQ>n!M=Gvm}%n3b&RK^;fYEuck=#E>e04VjRVvts5@YJSSJ$Be0{(rY|y zM8^%=lJCx>CmFF40=|K)=%t91a5=lVfJ&tpa-i0DoFfV{K5!fC@-&b`ai<*3~Mk1s`HXNZrjGPY@rX6sFA5p>o9SiWiJ}hl*v5mvbtA3 z?1@LCyzH!ajNXYz_gR#99x%V|!x_x!h=O-gX_o0C>UtuE9WpPZ%vjj$Y?_c3itAXA z7V?q0p7{KN5nGlvw{;|B&)mlJG#3-5VTU7QrcH3KZ6;Dt@~j!tiw2P-%tal`c$$Ke zO*5iqV#Kz>6nn0kc_SHVKVi-Enqh0+h<3`W~)M<6v=}x;SC*c;xc)fXCc-?lyb~o zz{TPJg7UWH=yDnH-qrCQuJG!bI5|2jt*9DQ3?)zgK*xvph&NVPa&4PqahdDJ@lE}b z*-vy_#R`4NP7Ik#h2;L@Mt&dkaLTsLSkmc3dFE3(V%lL&^26B6MrP(nL(E)q;(Vca ziXo>gc~g~VFQYbD5BBnF;bv1jsFI%;j$HBs!)KNJgmBfb=5)UEYr(O`xlP#2xXel= zSAai=Qo`q0@FuE*&8w&ldR9>vyoGJ&ZeqtOc5=9z!@aB6*RqCsfez1g>zp$^1KrbP9dU{4{6v+*&`^9^%YaxYp5*5>~9?j7A4( z{3sA!U=WA+FAHzyQ-YQ-{n~FiaH&i)C+$#~WROdoOaz87yus$WZ;CeW*>Lj+9(Fc& z^C%bh_$6`8YZ!H*7@}T5)MmnRO!zUbm=HLNM;)*e4p@Z)cFrYxQe01C0bWH8uOf%{ z1fC>LMi);>dPFJTr7lKpVUpdS8kG2J2n(!XCZmCt0u9LiH>WYXf(i~}a(ET~7E0oR zt3VRJw#dvfn%Kpz04>yP8}-qSgY;Jy|9km9#5U!%Fp|r71WCm}DLbE1T4=zoA}wUr zvRXI>_d2%Up@ntqDVWo6Kq+LMDHW@RJTFq6N;JaF+@;56gXeCb&NC^UavLv$*U?9p zWSlWT8kVFz_NDPm4PKb3!HaW8Jgs$}AMjEduXlJ`1Ku>=>d*q(_jo6b_phO>IiRKS zF)@^f($Yh2rOY5*4Km>)Lk+CCnH+Rc?|m4cE{8C||4FV{7**UIRky;d!(9ViBRwOy z?+`x46{2?0f1lxV*3?IHT;rUV7?t>fBTYG}S~_V5-16>F4E;${3Vg{#T=?p5cTKUi literal 3064 zcma)8TU!%X6kR6?nGgmLL?zX>YP~=JqgJgFD;3a+22g`q>CG_=FqlkmlBo1b@Avyv z+uF;EFMa4mvDEMD*XQ;p^u-_0Utq0vos$_7Bkk8bWcKXrv(DaYuYFE_yYcfc0Pe>( zVff(J5YSPDpumC&eOmJzR|tsx^dl)Ib*q?K+bh zXRs*{u#F5KjfoOMGVfUSSX{2D(@~EFj5=+aCj>;FhDLz~6DV44H{NedhS31O zT(C&TVl3efxqLQtg1-pV7ok-+9dQj2FJa|7XxJm!Oc>2Ygk?JJ#9hqaQU1Bq%3|X+ zSdJAMR_eG1s|4yw`6R3yYY$m@(=qZ{M__SFYuWyNuAc~NuvSBhj#fmuM+w0T5zxks z+<jkQkvivY&*r?-PY!av*GxN!*%<*hm;MR36 z-8I;P`!sCTu??L9wWW*{i~h+16WQ8Q)~8~po|aeo}^UKMM|jyuTp`f<>~i~ z8&1+ZSupLC8E+kyeHzknNcJhrVtcZgNyDC!Dm$X%A<3EF7#Wda!#Wu z`yDIA`I)OBW8}wU-PTyInX)oQIxcnnn2yJBjM!2(z1hO?G*?hly}_=l9A|!lU9)H9 z=Uf=07}GGW!@`7DcLgSusi+$q6^OL-y4|h_;>M#$>&U<+51B$bZ%wAz?sYB?mEr$^ zGATK*tBL36$bni24DUKP$k{5kzYPMYmy>U4)Jq2@BaBQCJIToB&RC7DUd##^~T zpeH**?D~Xdn*)W+anl(xR0A6m*_4q!Y&e#Dcb!%0++&B_owzn0@1TmJ zcR^XkYDY=xEwEFQ9(1H4c6(VdwaL7pj$1bkughiA;GPqT9Jy6#xvWy7o(I%TAgv?n zw5LKjrXik!inWTP!lkTrSeD}+Y#})n^5mH&yY$8~QRak^B z=DDAlCh2*eQBg*9G3EulNQ;@_CA`e1v}A=sS+C$#R`43_lIL}L-k_%$zME)6Kto8w zfQIE76TmgBb-8$x7;j+{zo!`;<5OZ*u>|cq8a|bBP&t>Wl!{waxrqq8jd$i*T>EXs z;^p%$ei!e#i@Ug$>|Ko{uWc4_A1WbMDTu|zusI@X@V+Wr-~)W$7u)KxyEFb-Tn58J=1U*gVUx4K zi>M78lcR7;-3j(diGMGRqWJsUXK-|YVM}N5XcLUFCZtYm3v@IGeu6oJ6P>}1NN@(( zPA#JSfRi&QoJVzgM4Q3Xg_}RhA@M84MG>am&F@~4vYSNg;oDyHlaNFF<8h3njPj3% zg@cNk9n5+IY5EL#B6M?@KF1f#zn_D2p1vSgHQ-BH8u2<6g;H)4E`@Sb>fpbQ2zv zLaQv-E?oOH;(0Gk5AX9fbMATf{rLUm8-Q`lY6uCm+;ctunQL3FhOj{UlJUwI zu?=Tomp;8 zWBC&TP3g?6KsfKtn=v$@RYwbA8rlT*)WNTMp0OesVo0F11p=Kqnh_CbD_D*>Q(2xf zy@$q}P1eqWTQclf!?WZ$2!{Pdi-O~Y+HlkmHRk7)B7s;s(3W``M+*Bj^a>>E0wlMN z12{;*>=NioSBGmbCYO0C(5$=>&;mSidgikG%2Y%WyH7{I#EDenv~0ojRh9xf)0u6i zQD^UtVBJY+NJe^=rQd-jbsu@xws~8Y>*S=t{f&ByzGpcLxxY{i|3_J!T#j=>#|Tc+ zOv^Vt!*@M_SZ)45zFcyP4H-4(GWCj`^A!ws#Yu(OwM~>92Ash6@9~q(fz>O^bFRIeBd{cfNladZsi(Wpi{ap4G_xF&J zm1P|%YtH3Sz%+e}@-@t`H^i=_auNh^=v%mHqes SY5s$q=J)Ml{zGzw@aPZAtvcoa literal 1623 zcma)6SyR(s6g^)Xnl=qv6|~@n3$_KseJkQpH?ZJR#nHD=B1A)?Y3j&N@fY~wgU%=n zI^+1{gU|jNXI##geqb2J(U&CO%{}Lyd+trX{`~L>z&XqqNFb?0Gtq{WK-XjIxi#uq z-u&pz*~fN06iAIZo)eA>Bn!nE9ch6rQBpH>+|i3cU@cXhMrc4sGJ`Bk9qlGM&?%6) zf24_X4tS#%?(V~dHc=n?4H_?l&{xjBKJLJJp@RxUo2*li}Z zOJFLn7yak96w)WV=@-Z=P$aeDyDl4Ye6L)bk-(iMc443`%LV|0fF2fiEAkW`hwM%wqMXN`b1#^IB24PqJZW_;jL@j@fLIp3AELuHwH== zF>wf^lr(RLwa~9Wp^1b=k7WZ#a8$=J6UT8vqEv#+U0R&=U4e}?YGL4b^TeIPX&q-w zoRvPsM%+rEb@sESS}}qCO~JVG{qf~euEiHYk)#^R=3HzSReH34ji$@_ z_ik)=>FHX_?X}RVKbf+gDho#bqikHJQS+NY-M;EbQ#;muJ0#bU`(nshIR*-oQ<873Ek=G7p0BLB*kjEebFk2W@aG588 zE4Zro&a;NBn=QSAF|>-V1YYx)fTWT|f%b@^x0R+S2*5R5=X-&PzmoNCChPtO*(7eT z&;^z~sX8@flTzIZ@^2WAOY4bsXDVqe->MWgi7CbPh4(gME6T7b$+wCf0@EX_*dy=~ zMLrA)d`9W4me-asyo|#`%Q*QG=5St%jJf~n*SBFQL5tk!qd!2NR`+2L{WyUg9NI3v z+a1X&F>jDRH|dimi?4fE!8C4CU>arI;*b)!&G&Lht%w}T9Y#8l{2_m?-8u$_zBAbB Xt;WQ2e>J_l+4Oz?F#RrTC2;RIQ{F+9 diff --git a/target/classes/PurchaseCalculator.class b/target/classes/PurchaseCalculator.class new file mode 100644 index 0000000000000000000000000000000000000000..c50d57d26ecf38e8436e7d23e259422b041ad3ed GIT binary patch literal 1119 zcmZ{kdruQV6vfY!zFdY^3oVFmeDtAheSi-hCPMTN8^wSm{yCIQJ7n9%-KoKEr3sWo z6F-0-%6RWGElsRx+S%Q?_jk`Zv+3_YKYjsN$IBFA0-5b@&}ga9-Bezq>nY<0DZ~Y) z57ie{^;D->eZPO`HjKc;kuBX0bi)-Q02;x~;rbf%NCD>KJXl3MAKb zN1F`+r%>N%slZ(=?g_*<{R7v*7^FlR69Qv};+}&k%%m_akccWJGRTsUrfd2d?cn)B zarEd*5SWulAjz=2#5@zmiSWTH;)=@>DI^7^>bm2;>$dmZU{~#XRAC%v69`p_vxS9DgiCTJ%OK0b%;K1LP5TN;)^T5tw-#0u32+LNUdLZ4uvhg;w1 zJ_aTyqrHiUCeQ0EO>h#H@s`Z+r0h>DeaaNiP_CDHsF2PfloOTAkhIK@xU9uFB)b-k z6C9)kZ&|R6z>gSQz7Tg#%n>m^M3e(!3{Na^c|csZcC##yzAHUEqh*zr3-Gz?#Ua;y LnS%aMIGc^X_PEX! literal 0 HcmV?d00001 diff --git a/target/classes/Share.class b/target/classes/Share.class index b304eb7d7df8242b5ad45c4bf42c1e77d9104f87..9e7f4f908924e472e13aa53e2eed739502c26f0f 100644 GIT binary patch delta 327 zcmaFE`i9l^)W2Q(7#J9A85G$Wm>3yYgEJC~QrQ_;7#Rez63Y_xa}x8?_5G8wQj<%7 zvc)C&$=Qqy>^{LDhV{fO6-h=0-h$GiIO zco?`C_!$|PH8jIG85kJ^c^Ft3*gz~{9tL&>4iHO}hk=uUW8#YyUO;s~=P)w}ffNB* zLLenz8mItBvjA0dF>nJ(9w0A=fe9$Wz#yWvoq<Xlxzvm delta 326 zcmaFE`i3>@)W2Q(7#J9A85Fq~m>8JZ8CZB2SQ*$D83eKt%M$f-67$ma{gbj%lS>#G z*laTMGE3|j8JIOR!#Ei@7&zG(xOf=28F&~OSc5YXi&BAfaY=r1HX{SOPcVpK4N}I( z!@$oVFws^;3d9rQVGw2zU}WGeC@o6PNGwhbD9TJuomk~C@x=-+4xl3#7?>G^K&Ap& zLLi-B8mI?IvoHXyU=RV4qCj2_P&EsX7SY91t;%k(ggr< CVK8L? diff --git a/target/classes/Stock.class b/target/classes/Stock.class index 4d448e4ef9b5ddcb370961819c6365c485764c25..af494f4215bc73624297cdcbbb3c93061ab355e4 100644 GIT binary patch literal 1218 zcmZuvYflqF6g{(jtds?6sig%KP|q-GERdHPvj( zpy#^+#YlR!zi-K4zr3lM+peQp(yOdfS#njiRj@9w78Yq?;oX3B%wmrCWurlygR=X6R!ScPCaS9K?)F-B*MBSP9+{Gh9UMHwEiUTJ)kO;K!Ml(K@J#29_Y>EtU_#A#iy zPcUIG9wTEf9V2W1Lhk(u^2aFHKTudc#f*V>-!;WNeWx|`D3w}7K1NjIC}0A2kj5>_ z+kH~prW5`xXi-8(EX&Z*0`AiF0{2i1<&TGh=PoVgT8#Ra b(z#h0$DHQL^|9xES$Iy~uoo|g!@$e`wR`K2 literal 1218 zcmZuxX-^YT6g_XcjBTfYElU9xP|$W*>b@0B1Y$zcph*ozzr9W;+BFUtu`tSb z)9H5)Wbe?#MS-G*4t>?BKJz?zSXTo-i!mfPV%)+6CW-mLQ;s_zWdXB>GqRRL3DYKK zEX?APz{nXJzb3h|)e@K}M-&Am)hcf}_KJn8m=j12)JIoWx6RkrEL_I|o!c&vOq91P z{}Y(FAuz5JcBQ{p-B9f<*HK+b4rCgt-IM;%BhE1QsphqSDi%|FS`%20>I|KWB>v|n z9$(p|DmMEq$~anAJ$Gl=ZMxno+3e6wq2707XIFZP&*5d#-&5qNS=are^x1*zxPzDM zwZP>0GO0H5q!D&{yc{(q)JH@F*$kR2kY{{^xb!zBUIDe2y0zneh@z)MOX6TIH>Jmd z(lz=+&vBnCE;XyGS>?W9o@U6P5l^7Nqe{C1kDy*@upn@g_6Eu{_e6&ZJ#D)AL=j0^ z7wuyRd+7+Ky?lhc{T*X(j!`&5(f*3!$_b_ny#AsomgqTyG(B?^Y9WI>M(8t52^VOd zm+6fikYWX^bRv2!O6VQSVyTO$;ufVBxQ#oZoGPu1N>NtxGi?lTy0pG5YHBM0gwz6e z&kfGUgQw07zK8on$3|>uB|wSm stocks = new ArrayList<>(); + stocks.add(apple); + stocks.add(google); + + exchange = new Exchange("ABC", stocks); + } + + @Test + public void testFindStocksBySymbol() { + List result = exchange.findStocks("AAPL"); + + assertEquals(1, result.size()); + assertEquals("AAPL", result.get(0).getSymbol()); + } + + @Test + public void testFindStocksByCompanyNames() { + List result = exchange.findStocks("e"); + + assertEquals(2, result.size()); + } + + @Test + public void testFindStocksNotInList() { + List result = exchange.findStocks("Samsung"); + + assertEquals(0, result.size()); + } + +} From e6e8a1064d8e7ac68d1016704200be6317b6b2ad Mon Sep 17 00:00:00 2001 From: Solveig Natvig Date: Thu, 26 Feb 2026 20:47:20 +0100 Subject: [PATCH 12/26] Add SaleCalculator --- src/main/java/SaleCalculator.java | 37 +++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/main/java/SaleCalculator.java diff --git a/src/main/java/SaleCalculator.java b/src/main/java/SaleCalculator.java new file mode 100644 index 0000000..d1f9592 --- /dev/null +++ b/src/main/java/SaleCalculator.java @@ -0,0 +1,37 @@ +import java.math.BigDecimal; +import java.util.Formatter.BigDecimalLayoutForm; + +public class SaleCalculator { + private BigDecimal purchasePrice; + private BigDecimal salesPrice; + private BigDecimal quantity; + + public SaleCalculator(Share share) { + this.purchasePrice = share.getPurchasePrice(); + this.salesPrice = salesPrice; // Ask about this one... + this.quantity = share.getQuantity(); + } + + public BigDecimal calculateGross() { + return this.salesPrice.multiply(this.quantity); + } + + public BigDecimal calculateCommission() { + BigDecimal rate = new BigDecimal("0.01"); + return calculateGross().multiply(rate); + } + + public BigDecimal calculateTax() { + BigDecimal sellingCost = this.purchasePrice.multiply(this.quantity); + BigDecimal profit = calculateGross().subtract(calculateCommission()).subtract(sellingCost); + BigDecimal rate = new BigDecimal("0.3"); + return profit.multiply(rate); + } + + public BigDecimal calculateTotal() { + return calculateGross().subtract(calculateCommission()).subtract(calculateTax()); + } + + + +} From a6df2313f0263086e7cf3147f20640eaeb1c4c5c Mon Sep 17 00:00:00 2001 From: Solveig Natvig Date: Thu, 26 Feb 2026 20:52:24 +0100 Subject: [PATCH 13/26] Ignore build files --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2f7896d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +target/ From 214ea962eed91015274218ca742932d9270c551e Mon Sep 17 00:00:00 2001 From: Solveig Natvig Date: Fri, 27 Feb 2026 15:48:17 +0100 Subject: [PATCH 14/26] Uses salesPrice from the share object --- src/main/java/SaleCalculator.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/SaleCalculator.java b/src/main/java/SaleCalculator.java index d1f9592..476ed1f 100644 --- a/src/main/java/SaleCalculator.java +++ b/src/main/java/SaleCalculator.java @@ -1,5 +1,4 @@ import java.math.BigDecimal; -import java.util.Formatter.BigDecimalLayoutForm; public class SaleCalculator { private BigDecimal purchasePrice; @@ -8,7 +7,7 @@ public class SaleCalculator { public SaleCalculator(Share share) { this.purchasePrice = share.getPurchasePrice(); - this.salesPrice = salesPrice; // Ask about this one... + this.salesPrice = share.getStock().getSalesPrice(); this.quantity = share.getQuantity(); } From 7df9db20b0ab36ba278c1e2f0b7944593cf644bd Mon Sep 17 00:00:00 2001 From: Solveig Natvig Date: Fri, 27 Feb 2026 16:03:46 +0100 Subject: [PATCH 15/26] PurchaseCalculator and SalaCalculator implements TransactionCalculator --- src/main/java/PurchaseCalculator.java | 2 +- src/main/java/SaleCalculator.java | 2 +- src/main/java/TransactionCalculator.java | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/PurchaseCalculator.java b/src/main/java/PurchaseCalculator.java index 0ca34cb..78f8e90 100644 --- a/src/main/java/PurchaseCalculator.java +++ b/src/main/java/PurchaseCalculator.java @@ -1,6 +1,6 @@ import java.math.BigDecimal; -public class PurchaseCalculator { +public class PurchaseCalculator implements TransactionCalculator { private BigDecimal purchasePrice; private BigDecimal quantity; diff --git a/src/main/java/SaleCalculator.java b/src/main/java/SaleCalculator.java index 476ed1f..f868729 100644 --- a/src/main/java/SaleCalculator.java +++ b/src/main/java/SaleCalculator.java @@ -1,6 +1,6 @@ import java.math.BigDecimal; -public class SaleCalculator { +public class SaleCalculator implements TransactionCalculator{ private BigDecimal purchasePrice; private BigDecimal salesPrice; private BigDecimal quantity; diff --git a/src/main/java/TransactionCalculator.java b/src/main/java/TransactionCalculator.java index dd17eef..0bafc6e 100644 --- a/src/main/java/TransactionCalculator.java +++ b/src/main/java/TransactionCalculator.java @@ -7,3 +7,4 @@ public interface TransactionCalculator { BigDecimal calculateTax(); BigDecimal calculateTotal(); } + From ffe1266d6d25c002114428ee30a2f8f271460d30 Mon Sep 17 00:00:00 2001 From: Solveig Natvig Date: Sat, 28 Feb 2026 11:17:08 +0100 Subject: [PATCH 16/26] Add Transaction --- src/main/java/Transaction.java | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/main/java/Transaction.java diff --git a/src/main/java/Transaction.java b/src/main/java/Transaction.java new file mode 100644 index 0000000..18d07ed --- /dev/null +++ b/src/main/java/Transaction.java @@ -0,0 +1,31 @@ +public abstract class Transaction { + private Share share; + private int week; + private TransactionCalculator calculator; + protected boolean committed; + + protected Transaction(Share share, int week, TransactionCalculator calculator) { + this.share = share; + this.week = week; + this.calculator = calculator; + } + + public Share getShare() { + return this.share; + } + + public int getWeek() { + return this.week; + } + + public TransactionCalculator getCalculator() { + return this.calculator; + } + + public boolean isCommitted() { + return this.committed; + } + + public abstract void commit(Player player); + +} From 32b5cb70cbf5b56335ff1118db3f38b1b52fbb35 Mon Sep 17 00:00:00 2001 From: Solveig Natvig Date: Sat, 28 Feb 2026 11:18:35 +0100 Subject: [PATCH 17/26] Add Player --- src/main/java/Player.java | 43 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/main/java/Player.java diff --git a/src/main/java/Player.java b/src/main/java/Player.java new file mode 100644 index 0000000..e94241c --- /dev/null +++ b/src/main/java/Player.java @@ -0,0 +1,43 @@ +import java.math.BigDecimal; + +public class Player { + private String name; + private BigDecimal startingMoney; + 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 String getName() { + return this.name; + } + + public BigDecimal getMoney() { + return this.money; + } + + public void addMoney(BigDecimal amount) { + this.money.add(amount); + } + + public void withdrawMoney(BigDecimal amount) { + this.money.subtract(amount); + } + + public Portfolio getPortfolio() { + return this.portfolio; + } + + public TransactionArchive getTransactionArchive() { + return this.transactionArchive; + } + + +} From 2aa2af0f7e67caad275f478550046bb2fdfc33dd Mon Sep 17 00:00:00 2001 From: Elisabeth Berg Date: Tue, 10 Mar 2026 19:30:55 +0100 Subject: [PATCH 18/26] Added PortfolioTest class --- src/test/java/PortfolioTest.java | 37 ++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/test/java/PortfolioTest.java diff --git a/src/test/java/PortfolioTest.java b/src/test/java/PortfolioTest.java new file mode 100644 index 0000000..57ecb47 --- /dev/null +++ b/src/test/java/PortfolioTest.java @@ -0,0 +1,37 @@ +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Test; +import java.math.BigDecimal; + +public class PortfolioTest { + + @Test + void testAddShare() { + Portfolio portfolio = new Portfolio(); + + Stock stock = new Stock("AAPL", "Apple", new BigDecimal("150")); + Share share = new Share(stock, new BigDecimal("10"), new BigDecimal("140")); + + boolean result = portfolio.addShare(share); + + assertTrue(result); + assertTrue(portfolio.contains(share)); + } + + @Test + void testRemoveShare() { + Portfolio portfolio = new Portfolio(); + + Stock stock = new Stock("AAPL", "Apple", new BigDecimal("150")); + Share share = new Share(stock, new BigDecimal("10"), new BigDecimal("140")); + + portfolio.addShare(share); + + boolean result = portfolio.removeShare(share); + + assertTrue(result); + assertFalse(portfolio.contains(share)); + } + + +} From 6baafb4324dc45c198d4974835ec6c37fcd3f579 Mon Sep 17 00:00:00 2001 From: Elisabeth Berg Date: Tue, 10 Mar 2026 19:32:38 +0100 Subject: [PATCH 19/26] Moved test-classes --- {target/test-classes => src/test/java}/ExchangeTest.java | 0 {target/test-classes => src/test/java}/StockTest.java | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename {target/test-classes => src/test/java}/ExchangeTest.java (100%) rename {target/test-classes => src/test/java}/StockTest.java (100%) diff --git a/target/test-classes/ExchangeTest.java b/src/test/java/ExchangeTest.java similarity index 100% rename from target/test-classes/ExchangeTest.java rename to src/test/java/ExchangeTest.java diff --git a/target/test-classes/StockTest.java b/src/test/java/StockTest.java similarity index 100% rename from target/test-classes/StockTest.java rename to src/test/java/StockTest.java From b42502d37941ef3704f4951c3c2f1e43ebe0e892 Mon Sep 17 00:00:00 2001 From: Elisabeth Berg Date: Tue, 10 Mar 2026 20:06:17 +0100 Subject: [PATCH 20/26] Added more tests to PortfolioTest class --- src/test/java/ExchangeTest.java | 9 +++--- src/test/java/PortfolioTest.java | 50 ++++++++++++++++++++++++++++++-- src/test/java/StockTest.java | 5 ++-- 3 files changed, 54 insertions(+), 10 deletions(-) diff --git a/src/test/java/ExchangeTest.java b/src/test/java/ExchangeTest.java index d3bcd62..eb3ad47 100644 --- a/src/test/java/ExchangeTest.java +++ b/src/test/java/ExchangeTest.java @@ -1,19 +1,18 @@ -import static org.junit.Assert.assertEquals; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; -import org.junit.Before; -import org.junit.Test; - public class ExchangeTest { private Exchange exchange; private Stock apple; private Stock google; - @Before + @BeforeAll public void setUp() { apple = new Stock("AAPL", "Apple", new BigDecimal("100")); google = new Stock("GOOGL", "Google", new BigDecimal("200")); diff --git a/src/test/java/PortfolioTest.java b/src/test/java/PortfolioTest.java index 57ecb47..36f7419 100644 --- a/src/test/java/PortfolioTest.java +++ b/src/test/java/PortfolioTest.java @@ -6,7 +6,7 @@ public class PortfolioTest { @Test - void testAddShare() { + void testAddSharePortfolio() { Portfolio portfolio = new Portfolio(); Stock stock = new Stock("AAPL", "Apple", new BigDecimal("150")); @@ -19,7 +19,7 @@ void testAddShare() { } @Test - void testRemoveShare() { + void testRemoveSharePortfolio() { Portfolio portfolio = new Portfolio(); Stock stock = new Stock("AAPL", "Apple", new BigDecimal("150")); @@ -33,5 +33,51 @@ void testRemoveShare() { assertFalse(portfolio.contains(share)); } + @Test + void testGetSharesPortfolio() { + Portfolio portfolio = new Portfolio(); + + Stock stock = new Stock("AAPL", "Apple", new BigDecimal("150")); + Share share = new Share(stock, new BigDecimal("10"), new BigDecimal("140")); + + portfolio.addShare(share); + + var shares = portfolio.getShares(); + + assertEquals(1, shares.size()); + assertTrue(shares.contains(share)); + } + + @Test + void testGetSharesBySymbolPortfolio() { + Portfolio portfolio = new Portfolio(); + + Stock stock1 = new Stock("AAPL", "Apple", new BigDecimal("150")); + Stock stock2 = new Stock("GOOGL", "Google", new BigDecimal("200")); + + Share share1 = new Share(stock1, new BigDecimal("10"), new BigDecimal("140")); + Share share2 = new Share(stock2, new BigDecimal("10"), new BigDecimal("190")); + + portfolio.addShare(share1); + portfolio.addShare(share2); + + var result = portfolio.getShares("AAPL"); + + assertEquals(1, result.size()); + assertTrue(result.contains(share1)); + } + + @Test + void testContainsPortfolio() { + Portfolio portfolio = new Portfolio(); + + Stock stock = new Stock("AAPL", "Apple", new BigDecimal("150")); + Share share = new Share(stock, new BigDecimal("10"), new BigDecimal("140")); + + portfolio.addShare(share); + + assertTrue(portfolio.contains(share)); + } + } diff --git a/src/test/java/StockTest.java b/src/test/java/StockTest.java index 5f587f9..1bfcc2a 100644 --- a/src/test/java/StockTest.java +++ b/src/test/java/StockTest.java @@ -1,9 +1,8 @@ -import static org.junit.Assert.assertEquals; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; import java.math.BigDecimal; -import org.junit.Test; - public class StockTest { From cb88b74d56457eccc3b7de7bda1e077ad12f70af Mon Sep 17 00:00:00 2001 From: Elisabeth Berg Date: Tue, 10 Mar 2026 20:54:33 +0100 Subject: [PATCH 21/26] Added ShareTest class --- src/test/java/ShareTest.java | 71 ++++++++++++++++++++++++ target/classes/PurchaseCalculator.class | Bin 1119 -> 1148 bytes 2 files changed, 71 insertions(+) create mode 100644 src/test/java/ShareTest.java diff --git a/src/test/java/ShareTest.java b/src/test/java/ShareTest.java new file mode 100644 index 0000000..ba6dc76 --- /dev/null +++ b/src/test/java/ShareTest.java @@ -0,0 +1,71 @@ +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Test; +import java.math.BigDecimal; + + +public class ShareTest { + + @Test + void testShareConstructor() { + + Stock stock = new Stock("AAPL", "Apple", new BigDecimal("150")); + BigDecimal quantity = new BigDecimal("10"); + BigDecimal purchasePrice = new BigDecimal("140"); + + Share share = new Share(stock, quantity, purchasePrice); + assertNotNull(share); + } + + @Test + void testGetStock() { + + Stock stock = new Stock("AAPL", "Apple", new BigDecimal("150")); + Share share = new Share(stock, new BigDecimal("10"), new BigDecimal("140")); + + Stock result = share.getStock(); + + assertEquals(stock, result); + } + + @Test + void testGetQuantity() { + + Stock stock = new Stock("AAPL", "Apple", new BigDecimal("150")); + Share share = new Share(stock, new BigDecimal("10"), new BigDecimal("140")); + + BigDecimal result = share.getQuantity(); + + assertEquals(new BigDecimal("10"), result); + } + + @Test + void testGetPurchasePrice() { + + Stock stock = new Stock("AAPL", "Apple", new BigDecimal("150")); + Share share = new Share(stock, new BigDecimal("10"), new BigDecimal("140")); + + BigDecimal result = share.getPurchasePrice(); + + assertEquals(new BigDecimal("140"), result); + } + + @Test + void testNullStock() { + + Share share = new Share(null, new BigDecimal("10"), new BigDecimal("100")); + + assertNull(share.getStock()); + } + + @Test + void testNegativePrice() { + + Stock stock = new Stock("AAPL", "Apple", new BigDecimal("150")); + Share share = new Share(stock, new BigDecimal("10"), new BigDecimal("-50")); + + assertEquals(new BigDecimal("-50"), share.getPurchasePrice()); + } + + +} diff --git a/target/classes/PurchaseCalculator.class b/target/classes/PurchaseCalculator.class index c50d57d26ecf38e8436e7d23e259422b041ad3ed..bab65f2784f8620746c271bbe1ef0ba7f9736df1 100644 GIT binary patch literal 1148 zcmZ{iYflqF7=_RD!j@&YwX~pkLq*%7ZM}dOZfc2suu%+^#E-+WX@_igad&F)Uugm* z(ZnC%k21cq3~duJ&F*w|=6&Xz^Um)-KYjsN$4d(dhU|7XblM_v>%w!oo=`z(A;mCt zAijvIC;V3R{oaA=C<`MD`DQ5mNH|Ic{-A(i{LoOgL+Q8-g+^T75vpB%C0kprBRj%d zWypN)3SUX}m0@H}`ciE$*u}<9TZHavX_p~Y5B6OfNlb9qm}E#6OS?9vk+YCxNXI)l zW{@Y1Emxh(HwVuZOBWwK3Wiw@3mFZ&#Bo^@#)$C2DAGHwaEv0uFxim4`>xyBbHk?C z^T<)Q5jeuz6`|B~^D(8`GGdr%oU0gQLSEC6cEw;BdkhnVh(mVYgh3S9Sj1fmcZhIN zTpUG|D6&r1Q}WQG$STE)&HcwSL#}^dJ?L~~6j9$YxJTM*m0E3C3#jOvtJGSGq4)9Nr|IjgUvt*Pgg(VC?l^=TIE>NhLU1` zU$1O%JknfyC!pKozLq-Y*?*&~=y0$=6-j#1NYIb^NS8RFyG3J~zS|h1H>cUhcn6R# zpJKec)Wg&X3VNJ7!Tk5Q>?*ypNYR@vJ0W!2X9#hPz7(jOig6t`Xw?4}aFftXr(lj) zp*@V&c=?#n$C&To_BWa*pvfcg+IURkXZs9|=`0N6E!oj0<$hxEQ+DYT_Z#INYNT@r zWyf2lNm_PDT+ZNZlKqh6YjG5%0dE;FkHL>McxfQ+j94Jz>=2Rni3zM2;*&mc-Pp}( cf%H7>;W-WKGz`FJuIGnbpUY&}jI(+17cTwRtN;K2 literal 1119 zcmZ{kdruQV6vfY!zFdY^3oVFmeDtAheSi-hCPMTN8^wSm{yCIQJ7n9%-KoKEr3sWo z6F-0-%6RWGElsRx+S%Q?_jk`Zv+3_YKYjsN$IBFA0-5b@&}ga9-Bezq>nY<0DZ~Y) z57ie{^;D->eZPO`HjKc;kuBX0bi)-Q02;x~;rbf%NCD>KJXl3MAKb zN1F`+r%>N%slZ(=?g_*<{R7v*7^FlR69Qv};+}&k%%m_akccWJGRTsUrfd2d?cn)B zarEd*5SWulAjz=2#5@zmiSWTH;)=@>DI^7^>bm2;>$dmZU{~#XRAC%v69`p_vxS9DgiCTJ%OK0b%;K1LP5TN;)^T5tw-#0u32+LNUdLZ4uvhg;w1 zJ_aTyqrHiUCeQ0EO>h#H@s`Z+r0h>DeaaNiP_CDHsF2PfloOTAkhIK@xU9uFB)b-k z6C9)kZ&|R6z>gSQz7Tg#%n>m^M3e(!3{Na^c|csZcC##yzAHUEqh*zr3-Gz?#Ua;y LnS%aMIGc^X_PEX! From 5ec6c530ad36129c8a58ca955234c84230d1b850 Mon Sep 17 00:00:00 2001 From: Solveig Natvig Date: Sun, 22 Mar 2026 13:59:02 +0100 Subject: [PATCH 22/26] Add TransactionArchive --- src/main/java/TransactionArchive.java | 40 +++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/main/java/TransactionArchive.java diff --git a/src/main/java/TransactionArchive.java b/src/main/java/TransactionArchive.java new file mode 100644 index 0000000..6d86d71 --- /dev/null +++ b/src/main/java/TransactionArchive.java @@ -0,0 +1,40 @@ +import java.util.ArrayList; +import java.util.stream.Collectors; +import java.util.List; + +public class TransactionArchive { + private List transactions; + + public TransactionArchive() { + this.transactions = new ArrayList<>(); + } + + public boolean add(Transaction transaction) { + if (transaction == null) { + throw new IllegalArgumentException("Should not be null"); // Eller NullPointerExeption? + } + + return transactions.add(transaction); + + } + + public boolean isEmpty() { + return transactions.isEmpty(); + } + + public List getTransactions(int week) { + return transactions.stream().filter(transaction -> transaction.getWeek() == week).collect(Collectors.toList()); + } + + public List getPurchase(int week) { + return transactions.stream().filter(transaction -> transaction.getWeek() == week).filter(purchase -> transactions instanceof Purchase).map(transaction -> (Purchase) transaction).collect(Collectors.toList()); + } + + public List getSale(int week) { + return transactions.stream().filter(transaction -> transaction.getWeek() == week).filter(sale -> transactions instanceof Sale).map(transaction -> (Sale) transaction).collect(Collectors.toList()); + } + + public int countDistinctWeeks() { + return (int) transactions.stream().map(Transaction::getWeek).distinct().count(); + } +} From 95653ae2b01b1d184821cdc233cc469b8d2a6ba9 Mon Sep 17 00:00:00 2001 From: Solveig Natvig Date: Sun, 22 Mar 2026 15:39:29 +0100 Subject: [PATCH 23/26] Add commit method --- src/main/java/Purchase.java | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 src/main/java/Purchase.java diff --git a/src/main/java/Purchase.java b/src/main/java/Purchase.java new file mode 100644 index 0000000..b8bd457 --- /dev/null +++ b/src/main/java/Purchase.java @@ -0,0 +1,22 @@ +import java.math.BigDecimal; + +public class Purchase extends Transaction { + public Purchase(Share share, int week) { + super(share, week, new PurchaseCalculator(share)); + } + + @Override + public void commit(Player player) { + BigDecimal price = this.getShare().getPurchasePrice(); + + if (isCommitted() || (player.getMoney().compareTo(price) < 0)) { + return; + } + + player.withdrawMoney(price); + player.getPortfolio().addShare(getShare()); + player.getTransactionArchive().add(this); + + this.committed = true; + } +} From ba7303a73e80aad3e52b73cd9900348e68f33d72 Mon Sep 17 00:00:00 2001 From: Solveig Natvig Date: Sun, 22 Mar 2026 15:55:52 +0100 Subject: [PATCH 24/26] Add commit method --- src/main/java/Sale.java | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/main/java/Sale.java diff --git a/src/main/java/Sale.java b/src/main/java/Sale.java new file mode 100644 index 0000000..7a3efc2 --- /dev/null +++ b/src/main/java/Sale.java @@ -0,0 +1,21 @@ +import java.math.BigDecimal; + +public class Sale extends Transaction { + public Sale(Share share, int week) { + super(share, week, new SaleCalculator(share)); + } + + public void commit(Player player) { + BigDecimal price = getCalculator().calculateTotal(); + + if (isCommitted() || !player.getPortfolio().contains(this.getShare())) { + return; + } + + player.addMoney(price); + player.getPortfolio().removeShare(this.getShare()); + player.getTransactionArchive().add(this); + + this.committed = true; + } +} From 33cebc4409547d44dea4ce2d84a0729ecb3cecd0 Mon Sep 17 00:00:00 2001 From: Solveig Natvig Date: Sun, 22 Mar 2026 15:58:45 +0100 Subject: [PATCH 25/26] Fix price retrieval in commit method --- src/main/java/Purchase.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/Purchase.java b/src/main/java/Purchase.java index b8bd457..67b1049 100644 --- a/src/main/java/Purchase.java +++ b/src/main/java/Purchase.java @@ -7,14 +7,14 @@ public Purchase(Share share, int week) { @Override public void commit(Player player) { - BigDecimal price = this.getShare().getPurchasePrice(); + BigDecimal price = this.getCalculator().calculateTotal(); if (isCommitted() || (player.getMoney().compareTo(price) < 0)) { return; } player.withdrawMoney(price); - player.getPortfolio().addShare(getShare()); + player.getPortfolio().addShare(this.getShare()); player.getTransactionArchive().add(this); this.committed = true; From 35ca87a86ed86665ec95238eeac1e99c160517ef Mon Sep 17 00:00:00 2001 From: Elisabeth Berg Date: Tue, 24 Mar 2026 17:51:38 +0100 Subject: [PATCH 26/26] Updated missing methods in Exchange class --- src/main/java/Exchange.java | 46 +++++++++++++++++++++++++++------- src/main/java/Player.java | 4 +-- target/classes/Exchange.class | Bin 3108 -> 3923 bytes 3 files changed, 39 insertions(+), 11 deletions(-) diff --git a/src/main/java/Exchange.java b/src/main/java/Exchange.java index 9c60de4..afbde59 100644 --- a/src/main/java/Exchange.java +++ b/src/main/java/Exchange.java @@ -41,11 +41,12 @@ public Stock getStock(String symbol) { } public List findStocks(String searchTerm) { - List result = new ArrayList<>(); + List result = new ArrayList<>(); + String lowerSearch = searchTerm.toLowerCase(); for (Stock stock : stockMap.values()) { - if (stock.getSymbol().contains(searchTerm) - || stock.getCompany().contains(searchTerm)) { + if (stock.getSymbol().toLowerCase().contains(lowerSearch) + || stock.getCompany().toLowerCase().contains(lowerSearch)) { result.add(stock); } } @@ -53,13 +54,40 @@ public List findStocks(String searchTerm) { return result; } - // public Transaction buy(String symbol, BigDecimal quantity, Player player) { - // return; - // } + public Transaction buy(String symbol, BigDecimal quantity, Player player) { + Stock stock = getStock(symbol); + + // unngå nullpointerexception + if (stock == null) { + return null; + } + + // lager en ny "andel" basert på nåværende salgspris + Share shareToBuy = new Share(stock, quantity, stock.getSalesPrice()); + + // oppretter kjøpstransaksjonen for den uka + Purchase purchase = new Purchase(shareToBuy, this.week); + + // committer til player + purchase.commit(player); + + return purchase; + } + + public Transaction sell(Share share, Player player) { + // unngå nullpointerexception + if (share == null) { + return null; + } - // public Transaction sell(Share share, Player player) { - // return; - // } + // oppretter salgstransaksjonen for den uka + Sale sale = new Sale(share, this.week); + + // commiter til player + sale.commit(player); + + return sale; + } public void advance() { diff --git a/src/main/java/Player.java b/src/main/java/Player.java index e94241c..59b4f72 100644 --- a/src/main/java/Player.java +++ b/src/main/java/Player.java @@ -24,11 +24,11 @@ public BigDecimal getMoney() { } public void addMoney(BigDecimal amount) { - this.money.add(amount); + this.money = this.money.add(amount); } public void withdrawMoney(BigDecimal amount) { - this.money.subtract(amount); + this.money = this.money.subtract(amount); } public Portfolio getPortfolio() { diff --git a/target/classes/Exchange.class b/target/classes/Exchange.class index 1a55e6d7d62f120e9e1d96e74949362b515e4d4e..dde00a72d61651ff9f9d6fc58b3ce5aab8aebf08 100644 GIT binary patch delta 1449 zcmY*X{ZmwB7(FlC57@m}Avs(tR0Nwv&<}mkc`v)n@WVcP@B5s4o^#Igo-4jx;`#l* zE7t&Q#cvlpe<-CM>_)GF2sR6NQ;AUGa3tAijYPbtN1uUyMD4$o_2q*o*AWva8nDK! zn$c7=R@0b>#UkNUG!d5^aRUhq+fAzfo}_^hN$2T{q#6@L!&ZFUi!zKF7_(2SYwz~P zv%&z3nzw#qA3@U71cqGL!(wa6-`mJ%S}1ju&bH9ta_Rs zk(}*`?b4l|nLxyFMgb9_teT*JG7^a~-jb}AEYb29bi7Y!n-!yhNt~4Bl#g+^vm^;S zloOH&lIm9Pm=zBbyat~cIET;eztr;lDSV^jYwps1Oe<0ie2eew25m#$6fPLJh#7lW z+jjpHzURI$laDFP8n}!J^6%fVuf@ZID+cEAgZ-!G)21yOa z;|)77kM6En^z5l}5Z+sP3HQz6puijk1On=L)S2oWDg~~iHlUb_gN?-b9SlvPP`)0@ zyq!_6-Hu9D?+z&wRr*VX}ki0)rqt5^OO2+n#4CWS8F+Go?U8ceu z92}d)ive{WC%R0PsTR-Tm4IeyOzt&Po929~Zy-a7%M)PTO8wigg1*<#Wi=gbq6e8s z)8ee9MC#GuCc^nRjR|^{PjA8|CtYL`S%YG{g}14+8u@q!@A4a&Ngl*MNUxAUf%kAG zW9bM(RM=i!m9a9}RkbMmgS~#AgAe_3my4oTxhrZRzLliySjp8CqstXrxyZ64b~VmY zgpkax#2lh^6n=z{NhbB=Ldf-gVi$NzTeDYh&w1?hWiMWcAs>@>v(&+-Mfjqx2wx69 zr1*=K%lOK{bU^c)nuALL-PA9_aWHol`BkRw;HsVWnq^PIgKn%x57*m^EjY*<(~lMm xU_S=g=|&WB`>J={x}TV4E)fsl26wCwXW|#0X++m7-6two2@Nk6rB69ah5JU~($Mgz2;mqTN$4O4DCnc_vdwPf^tP#6fie(5ISS#mLb`Tpw9&O+djWT3Z z8m%Wqo+#k`_cn^RNtAl>CMm&E7>dn`O8GVhla$TS6t(|U^;a#JQ7SD5buv`ZIt|}E zK`K6t-XyGt)3TikpW|VMdc&OVUv4If&3Byjxm0H-BDT-fIu%i`xbCCJ3C1GI=Z=0J zic~h>3UX8!VnUFVnNu{;LYj7o9pd%TrhkUY%kMENlu71up9iv+6cNTnv!!kp4;j@p M1*PhdFb8=22QVXna{vGU