From 68d4fbdc2ea7248192acc7189b584c9bc93f3053 Mon Sep 17 00:00:00 2001 From: k-romero Date: Fri, 13 Mar 2020 18:19:51 -0400 Subject: [PATCH 1/8] add dependency for unirest and create methods for api calls --- pom.xml | 14 +++++++++ src/main/java/controller/ApiController.java | 27 ++++++++++++++++++ src/test/java/Test.java | 2 +- .../testcontroller/ApiControllerTest.java | 26 +++++++++++++++++ target/classes/Hello.class | Bin 0 -> 514 bytes target/classes/controller/ApiController.class | Bin 0 -> 1584 bytes target/test-classes/Test.class | Bin 0 -> 237 bytes .../testcontroller/ApiControllerTest.class | Bin 0 -> 1174 bytes 8 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 src/main/java/controller/ApiController.java create mode 100644 src/test/java/testcontroller/ApiControllerTest.java create mode 100644 target/classes/Hello.class create mode 100644 target/classes/controller/ApiController.class create mode 100644 target/test-classes/Test.class create mode 100644 target/test-classes/testcontroller/ApiControllerTest.class diff --git a/pom.xml b/pom.xml index 22d934e..58a2fb0 100644 --- a/pom.xml +++ b/pom.xml @@ -8,6 +8,20 @@ untitled1 1.0-SNAPSHOT + + + com.konghq + unirest-java + 3.4.01 + + + junit + junit + 4.12 + test + + + diff --git a/src/main/java/controller/ApiController.java b/src/main/java/controller/ApiController.java new file mode 100644 index 0000000..e48d2a2 --- /dev/null +++ b/src/main/java/controller/ApiController.java @@ -0,0 +1,27 @@ +package controller; + +import kong.unirest.HttpResponse; +import kong.unirest.Unirest; + +public class ApiController { + + public static String createApiQuery(String symbol){ + StringBuilder builder = new StringBuilder(); + //beginning part of the get() method + builder.append("https://alpha-vantage.p.rapidapi.com/query?datatype=json&symbol=") + .append(symbol.toUpperCase()) + .append("&function=TIME_SERIES_MONTHLY"); + + return builder.toString(); + } + + public static String fetchApiQuery(String yourQuery){ + HttpResponse response = Unirest.get(yourQuery) + .header("x-rapidapi-host", "alpha-vantage.p.rapidapi.com") + .header("x-rapidapi-key", "9c88018860msh40e297080f45ec6p13b769jsnc02453b1e456") + .asString(); + response.getBody(); + return response.getBody(); + } + +} diff --git a/src/test/java/Test.java b/src/test/java/Test.java index 092c751..7f8c0cc 100644 --- a/src/test/java/Test.java +++ b/src/test/java/Test.java @@ -1,4 +1,4 @@ -package java; public class Test { + } diff --git a/src/test/java/testcontroller/ApiControllerTest.java b/src/test/java/testcontroller/ApiControllerTest.java new file mode 100644 index 0000000..57002be --- /dev/null +++ b/src/test/java/testcontroller/ApiControllerTest.java @@ -0,0 +1,26 @@ +package testcontroller; + +import controller.ApiController; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class ApiControllerTest { + + @Test + public void testCreateApiQuery(){ + String symbol = "msft"; + String actual = ApiController.createApiQuery(symbol); + String expected = "https://alpha-vantage.p.rapidapi.com/query?datatype=json&symbol=MSFT&function=TIME_SERIES_MONTHLY"; + assertEquals(expected,actual); + } + + + // IMPORTANT! This test makes calls to the API, change the symbol to retrieve different stock tickers! + @Test + public void testFetchApiQuery(){ + String symbol = "bp"; + String resultOfCall = ApiController.fetchApiQuery(ApiController.createApiQuery(symbol)); + System.out.println(resultOfCall); + } +} diff --git a/target/classes/Hello.class b/target/classes/Hello.class new file mode 100644 index 0000000000000000000000000000000000000000..692bd87ea9aee57bc5f2edba30ae16e8188e058d GIT binary patch literal 514 zcmZuu%T5A85Uk;`%dV>+2)-Y9LJw{{dBAuvF&;K*g5lz6zzGi7hglXAK1&apc<=-K zC}Ztnf+WnLd%C*2s(a@9=kp7|DGqHIShG+^ql9%E8`w0lWnx>vIM<<0E(G$eqpm>V zGI~@3Wlx9dW*qcXd@p-Gk*XKc1ADb0UK%y(gJoT8pnNgrBgjSqdZAj9GEDX*m1CnJ*qvbQKG|%iG2qL zXbKdwT7k+;^R_os{bUa6Oh$1PJz!LAyw19q@k%bkMiKNYE85yxRsWegR?mX8QmD literal 0 HcmV?d00001 diff --git a/target/classes/controller/ApiController.class b/target/classes/controller/ApiController.class new file mode 100644 index 0000000000000000000000000000000000000000..257e084c40adaf215e5c7b67d69489190ee1e5c5 GIT binary patch literal 1584 zcma)6ZBx@&6n<`tO=tsXmIZn91zncHwkfofVnGo^!3{VIsN*N+HoeebNwUeUv;2tt zFZu;VXB zDvZ#`B`IuLMP5ZAg)Yn}D5{uMQ3|cO6z-s`U|zw3g1ZcfdE2oiZQ|qUXAB+7ZdEY! zn6@J}8v7ODZ}Uo>Ji6&xy#9>)c4!|vJ7moc7zRztb)@gs>%uqgd-n2otIW`C`GQM9 z?tdD>KVTReH~08!Zq&K6Yivp1c6Q6@b{9bl4)!ZMeNz;m5|rW-O}xrC*e~BjqO$Qg@$D;DR`h^1rJFR|7A{kWNL088HRs`LBk`g(j+a!J`!?M5V$bA`-gh3 z1PNn$&MK91Q>9Wdw;$9BIWavqn=9pZ3NykgdQkOCA(#CN0B5AfnKdI~qi!dd)=Lx6EkohH%p6V=umc=IMKo`bqwhw1ZF+k7chOXa}{#u1vLrRkY# zF>v7_-A)>0$*s~`ZRH{&x{RCnjXq@IFAf%Jo}T?=8MHE5FHO7ydrO-buF^BnbS5xB zdo2pUAcn~5#4tw46DC(FI!5b_kBGf^hqyVZcN|iwLnLU?6?#0MJcRm&VxqczxYVqn zB848R+)tm#A=-s~`l4F6hU;XhgyROmX4G-?d&mC?e%LWT@gALeQcoR0i{mr8^lrW9 zWPgOq4Cdq!t}r~0me0^b5b@@4gESt950x0{B`$`k^(a9})9ERYJZ?3CjN%Gz;|~Hd SMp+>lk>^j^F^rQhhV(a$5|e`f literal 0 HcmV?d00001 diff --git a/target/test-classes/Test.class b/target/test-classes/Test.class new file mode 100644 index 0000000000000000000000000000000000000000..5ebff1dc668a0774b05fa49558843fae02b9442f GIT binary patch literal 237 zcmXYrxeCHi5Jm4~H8C#u2X<;QR4#YTEtcg`#2J%OR3suhiBf6* zhgN-672k-CvZ|K^|4=k#BDYF!cpA=AaTftB*nC?9!ce0y6Zs|F$Ei$ejA8IgI*5~J iSsiv^>j8WA1U(oSa9JJ3y6&(BZEeGY&yLV-JHZd^St^?V literal 0 HcmV?d00001 diff --git a/target/test-classes/testcontroller/ApiControllerTest.class b/target/test-classes/testcontroller/ApiControllerTest.class new file mode 100644 index 0000000000000000000000000000000000000000..9480a4feebfbea0e8441a94765f53da47094fff1 GIT binary patch literal 1174 zcmaJ=Yfl;buDB|qqV}n_Me)J*{m|OR5KK)#TOlO<(3oKvV9CDRoi*iWwI5p3 z5B&lCQBChIM6jk^vO6<(?mg$+2fu#*_zB<qb)SS<_g3*E7W=a?q~dZ3ri7)Fz!rwZ>xOTTkbT>B1QUj1la6%R@!DE9poFvm z>rBXcz=hr!lByo}15+Hgip(VNRMiPQogWxsn%Qg83!yL-DkiBqmfsRGwpA3MNnjlz zTz^N?nCW)d_Bpc!Yx9Cz@R(~f=`HAvrJaSTzHKs+*>m|`*LUn(KkdCr^`Mq(1-2e0 zuva^*luoOqlfzQ=v~qk@dsqG_O(=tK%AI2HvPv?jcLQzYRgd3L literal 0 HcmV?d00001 From 0d8b2e8f5612eb2b6968edffb9c7f6dbd499fcfb Mon Sep 17 00:00:00 2001 From: vle Date: Sat, 14 Mar 2020 13:58:51 -0400 Subject: [PATCH 2/8] Added sql stuff for testing --- pom.xml | 11 ++++ src/main/java/sql/SqlController.java | 60 ++++++++++++++++++ src/test/java/sql/SqlControllerTest.java | 20 ++++++ .../testcontroller/ApiControllerTest.class | Bin 1174 -> 1174 bytes 4 files changed, 91 insertions(+) create mode 100644 src/main/java/sql/SqlController.java create mode 100644 src/test/java/sql/SqlControllerTest.java diff --git a/pom.xml b/pom.xml index 58a2fb0..ecfc7a0 100644 --- a/pom.xml +++ b/pom.xml @@ -20,6 +20,17 @@ 4.12 test + + junit + junit + 4.12 + test + + + org.postgresql + postgresql + 42.2.11 + diff --git a/src/main/java/sql/SqlController.java b/src/main/java/sql/SqlController.java new file mode 100644 index 0000000..5c92b05 --- /dev/null +++ b/src/main/java/sql/SqlController.java @@ -0,0 +1,60 @@ +package sql; + +import java.sql.*; + +public class SqlController { + private static Connection connection = null; + + public static void connectSqlServer(){ + try{ + Class.forName("org.postgresql.Driver"); + connection = DriverManager + .getConnection("jdbc:postgresql://localhost:5432/stocks"); + connection.setAutoCommit(false); + } catch (Exception e) { + e.printStackTrace(); + System.err.println(e.getClass().getName() + ": " + e.getMessage()); + System.exit(0); + } + System.out.println("Opened database successfully"); + + } + + public static void insertStock(){ + try { + Statement insert = connection.createStatement(); + String sql = "INSERT INTO _2020_03 (TICKER, OPEN, HIGH, LOW, CLOSE, VOLUME) " + + "VALUES ('MSFT', 165.3100, 175.0000, 138.5800, 145.7000, 636200296);"; + insert.executeUpdate(sql); + insert.close(); + connection.commit(); + connection.close(); + } catch (SQLException e) { + System.err.println( e.getClass().getName()+": "+ e.getMessage() ); + System.exit(0); + } + System.out.println("Records created successfully"); + } + + public static void getStock(String stock, String month){ + try{ + Statement insert = connection.createStatement(); + String sql = "SELECT * FROM " + month + + " WHERE TICKER = '" + stock.toUpperCase() + "';"; + ResultSet rs = insert.executeQuery(sql); + while (rs.next()){ + Double open = rs.getDouble("open"); + Double high = rs.getDouble("high"); + Double low = rs.getDouble("low"); + Double close = rs.getDouble("close"); + Integer volume = rs.getInt("volume"); + System.out.println(new StringBuilder().append(open + " ").append(high + " ") + .append(low + " ").append(close + " ").append(volume)); + } + } catch (SQLException e) { + System.err.println( e.getClass().getName()+": "+ e.getMessage() ); + System.exit(0); + } + System.out.println("Records created successfully"); + } +} diff --git a/src/test/java/sql/SqlControllerTest.java b/src/test/java/sql/SqlControllerTest.java new file mode 100644 index 0000000..c310bc6 --- /dev/null +++ b/src/test/java/sql/SqlControllerTest.java @@ -0,0 +1,20 @@ +package sql; + +import org.junit.Test; + +import static org.junit.Assert.*; + +public class SqlControllerTest { + + @Test + public void connectionTest(){ + SqlController.connectSqlServer(); + } + + @Test + public void getStockTest(){ + SqlController.connectSqlServer(); + SqlController.getStock("msft", "_2020_03"); + } + +} \ No newline at end of file diff --git a/target/test-classes/testcontroller/ApiControllerTest.class b/target/test-classes/testcontroller/ApiControllerTest.class index 9480a4feebfbea0e8441a94765f53da47094fff1..3f05efd6d65cb50bedd0536609a93b6ab03ec023 100644 GIT binary patch delta 25 gcmbQnIgN9JFAJ|212cm-12=;NgAjw{ Date: Sun, 15 Mar 2020 08:04:53 -0400 Subject: [PATCH 3/8] update file structure, add enums, import console class --- src/main/java/account/Portfolio.java | 4 + src/main/java/account/User.java | 4 + src/main/java/stocks/Stock.java | 4 + src/main/java/stocks/StockEnum.java | 59 +++++++++++++ src/main/java/utilities/Console.java | 83 ++++++++++++++++++ src/main/java/utilities/Messages.java | 4 + src/test/java/account/PortfolioTest.java | 4 + src/test/java/account/UserTest.java | 4 + .../ApiControllerTest.java | 3 +- src/test/java/stocks/StockEnumTest.java | 4 + src/test/java/stocks/StockTest.java | 4 + target/classes/sql/SqlController.class | Bin 0 -> 3341 bytes .../test-classes/sql/SqlControllerTest.class | Bin 0 -> 665 bytes 13 files changed, 175 insertions(+), 2 deletions(-) create mode 100644 src/main/java/account/Portfolio.java create mode 100644 src/main/java/account/User.java create mode 100644 src/main/java/stocks/Stock.java create mode 100644 src/main/java/stocks/StockEnum.java create mode 100644 src/main/java/utilities/Console.java create mode 100644 src/main/java/utilities/Messages.java create mode 100644 src/test/java/account/PortfolioTest.java create mode 100644 src/test/java/account/UserTest.java rename src/test/java/{testcontroller => controller}/ApiControllerTest.java (92%) create mode 100644 src/test/java/stocks/StockEnumTest.java create mode 100644 src/test/java/stocks/StockTest.java create mode 100644 target/classes/sql/SqlController.class create mode 100644 target/test-classes/sql/SqlControllerTest.class diff --git a/src/main/java/account/Portfolio.java b/src/main/java/account/Portfolio.java new file mode 100644 index 0000000..c48ed1e --- /dev/null +++ b/src/main/java/account/Portfolio.java @@ -0,0 +1,4 @@ +package account; + +public class Portfolio { +} diff --git a/src/main/java/account/User.java b/src/main/java/account/User.java new file mode 100644 index 0000000..61c3ef3 --- /dev/null +++ b/src/main/java/account/User.java @@ -0,0 +1,4 @@ +package account; + +public class User { +} diff --git a/src/main/java/stocks/Stock.java b/src/main/java/stocks/Stock.java new file mode 100644 index 0000000..7affe18 --- /dev/null +++ b/src/main/java/stocks/Stock.java @@ -0,0 +1,4 @@ +package stocks; + +public class Stock { +} diff --git a/src/main/java/stocks/StockEnum.java b/src/main/java/stocks/StockEnum.java new file mode 100644 index 0000000..5bb5bf4 --- /dev/null +++ b/src/main/java/stocks/StockEnum.java @@ -0,0 +1,59 @@ +package stocks; + +import java.util.Date; + +public enum StockEnum { + + //STOCK INFO FOR 2008-12-31 + + MICROSOFT("MSFT", 19.87, 21.25, 18.47, 19.44, 1546943400), + APPLE("AAPL", 91.30, 103.60, 84.55, 85.35, 721923100), + VISA("V", 51.00, 57.67, 47.53, 52.45, 141021400), + JPMORGANCHASE("JPM", 30.67, 37.70, 24.61, 31.53, 1154247300), + JOHNSONJOHNSON("JNJ", 57.66, 60.25, 54.95, 59.83, 315194900), + COCACOLA("COKE", 42.65, 46.00, 38.51, 45.96, 425300), + CHEVRON("CVX", 76.50, 81.92, 68.22, 73.97, 392060500), + BRITISHPETROLEUM("BP", 45.96, 50.10, 41.54, 46.74, 149495200), + EXXON("XOM", 77.89, 83.64, 72.68, 79.83, 996412900); + + //AAPL,V,JNJ,COKE,CVX,BP,XOM,JPM,MSFT + private final String symbol; + private final Double open; + private final Double high; + private final Double low; + private final Double close; + private final Integer volume; + + StockEnum(String symbol, Double open, Double high, Double low, Double close, Integer volume) { + this.symbol = symbol; + this.open = open; + this.high = high; + this.low = low; + this.close = close; + this.volume = volume; + } + + public String getSymbol() { + return symbol; + } + + public Double getOpen() { + return open; + } + + public Double getHigh() { + return high; + } + + public Double getLow() { + return low; + } + + public Double getClose() { + return close; + } + + public Integer getVolume() { + return volume; + } +} diff --git a/src/main/java/utilities/Console.java b/src/main/java/utilities/Console.java new file mode 100644 index 0000000..ec423ec --- /dev/null +++ b/src/main/java/utilities/Console.java @@ -0,0 +1,83 @@ +package utilities; + +import java.io.InputStream; +import java.io.PrintStream; +import java.util.Scanner; + +public class Console { + + private final Scanner input; + private final PrintStream output; + + public Console(InputStream in, PrintStream out) { + this.input = new Scanner(in); + this.output = out; + } + + public void print(String val, Object... args) { + output.format(val, args); + } + + public void println(String val, Object... vals) { + print(val + "\n", vals); + } + + public void printlnS(String val, Object... vals) { + System.out.println(val); + } + + + public String getStringInput(String prompt, Object... args) { + println(prompt, args); + return input.nextLine(); + } + + public String getStringInputWithoutln(String prompt, Object... args) { + print(prompt, args); + return input.nextLine(); + } + + public Double getDoubleInput(String prompt, Object... args) { + String stringInput = getStringInput(prompt, args); + try { + Double doubleInput = Double.parseDouble(stringInput); + return doubleInput; + } catch (NumberFormatException nfe) { // TODO - Eliminate recursive nature + println("[ %s ] is an invalid user input!", stringInput); + println("Try inputting a numeric value!"); + return getDoubleInput(prompt, args); + } + } + + public Long getLongInput(String prompt, Object... args) { + String stringInput = getStringInput(prompt, args); + try { + Long longInput = Long.parseLong(stringInput); + return longInput; + } catch (NumberFormatException nfe) { // TODO - Eliminate recursive nature + println("[ %s ] is an invalid user input!", stringInput); + println("Try inputting an integer value!"); + return getLongInput(prompt, args); + } + } + + public Integer getIntegerInput(String prompt, Object... args) { + return getLongInput(prompt, args).intValue(); + } + + public Integer getIntegerInputWithoutln(String prompt, Object... args) { + while(true) { + print(prompt, args); + String stringInput = input.nextLine(); + try { + return Integer.parseInt(stringInput); + } catch (NumberFormatException nfe) { + println("Invalid Input! Try again."); + } + } + } + + public void pressEnterToCount(){ + getStringInputWithoutln("press enter to continue"); + } +} diff --git a/src/main/java/utilities/Messages.java b/src/main/java/utilities/Messages.java new file mode 100644 index 0000000..0bd1674 --- /dev/null +++ b/src/main/java/utilities/Messages.java @@ -0,0 +1,4 @@ +package utilities; + +public class Messages { +} diff --git a/src/test/java/account/PortfolioTest.java b/src/test/java/account/PortfolioTest.java new file mode 100644 index 0000000..c427adf --- /dev/null +++ b/src/test/java/account/PortfolioTest.java @@ -0,0 +1,4 @@ +package account; + +public class PortfolioTest { +} diff --git a/src/test/java/account/UserTest.java b/src/test/java/account/UserTest.java new file mode 100644 index 0000000..faf3395 --- /dev/null +++ b/src/test/java/account/UserTest.java @@ -0,0 +1,4 @@ +package account; + +public class UserTest { +} diff --git a/src/test/java/testcontroller/ApiControllerTest.java b/src/test/java/controller/ApiControllerTest.java similarity index 92% rename from src/test/java/testcontroller/ApiControllerTest.java rename to src/test/java/controller/ApiControllerTest.java index 57002be..e3d67c4 100644 --- a/src/test/java/testcontroller/ApiControllerTest.java +++ b/src/test/java/controller/ApiControllerTest.java @@ -1,6 +1,5 @@ -package testcontroller; +package controller; -import controller.ApiController; import org.junit.Test; import static org.junit.Assert.assertEquals; diff --git a/src/test/java/stocks/StockEnumTest.java b/src/test/java/stocks/StockEnumTest.java new file mode 100644 index 0000000..bd0adba --- /dev/null +++ b/src/test/java/stocks/StockEnumTest.java @@ -0,0 +1,4 @@ +package stocks; + +public class StockEnumTest { +} diff --git a/src/test/java/stocks/StockTest.java b/src/test/java/stocks/StockTest.java new file mode 100644 index 0000000..c4aa04c --- /dev/null +++ b/src/test/java/stocks/StockTest.java @@ -0,0 +1,4 @@ +package stocks; + +public class StockTest { +} diff --git a/target/classes/sql/SqlController.class b/target/classes/sql/SqlController.class new file mode 100644 index 0000000000000000000000000000000000000000..b7beeb983ee694db217005226974af1a20cd1146 GIT binary patch literal 3341 zcmaJ@`*Rc575-M1wQG5K$q;HF$wET>K$c`1+e9X`Ad6VBWPv2x32jQ&(qaqNTC-X? zcAGxZM@ZB6J1KpoFWNMHKw5)H+nN5FU-O4_rZb(%Ofqf1yOQ-7Of;jr_nf`=-0ytn zvG<+--u(xFVf@{XQOqk?@Z)Jbqu_!cAIB%UFoI{h@kv~i@thwD^e!wSFQec`H|E72 zLu|Mt#3cpGVogy9m;JZ`)6dl_VoOPZCG4y!xY`XHWidEHQxStBW6h5TQB?4}f^`KO zetZg_R`7yY_nB^d7N1ivEuNqE<3)Ty!BYxm6eJa-g!YSmdPZQ{lf_ceIVGW^e_&pMH)a(K3A>WTk}+FZ zSv2gNzGzYtNLqQ_oY(E5kn2jXvs^4o=t&B**{dckJGNz-hE2=6>&H`{HS9IRmLSnk z9f+xymcsG%ys;|qad~&KR5olU>sa|KgjJIy>}}%CI=W-57$t|RJ9wf1S~bXD>rqoyg&goG?{aZznP5!oc?q3)(<;+J z-JP1!{LuoQ^6tsfw=!<&U z(8`s3-YAzZRZMe3#cyy!!i$O7Y&?_G60^Cqc5x&!61f-|)%tUZ*i1YV)Y9kTvq5b- z@#J(+OQsisS}d8)#)H~?Iysk$4`}nJlXLN`*58-Pp3U_Iwc+ux(CBa^!r8=FD8e6S zqbEXRC*0ZbvCxF88y_7Xi9|*oA0L>M@mm$Y!y77+m{9S1HwrEX3Alt)!fmZ(E4P&sp1c~PWt*LRs0cu zlJRF1H*rhFTlkBNzpB{8Z54O$hK#BZ?h3x&X7Q2k*YP)6b%C{3D~q)mwe;d;HVyWG zrYdIYWoE5>$+Bm4k=jSMDW8Fsbayu}p&w`vQA@;>UeZ|x5_Yf@n|(;a!2Jyhw9Tb7 zT1&!qH7%A6=XAxfV%Ew^k?_6!7ex8)T4h^c)$92yIa|*YdyA{tjWRn53)rxUsot52 zR`^_P4}-MA^F-UIGtkq&otH8f)Ogw3_P)`QeEKR=xgcTa{%*E3v3kYuXg@8dnDQiz zI2@~Haf^a>q>PX2t0}tucISxpZmie1NeFH_tcr+pEg2i#l~LRB!cCNxt{Z5Cvt{)T zW8KJC9Aj>kg-V#)o}FM{%-18+8UVLxv-vyL94WG6EOQBJ-QxL*VQ)z2-_Ds@vI&5# z4YUccp{3I$W1W8T19w3}7a6Vf@B1K~YRizVrSh6?R*du|v1zI`2O8f39}Tn1v%H#h zQ}6nM(M0Q}=GUMtA!?O3*}Af=g)$-9$lY2$kHfsKjPg3ej1di+vrf+WMc{aXQkYLk zXa{dYy2*(Lk8||Zl!$V!*5{KrNvR7@G&aA94)3)gN4B=4oGm{9IQVNNpvPO^I?uWbdMtsHyjzn5U+AIM@9%9=p~T{ zI6H*Bd~*N~;RszA#3Nj(5%OW=sCgQX;yE03ozV!ni~7?z!~H6E#4tsgLfmzVu8Yu| z#go)9uAV*ck}OE!EeBKe2n00ZJjQ?EFb4+Uh?qaZfl-(Z4ps4}2T^aYw~C_@Uc=p9 zZ{V>i`aJw_^hY}>4KySlC6ZNtCsQJWbxENVtYS#)3q_d%`|1GdkKWErgaeV(DcZT6gHNzEb&pV1A7Owa3ej{8N1_&4+xq}SQG147m77Z~B zA*5M8&mzLB^)NPAXxCV3@3PGP&F6nuZ11s_-e<9Wz)$}XoRA(vR0?6z4d*KJIL)id zG&8o7R$j$ZocU<$70hrZ)8Y%fIV70v*HA(Vv&7Jaf4K?Z;py+V3D7|_|D>gJ4EP82 rRA6RHVOGHuk&9WzO%w&$M*ctO))&iOV!ev8ms-kR6n~C759a<4Eb=Ue literal 0 HcmV?d00001 diff --git a/target/test-classes/sql/SqlControllerTest.class b/target/test-classes/sql/SqlControllerTest.class new file mode 100644 index 0000000000000000000000000000000000000000..a389b247a7ecccdd524f06e8264ac5760227727d GIT binary patch literal 665 zcmZvZ%}yIJ6orqIkVz)fkPHP%e_>VVq7%|31qmT_H3F$qWs4?LlRBN)V#eXUSbwCU?EI<6Yy9cn39UmUneQaQ}fmaP|x$w1zHy+*!)W0gN?2$lq zcW)q2J25|{z-p|tJe^L4viOk>b5_FGWNAJ~3+3{8v1Wg%QeZPKFY_q5%ukHAg~@ZO zWN8ls+L_T>W>y*PDgs;Ir`oEC9H>%}bF8(oskYz&Go@Z+Qgdd_oLcR z%(TelH{~2{EDiiTPOs7c4KzKx3-BIIK4?;2aBkzg-|P3zdtU;4z_!5pvySP(A)-9h zqv&inrgMSrQY+i$@1li77FV+1gnw2AKJLZ~OkxYAM+eK5y#aPm=ij(h1qo Date: Sun, 15 Mar 2020 08:25:17 -0400 Subject: [PATCH 4/8] create method to get all info from enum --- src/main/java/stocks/StockEnum.java | 19 +++++++++++++++++- src/test/java/stocks/StockEnumTest.java | 18 +++++++++++++++++ target/classes/account/Portfolio.class | Bin 0 -> 268 bytes target/classes/account/User.class | Bin 0 -> 253 bytes target/classes/stocks/Stock.class | Bin 0 -> 254 bytes target/classes/stocks/StockEnum.class | Bin 0 -> 3747 bytes target/classes/utilities/Console.class | Bin 0 -> 3332 bytes target/classes/utilities/Messages.class | Bin 0 -> 269 bytes .../test-classes/account/PortfolioTest.class | Bin 0 -> 280 bytes target/test-classes/account/UserTest.class | Bin 0 -> 265 bytes .../controller/ApiControllerTest.class | Bin 0 -> 1166 bytes .../test-classes/stocks/StockEnumTest.class | Bin 0 -> 1121 bytes target/test-classes/stocks/StockTest.class | Bin 0 -> 266 bytes .../testcontroller/ApiControllerTest.class | Bin 1174 -> 0 bytes 14 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 target/classes/account/Portfolio.class create mode 100644 target/classes/account/User.class create mode 100644 target/classes/stocks/Stock.class create mode 100644 target/classes/stocks/StockEnum.class create mode 100644 target/classes/utilities/Console.class create mode 100644 target/classes/utilities/Messages.class create mode 100644 target/test-classes/account/PortfolioTest.class create mode 100644 target/test-classes/account/UserTest.class create mode 100644 target/test-classes/controller/ApiControllerTest.class create mode 100644 target/test-classes/stocks/StockEnumTest.class create mode 100644 target/test-classes/stocks/StockTest.class delete mode 100644 target/test-classes/testcontroller/ApiControllerTest.class diff --git a/src/main/java/stocks/StockEnum.java b/src/main/java/stocks/StockEnum.java index 5bb5bf4..8e2c2e0 100644 --- a/src/main/java/stocks/StockEnum.java +++ b/src/main/java/stocks/StockEnum.java @@ -4,7 +4,7 @@ public enum StockEnum { - //STOCK INFO FOR 2008-12-31 + //------------------------------------STOCK INFO FOR 2008-12-31--------------------------------------- MICROSOFT("MSFT", 19.87, 21.25, 18.47, 19.44, 1546943400), APPLE("AAPL", 91.30, 103.60, 84.55, 85.35, 721923100), @@ -56,4 +56,21 @@ public Double getClose() { public Integer getVolume() { return volume; } + + public String getAllInfo() { + StringBuilder builder = new StringBuilder(); + String space = " "; + builder.append(getSymbol()) + .append(space) + .append(getOpen()) + .append(space) + .append(getHigh()) + .append(space) + .append(getLow()) + .append(space) + .append(getClose()) + .append(space) + .append(getVolume()); + return builder.toString(); + } } diff --git a/src/test/java/stocks/StockEnumTest.java b/src/test/java/stocks/StockEnumTest.java index bd0adba..9d5a1ce 100644 --- a/src/test/java/stocks/StockEnumTest.java +++ b/src/test/java/stocks/StockEnumTest.java @@ -1,4 +1,22 @@ package stocks; +import org.junit.Test; + +import java.util.Arrays; +import java.util.logging.Level; +import java.util.logging.Logger; + public class StockEnumTest { + + Logger logger = Logger.getLogger(StockEnumTest.class.getName()); + + @Test + public void classTest(){ + for (StockEnum stock : StockEnum.values()) { + logger.log(Level.INFO,stock.toString() + " " + stock.getAllInfo()); + + //For concise view + //System.out.println(stock.toString() + " " + stock.getAllInfo()); + } + } } diff --git a/target/classes/account/Portfolio.class b/target/classes/account/Portfolio.class new file mode 100644 index 0000000000000000000000000000000000000000..359034ffd87ccabc09e1ae517c4868ee70e32f1f GIT binary patch literal 268 zcmZXO&1wQc5QMAuS2r7fpTL{R!Ns$ZOCYC31;zX9IO@o{1M95s9HzvxworCv=}ULZ|MN zTok)xo*k657{K9=>mgnSSp#;-%>(}XH|WBFgOD}g7z{L62gM>^#?nGJds)aVmhJmA#xQYNa976DaO$f~@N=0^vR>?`p s5*l*&Z8)E`__+M6ng&*KYiL=4N8Mr(5 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 CayOa) literal 0 HcmV?d00001 diff --git a/target/test-classes/account/PortfolioTest.class b/target/test-classes/account/PortfolioTest.class new file mode 100644 index 0000000000000000000000000000000000000000..b78cf19023ca7cc70c8363ef26277e9de6b122df GIT binary patch literal 280 zcmZvWPiw+J5XIl*uT9e`f_U!D_F(XA>80Q)sGxY?tZTa=W+86;UY-g)_yPP-#YyNz za0VXxelu^G%ir%Azy!SrE}lX>hv*W5cU@}xL2yT}8-n*~wu;bAb*bj{K2z0NWCfFc zYNRMOqSB53ho1e`2f{EFQkuH7$R_jYXl3e3s+n%TxS5V~aTGB;_=LgT zJfYX@B!wuyl0}v)Y4HMwuWyRDIm{ZcOIi>3Z$F?D0|y~%z!)6pu*U7%#{(jEghy5f F@fEwPJUIXW literal 0 HcmV?d00001 diff --git a/target/test-classes/account/UserTest.class b/target/test-classes/account/UserTest.class new file mode 100644 index 0000000000000000000000000000000000000000..47dc3f8ab615cf4991a90fa611e0d53143b685e1 GIT binary patch literal 265 zcmZ9GyKcfT7=_Otaw#Dph&SlgGGKM4VyVOw(SghExK=Sr6De`}UQ9>~eSkg`;&)V* z+R~BFcl1gAyexF(6E$$yKHn?)(B xPw`$HwX%4G$KQ2___D_tauakxk2hOB_2N)veMi_B=NNyDHHO&A3 literal 0 HcmV?d00001 diff --git a/target/test-classes/controller/ApiControllerTest.class b/target/test-classes/controller/ApiControllerTest.class new file mode 100644 index 0000000000000000000000000000000000000000..24279a5d3b09f500f96a5a8fe6e7af8cbc962c86 GIT binary patch literal 1166 zcmaJ=Yfsux7=8{QMW~86Q8(vw7Zfja_lwRghG1p_x(OlKhs7Mq0ZK|++fy@t*7jjD z`>-FdAGPdlA%ZhollGkRp7(j5=e_jT?;k$_Ji>MoDJ&&$Cy8aOBycy0d$^y#gW#MS z$12v6$YWi>hJsCo_-n&5Y>uw=L<~rYT%)&oPRZr<(BO4uK`DMOSbs==y^%+;d{~&U+2p3_^GL8P`m1 zwY92r4XaI%IM=1m={6xgJ3^PD$*^$jThi!>y5SilV$ZT{$)#aiq#<3l-L}^CDH(0R zIvud?3#oU8q^c`C-;_tKA~z{`vTFOTF7}Ne#q2fdg+Q1J6%$mMp4XBJwp0|LG4PI* zj<>C8+;lp8>x^5Hw?)AzxZE+C^cHlxr=13=zHM@ndG3hau4h}he%ia0>V7TP@-00` zV7GQqDVVI`8w|2cV`RgX)8P< z#XR{3q84anxOpkz6M03+Hj{~m5-y-rz9O;t4dX)*nUE+5lckVzl*fE1V7U*y6p$VW RNRfnFp@6Hji$oN`?LSzM4Iuyk literal 0 HcmV?d00001 diff --git a/target/test-classes/stocks/StockEnumTest.class b/target/test-classes/stocks/StockEnumTest.class new file mode 100644 index 0000000000000000000000000000000000000000..93c4d928b6547ee37d52ac0c2904cce38461019f GIT binary patch literal 1121 zcmZ`&TTc^F5dKatY`d(smb-$2inc|lponsZ3JJ*u5+O~DPfJFpW&HZ3{btr~X4@GPmfjEUfbnN%`%)1|Mm`egsxuvj-h@tI)y<0KTZCV895*lm%XNsJ)m^Vv zIt*E6sfDZVx}jG!H?63$OIfF6uNr#LE6{s2lMGkzOv7``DtMt`4lgy_LQcUe4f9w~ zu&7}Pq+=lB%r?l?Zs3u!_0X~pOi#lKW;Lv0O+bulSeIHEuUTh1VrT!*tg`1!+fHtf)3QGNNs zyG~PSa&Q^XJT`5v$=3Gf4#(DMv!n+TrUJJ~91|HwN2YTiF!}$gFR;*JniwiOUbF2j z=e^4X(j z{gf(QfHV^5#sF_x3v3WW)cC##7K^|>(I-h;`4nCH#Mx4Od1Uwt<|amF<`cyqNPdU% z8>zP^NDn0%P#fsZX%teq!Lxyz4P-vY#n->*?esZ<0vXnv#Ujsjb|K5?XVM-Na0kPY VM;Xn6M)c|aE~&E(SMo=4Ql`Z literal 0 HcmV?d00001 diff --git a/target/test-classes/stocks/StockTest.class b/target/test-classes/stocks/StockTest.class new file mode 100644 index 0000000000000000000000000000000000000000..2b9a33cedc507efeee50a4e8fc05ce63b628cd78 GIT binary patch literal 266 zcmZ9G%?`mp6ot>N{!m5Z4eYScSQ8tGm9QZ8)0!|;o3z7wSxGEBfQJ%yL@eA%&Ykm} zoa8=V_XmI>LLU`0JTyJD2<}*AN>2!tZf`@dr}OUNgjxd#oDQ&_~3hUFCQ;l73k@|+vT z3RY9dV@<`niVX$H*Op_6Hwxmb`MQEc(QR@CQ)SEH2Vt+l{Tgf7WXY6Wli79VTky6fBno4}|GD!gp<(`^K(k6)#RTy4xlI=~MJM6P&I;gxo(P_Ta47aBT_SWv9%r znbS6^!nd3@g(R6NLPob5|Lk#7@TP)=qtFpnkJqihA|bnu;|eA$*C8G0vg@~vZb%6k z1J-HDy2pjt8ItNg4?;iFhmJ|APA_N)6`MK=Fch$k z5MHol7|ixMZ1a>kg0*?UEBMT_n)DV-w`ZKlRNpok$vpG;PB(C!TtDrdN_DT6YlV&} z6WFQkS4zj#($RjYdR#d?sJ$zHRPj)!rao2>Yj`@Iz)QM2z(TVgL`h#ZD^NY@WIGf$DrGQp z`8t*$|3UJJgXCk9zSrnv(5lcnw)P#$7uv)yMc-s()R3mV-gm$>GISyZ6da3!Em{*~ zo6f|_>*t79GKquDjdP3*fwCBjAmS9HQP2dzr=uUR)(;*4$LaPuW{E( Date: Sun, 15 Mar 2020 09:38:46 -0400 Subject: [PATCH 5/8] import library to round doubles, create tests for it --- .gitignore | 3 +- pom.xml | 17 +++++++ src/main/java/account/Portfolio.java | 43 ++++++++++++++++++ src/main/java/stocks/StockEnum.java | 17 ++++--- src/test/java/account/PortfolioTest.java | 35 ++++++++++++++ src/test/java/stocks/StockEnumTest.java | 1 - target/classes/Hello.class | Bin 514 -> 0 bytes target/classes/account/Portfolio.class | Bin 268 -> 0 bytes target/classes/account/User.class | Bin 253 -> 0 bytes target/classes/controller/ApiController.class | Bin 1584 -> 0 bytes target/classes/sql/SqlController.class | Bin 3341 -> 0 bytes target/classes/stocks/Stock.class | Bin 254 -> 0 bytes target/classes/stocks/StockEnum.class | Bin 3747 -> 0 bytes target/classes/utilities/Console.class | Bin 3332 -> 0 bytes target/classes/utilities/Messages.class | Bin 269 -> 0 bytes target/test-classes/Test.class | Bin 237 -> 0 bytes .../test-classes/account/PortfolioTest.class | Bin 280 -> 0 bytes target/test-classes/account/UserTest.class | Bin 265 -> 0 bytes .../controller/ApiControllerTest.class | Bin 1166 -> 0 bytes .../test-classes/sql/SqlControllerTest.class | Bin 665 -> 0 bytes .../test-classes/stocks/StockEnumTest.class | Bin 1121 -> 0 bytes target/test-classes/stocks/StockTest.class | Bin 266 -> 0 bytes 22 files changed, 108 insertions(+), 8 deletions(-) delete mode 100644 target/classes/Hello.class delete mode 100644 target/classes/account/Portfolio.class delete mode 100644 target/classes/account/User.class delete mode 100644 target/classes/controller/ApiController.class delete mode 100644 target/classes/sql/SqlController.class delete mode 100644 target/classes/stocks/Stock.class delete mode 100644 target/classes/stocks/StockEnum.class delete mode 100644 target/classes/utilities/Console.class delete mode 100644 target/classes/utilities/Messages.class delete mode 100644 target/test-classes/Test.class delete mode 100644 target/test-classes/account/PortfolioTest.class delete mode 100644 target/test-classes/account/UserTest.class delete mode 100644 target/test-classes/controller/ApiControllerTest.class delete mode 100644 target/test-classes/sql/SqlControllerTest.class delete mode 100644 target/test-classes/stocks/StockEnumTest.class delete mode 100644 target/test-classes/stocks/StockTest.class diff --git a/.gitignore b/.gitignore index 07bdb9e..409a3c2 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ */target/** .classpath .project -.settings/idea \ No newline at end of file +.settings/idea +target/ \ No newline at end of file diff --git a/pom.xml b/pom.xml index ecfc7a0..ac4e77e 100644 --- a/pom.xml +++ b/pom.xml @@ -7,6 +7,18 @@ org.example untitled1 1.0-SNAPSHOT + + + + org.apache.maven.plugins + maven-compiler-plugin + + 8 + 8 + + + + @@ -31,6 +43,11 @@ postgresql 42.2.11 + + org.decimal4j + decimal4j + 1.0.3 + diff --git a/src/main/java/account/Portfolio.java b/src/main/java/account/Portfolio.java index c48ed1e..da7d8df 100644 --- a/src/main/java/account/Portfolio.java +++ b/src/main/java/account/Portfolio.java @@ -1,4 +1,47 @@ package account; +import org.decimal4j.util.DoubleRounder; +import stocks.StockEnum; + +import java.util.HashMap; +import java.util.Map; + public class Portfolio { + private Map portfolio; + private Double buyingPower; + private Double currentPortfolioValue; + + public Portfolio() { + this.portfolio = new HashMap(); + this.buyingPower = 2500.00; + this.currentPortfolioValue = 0.00; + } + + public boolean addStockToBasePortfolio(StockEnum stock, Integer numberOfShares){ + double costOfShares = stock.getOpen() * numberOfShares; + if (costOfShares < buyingPower){ + if(portfolio.containsKey(stock)){ + portfolio.replace(stock, portfolio.get(stock),portfolio.get(stock) + numberOfShares); + } else { + portfolio.put(stock,numberOfShares); + } + currentPortfolioValue = currentPortfolioValue + DoubleRounder.round((costOfShares),2); + buyingPower = DoubleRounder.round((buyingPower - costOfShares),2); + return true; + } else { + return false; + } + } + + public double getBuyingPower() { + return buyingPower; + } + + public double getCurrentPortfolioValue() { + return currentPortfolioValue; + } + + + + } diff --git a/src/main/java/stocks/StockEnum.java b/src/main/java/stocks/StockEnum.java index 8e2c2e0..6a45724 100644 --- a/src/main/java/stocks/StockEnum.java +++ b/src/main/java/stocks/StockEnum.java @@ -17,12 +17,12 @@ public enum StockEnum { EXXON("XOM", 77.89, 83.64, 72.68, 79.83, 996412900); //AAPL,V,JNJ,COKE,CVX,BP,XOM,JPM,MSFT - private final String symbol; - private final Double open; - private final Double high; - private final Double low; - private final Double close; - private final Integer volume; + private String symbol; + private Double open; + private Double high; + private Double low; + private Double close; + private Integer volume; StockEnum(String symbol, Double open, Double high, Double low, Double close, Integer volume) { this.symbol = symbol; @@ -57,6 +57,10 @@ public Integer getVolume() { return volume; } + public void setNewPrice(Double newPrice){ + open = newPrice; + } + public String getAllInfo() { StringBuilder builder = new StringBuilder(); String space = " "; @@ -73,4 +77,5 @@ public String getAllInfo() { .append(getVolume()); return builder.toString(); } + } diff --git a/src/test/java/account/PortfolioTest.java b/src/test/java/account/PortfolioTest.java index c427adf..9e240c6 100644 --- a/src/test/java/account/PortfolioTest.java +++ b/src/test/java/account/PortfolioTest.java @@ -1,4 +1,39 @@ package account; +import org.junit.Before; +import org.junit.Test; +import static org.junit.Assert.*; +import stocks.StockEnum; + public class PortfolioTest { + Portfolio portfolio; + + @Before + public void setUP(){ + portfolio = new Portfolio(); + } + + @Test + public void addSingleStockTest(){ + assertTrue(portfolio.addStockToBasePortfolio(StockEnum.APPLE,4)); + assertEquals(365.20, portfolio.getCurrentPortfolioValue(), 0.00); + assertEquals(2134.80, portfolio.getBuyingPower(), 0.00); + } + + @Test + public void addStockFailTest(){ + assertFalse(portfolio.addStockToBasePortfolio(StockEnum.APPLE,900)); + } + + @Test + public void addMultipleStocks(){ + portfolio.addStockToBasePortfolio(StockEnum.MICROSOFT,5); + portfolio.addStockToBasePortfolio(StockEnum.APPLE,5); + portfolio.addStockToBasePortfolio(StockEnum.JPMORGANCHASE,5); + Double expected = 709.20; + Double actual = portfolio.getCurrentPortfolioValue(); + assertEquals(expected,actual); + assertEquals(1790.80, portfolio.getBuyingPower(), 0.0); + } + } diff --git a/src/test/java/stocks/StockEnumTest.java b/src/test/java/stocks/StockEnumTest.java index 9d5a1ce..53cdf87 100644 --- a/src/test/java/stocks/StockEnumTest.java +++ b/src/test/java/stocks/StockEnumTest.java @@ -14,7 +14,6 @@ public class StockEnumTest { public void classTest(){ for (StockEnum stock : StockEnum.values()) { logger.log(Level.INFO,stock.toString() + " " + stock.getAllInfo()); - //For concise view //System.out.println(stock.toString() + " " + stock.getAllInfo()); } diff --git a/target/classes/Hello.class b/target/classes/Hello.class deleted file mode 100644 index 692bd87ea9aee57bc5f2edba30ae16e8188e058d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 514 zcmZuu%T5A85Uk;`%dV>+2)-Y9LJw{{dBAuvF&;K*g5lz6zzGi7hglXAK1&apc<=-K zC}Ztnf+WnLd%C*2s(a@9=kp7|DGqHIShG+^ql9%E8`w0lWnx>vIM<<0E(G$eqpm>V zGI~@3Wlx9dW*qcXd@p-Gk*XKc1ADb0UK%y(gJoT8pnNgrBgjSqdZAj9GEDX*m1CnJ*qvbQKG|%iG2qL zXbKdwT7k+;^R_os{bUa6Oh$1PJz!LAyw19q@k%bkMiKNYE85yxRsWegR?mX8QmD diff --git a/target/classes/account/Portfolio.class b/target/classes/account/Portfolio.class deleted file mode 100644 index 359034ffd87ccabc09e1ae517c4868ee70e32f1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 268 zcmZXO&1wQc5QMAuS2r7fpTL{R!Ns$ZOCYC31;zX9IO@o{1M95s9HzvxworCv=}ULZ|MN zTok)xo*k657{K9=>mgnSSp#;-%>(}XH|WBFgOD}g7z{L62gM>^#?nGJds)aVmhJmA#xQYNa976DaO$f~@N=0^vR>?`p s5 zDvZ#`B`IuLMP5ZAg)Yn}D5{uMQ3|cO6z-s`U|zw3g1ZcfdE2oiZQ|qUXAB+7ZdEY! zn6@J}8v7ODZ}Uo>Ji6&xy#9>)c4!|vJ7moc7zRztb)@gs>%uqgd-n2otIW`C`GQM9 z?tdD>KVTReH~08!Zq&K6Yivp1c6Q6@b{9bl4)!ZMeNz;m5|rW-O}xrC*e~BjqO$Qg@$D;DR`h^1rJFR|7A{kWNL088HRs`LBk`g(j+a!J`!?M5V$bA`-gh3 z1PNn$&MK91Q>9Wdw;$9BIWavqn=9pZ3NykgdQkOCA(#CN0B5AfnKdI~qi!dd)=Lx6EkohH%p6V=umc=IMKo`bqwhw1ZF+k7chOXa}{#u1vLrRkY# zF>v7_-A)>0$*s~`ZRH{&x{RCnjXq@IFAf%Jo}T?=8MHE5FHO7ydrO-buF^BnbS5xB zdo2pUAcn~5#4tw46DC(FI!5b_kBGf^hqyVZcN|iwLnLU?6?#0MJcRm&VxqczxYVqn zB848R+)tm#A=-s~`l4F6hU;XhgyROmX4G-?d&mC?e%LWT@gALeQcoR0i{mr8^lrW9 zWPgOq4Cdq!t}r~0me0^b5b@@4gESt950x0{B`$`k^(a9})9ERYJZ?3CjN%Gz;|~Hd SMp+>lk>^j^F^rQhhV(a$5|e`f diff --git a/target/classes/sql/SqlController.class b/target/classes/sql/SqlController.class deleted file mode 100644 index b7beeb983ee694db217005226974af1a20cd1146..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3341 zcmaJ@`*Rc575-M1wQG5K$q;HF$wET>K$c`1+e9X`Ad6VBWPv2x32jQ&(qaqNTC-X? zcAGxZM@ZB6J1KpoFWNMHKw5)H+nN5FU-O4_rZb(%Ofqf1yOQ-7Of;jr_nf`=-0ytn zvG<+--u(xFVf@{XQOqk?@Z)Jbqu_!cAIB%UFoI{h@kv~i@thwD^e!wSFQec`H|E72 zLu|Mt#3cpGVogy9m;JZ`)6dl_VoOPZCG4y!xY`XHWidEHQxStBW6h5TQB?4}f^`KO zetZg_R`7yY_nB^d7N1ivEuNqE<3)Ty!BYxm6eJa-g!YSmdPZQ{lf_ceIVGW^e_&pMH)a(K3A>WTk}+FZ zSv2gNzGzYtNLqQ_oY(E5kn2jXvs^4o=t&B**{dckJGNz-hE2=6>&H`{HS9IRmLSnk z9f+xymcsG%ys;|qad~&KR5olU>sa|KgjJIy>}}%CI=W-57$t|RJ9wf1S~bXD>rqoyg&goG?{aZznP5!oc?q3)(<;+J z-JP1!{LuoQ^6tsfw=!<&U z(8`s3-YAzZRZMe3#cyy!!i$O7Y&?_G60^Cqc5x&!61f-|)%tUZ*i1YV)Y9kTvq5b- z@#J(+OQsisS}d8)#)H~?Iysk$4`}nJlXLN`*58-Pp3U_Iwc+ux(CBa^!r8=FD8e6S zqbEXRC*0ZbvCxF88y_7Xi9|*oA0L>M@mm$Y!y77+m{9S1HwrEX3Alt)!fmZ(E4P&sp1c~PWt*LRs0cu zlJRF1H*rhFTlkBNzpB{8Z54O$hK#BZ?h3x&X7Q2k*YP)6b%C{3D~q)mwe;d;HVyWG zrYdIYWoE5>$+Bm4k=jSMDW8Fsbayu}p&w`vQA@;>UeZ|x5_Yf@n|(;a!2Jyhw9Tb7 zT1&!qH7%A6=XAxfV%Ew^k?_6!7ex8)T4h^c)$92yIa|*YdyA{tjWRn53)rxUsot52 zR`^_P4}-MA^F-UIGtkq&otH8f)Ogw3_P)`QeEKR=xgcTa{%*E3v3kYuXg@8dnDQiz zI2@~Haf^a>q>PX2t0}tucISxpZmie1NeFH_tcr+pEg2i#l~LRB!cCNxt{Z5Cvt{)T zW8KJC9Aj>kg-V#)o}FM{%-18+8UVLxv-vyL94WG6EOQBJ-QxL*VQ)z2-_Ds@vI&5# z4YUccp{3I$W1W8T19w3}7a6Vf@B1K~YRizVrSh6?R*du|v1zI`2O8f39}Tn1v%H#h zQ}6nM(M0Q}=GUMtA!?O3*}Af=g)$-9$lY2$kHfsKjPg3ej1di+vrf+WMc{aXQkYLk zXa{dYy2*(Lk8||Zl!$V!*5{KrNvR7@G&aA94)3)gN4B=4oGm{9IQVNNpvPO^I?uWbdMtsHyjzn5U+AIM@9%9=p~T{ zI6H*Bd~*N~;RszA#3Nj(5%OW=sCgQX;yE03ozV!ni~7?z!~H6E#4tsgLfmzVu8Yu| z#go)9uAV*ck}OE!EeBKe2n00ZJjQ?EFb4+Uh?qaZfl-(Z4ps4}2T^aYw~C_@Uc=p9 zZ{V>i`aJw_^hY}>4KySlC6ZNtCsQJWbxENVtYS#)3q_d%`|1GdkKWErgaeV(DcZT6gHNzEb&pV1A7Owa3ej{8N1_&4+xq}SQG147m77Z~B zA*5M8&mzLB^)NPAXxCV3@3PGP&F6nuZ11s_-e<9Wz)$}XoRA(vR0?6z4d*KJIL)id zG&8o7R$j$ZocU<$70hrZ)8Y%fIV70v*HA(Vv&7Jaf4K?Z;py+V3D7|_|D>gJ4EP82 rRA6RHVOGHuk&9WzO%w&$M*ctO))&iOV!ev8ms-kR6n~C759a<4Eb=Ue diff --git a/target/classes/stocks/Stock.class b/target/classes/stocks/Stock.class deleted file mode 100644 index dc0eb21bcc67d3b1cf76775e6406361add7fef64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 254 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 CayOa) diff --git a/target/test-classes/Test.class b/target/test-classes/Test.class deleted file mode 100644 index 5ebff1dc668a0774b05fa49558843fae02b9442f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 237 zcmXYrxeCHi5Jm4~H8C#u2X<;QR4#YTEtcg`#2J%OR3suhiBf6* zhgN-672k-CvZ|K^|4=k#BDYF!cpA=AaTftB*nC?9!ce0y6Zs|F$Ei$ejA8IgI*5~J iSsiv^>j8WA1U(oSa9JJ3y6&(BZEeGY&yLV-JHZd^St^?V diff --git a/target/test-classes/account/PortfolioTest.class b/target/test-classes/account/PortfolioTest.class deleted file mode 100644 index b78cf19023ca7cc70c8363ef26277e9de6b122df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 280 zcmZvWPiw+J5XIl*uT9e`f_U!D_F(XA>80Q)sGxY?tZTa=W+86;UY-g)_yPP-#YyNz za0VXxelu^G%ir%Azy!SrE}lX>hv*W5cU@}xL2yT}8-n*~wu;bAb*bj{K2z0NWCfFc zYNRMOqSB53ho1e`2f{EFQkuH7$R_jYXl3e3s+n%TxS5V~aTGB;_=LgT zJfYX@B!wuyl0}v)Y4HMwuWyRDIm{ZcOIi>3Z$F?D0|y~%z!)6pu*U7%#{(jEghy5f F@fEwPJUIXW diff --git a/target/test-classes/account/UserTest.class b/target/test-classes/account/UserTest.class deleted file mode 100644 index 47dc3f8ab615cf4991a90fa611e0d53143b685e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 265 zcmZ9GyKcfT7=_Otaw#Dph&SlgGGKM4VyVOw(SghExK=Sr6De`}UQ9>~eSkg`;&)V* z+R~BFcl1gAyexF(6E$$yKHn?)(B xPw`$HwX%4G$KQ2___D_tauakxk2hOB_2N)veMi_B=NNyDHHO&A3 diff --git a/target/test-classes/controller/ApiControllerTest.class b/target/test-classes/controller/ApiControllerTest.class deleted file mode 100644 index 24279a5d3b09f500f96a5a8fe6e7af8cbc962c86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1166 zcmaJ=Yfsux7=8{QMW~86Q8(vw7Zfja_lwRghG1p_x(OlKhs7Mq0ZK|++fy@t*7jjD z`>-FdAGPdlA%ZhollGkRp7(j5=e_jT?;k$_Ji>MoDJ&&$Cy8aOBycy0d$^y#gW#MS z$12v6$YWi>hJsCo_-n&5Y>uw=L<~rYT%)&oPRZr<(BO4uK`DMOSbs==y^%+;d{~&U+2p3_^GL8P`m1 zwY92r4XaI%IM=1m={6xgJ3^PD$*^$jThi!>y5SilV$ZT{$)#aiq#<3l-L}^CDH(0R zIvud?3#oU8q^c`C-;_tKA~z{`vTFOTF7}Ne#q2fdg+Q1J6%$mMp4XBJwp0|LG4PI* zj<>C8+;lp8>x^5Hw?)AzxZE+C^cHlxr=13=zHM@ndG3hau4h}he%ia0>V7TP@-00` zV7GQqDVVI`8w|2cV`RgX)8P< z#XR{3q84anxOpkz6M03+Hj{~m5-y-rz9O;t4dX)*nUE+5lckVzl*fE1V7U*y6p$VW RNRfnFp@6Hji$oN`?LSzM4Iuyk diff --git a/target/test-classes/sql/SqlControllerTest.class b/target/test-classes/sql/SqlControllerTest.class deleted file mode 100644 index a389b247a7ecccdd524f06e8264ac5760227727d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 665 zcmZvZ%}yIJ6orqIkVz)fkPHP%e_>VVq7%|31qmT_H3F$qWs4?LlRBN)V#eXUSbwCU?EI<6Yy9cn39UmUneQaQ}fmaP|x$w1zHy+*!)W0gN?2$lq zcW)q2J25|{z-p|tJe^L4viOk>b5_FGWNAJ~3+3{8v1Wg%QeZPKFY_q5%ukHAg~@ZO zWN8ls+L_T>W>y*PDgs;Ir`oEC9H>%}bF8(oskYz&Go@Z+Qgdd_oLcR z%(TelH{~2{EDiiTPOs7c4KzKx3-BIIK4?;2aBkzg-|P3zdtU;4z_!5pvySP(A)-9h zqv&inrgMSrQY+i$@1li77FV+1gnw2AKJLZ~OkxYAM+eK5y#aPm=ij(h1qoFpW&HZ3{btr~X4@GPmfjEUfbnN%`%)1|Mm`egsxuvj-h@tI)y<0KTZCV895*lm%XNsJ)m^Vv zIt*E6sfDZVx}jG!H?63$OIfF6uNr#LE6{s2lMGkzOv7``DtMt`4lgy_LQcUe4f9w~ zu&7}Pq+=lB%r?l?Zs3u!_0X~pOi#lKW;Lv0O+bulSeIHEuUTh1VrT!*tg`1!+fHtf)3QGNNs zyG~PSa&Q^XJT`5v$=3Gf4#(DMv!n+TrUJJ~91|HwN2YTiF!}$gFR;*JniwiOUbF2j z=e^4X(j z{gf(QfHV^5#sF_x3v3WW)cC##7K^|>(I-h;`4nCH#Mx4Od1Uwt<|amF<`cyqNPdU% z8>zP^NDn0%P#fsZX%teq!Lxyz4P-vY#n->*?esZ<0vXnv#Ujsjb|K5?XVM-Na0kPY VM;Xn6M)c|aE~&E(SMo=4Ql`Z diff --git a/target/test-classes/stocks/StockTest.class b/target/test-classes/stocks/StockTest.class deleted file mode 100644 index 2b9a33cedc507efeee50a4e8fc05ce63b628cd78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 266 zcmZ9G%?`mp6ot>N{!m5Z4eYScSQ8tGm9QZ8)0!|;o3z7wSxGEBfQJ%yL@eA%&Ykm} zoa8=V_XmI>LLU`0JTyJD2<}*AN>2!tZf`@dr}OUNgjxd#o Date: Sun, 15 Mar 2020 11:05:55 -0400 Subject: [PATCH 6/8] create methods to calculate equity of share, number of shares, percentage of shares --- src/main/java/account/Portfolio.java | 39 ++++++++++++++++--- src/test/java/account/PortfolioTest.java | 49 +++++++++++++++++++++++- 2 files changed, 81 insertions(+), 7 deletions(-) diff --git a/src/main/java/account/Portfolio.java b/src/main/java/account/Portfolio.java index da7d8df..a773ae4 100644 --- a/src/main/java/account/Portfolio.java +++ b/src/main/java/account/Portfolio.java @@ -12,11 +12,19 @@ public class Portfolio { private Double currentPortfolioValue; public Portfolio() { - this.portfolio = new HashMap(); + this.portfolio = new HashMap<>(); this.buyingPower = 2500.00; this.currentPortfolioValue = 0.00; } + public Double getBuyingPower() { + return buyingPower; + } + + public Double getCurrentPortfolioValue() { + return currentPortfolioValue + buyingPower; + } + public boolean addStockToBasePortfolio(StockEnum stock, Integer numberOfShares){ double costOfShares = stock.getOpen() * numberOfShares; if (costOfShares < buyingPower){ @@ -33,14 +41,35 @@ public boolean addStockToBasePortfolio(StockEnum stock, Integer numberOfShares){ } } - public double getBuyingPower() { - return buyingPower; + public Double getEquityOfShare(String stock){ + for (Map.Entry s : portfolio.entrySet()) { + if (stock.equalsIgnoreCase(String.valueOf(s.getKey()))){ + return DoubleRounder.round((s.getKey().getOpen() * s.getValue()),2); + } + } + return null; } - public double getCurrentPortfolioValue() { - return currentPortfolioValue; + public Integer getNumberOfShares(String stock){ + for(Map.Entry s : portfolio.entrySet()){ + if (stock.equalsIgnoreCase(String.valueOf(s.getKey()))){ + return s.getValue(); + } + } + return null; } + public Double getPortfolioDiversityOfShare(String stock){ + Double result = 0.00; + Double equityOfShare = getEquityOfShare(stock); + if(!stock.equalsIgnoreCase("cash")){ + result = DoubleRounder.round ((equityOfShare/getCurrentPortfolioValue()),2); + }else{ + result = DoubleRounder.round ((getBuyingPower()/getCurrentPortfolioValue()),2); + } + + return result; + } diff --git a/src/test/java/account/PortfolioTest.java b/src/test/java/account/PortfolioTest.java index 9e240c6..e32efd6 100644 --- a/src/test/java/account/PortfolioTest.java +++ b/src/test/java/account/PortfolioTest.java @@ -16,7 +16,7 @@ public void setUP(){ @Test public void addSingleStockTest(){ assertTrue(portfolio.addStockToBasePortfolio(StockEnum.APPLE,4)); - assertEquals(365.20, portfolio.getCurrentPortfolioValue(), 0.00); + assertEquals(2500.00, portfolio.getCurrentPortfolioValue(), 0.00); assertEquals(2134.80, portfolio.getBuyingPower(), 0.00); } @@ -30,10 +30,55 @@ public void addMultipleStocks(){ portfolio.addStockToBasePortfolio(StockEnum.MICROSOFT,5); portfolio.addStockToBasePortfolio(StockEnum.APPLE,5); portfolio.addStockToBasePortfolio(StockEnum.JPMORGANCHASE,5); - Double expected = 709.20; + Double expected = 2500.00; Double actual = portfolio.getCurrentPortfolioValue(); assertEquals(expected,actual); assertEquals(1790.80, portfolio.getBuyingPower(), 0.0); } + @Test + public void getEquityOfShareTest(){ + portfolio.addStockToBasePortfolio(StockEnum.MICROSOFT,5); + portfolio.addStockToBasePortfolio(StockEnum.APPLE,5); + portfolio.addStockToBasePortfolio(StockEnum.JPMORGANCHASE,5); + Double expected = 153.35; + Double actual = portfolio.getEquityOfShare("jpmorganchase"); + assertEquals(expected,actual); + } + + @Test + public void numberOfSharesTest(){ + portfolio.addStockToBasePortfolio(StockEnum.MICROSOFT,5); + portfolio.addStockToBasePortfolio(StockEnum.APPLE,5); + portfolio.addStockToBasePortfolio(StockEnum.JPMORGANCHASE,10); + Integer expected = 10; + Integer actual = portfolio.getNumberOfShares("jpmorganchase"); + assertEquals(expected,actual); + } + + @Test + public void currentPortfolioValueTest(){ + portfolio.addStockToBasePortfolio(StockEnum.MICROSOFT,5); + portfolio.addStockToBasePortfolio(StockEnum.APPLE,5); + portfolio.addStockToBasePortfolio(StockEnum.JPMORGANCHASE,10); + Double expected = 2500.00; + Double actual = portfolio.getCurrentPortfolioValue(); + assertEquals(expected,actual); + } + + + @Test + public void portfolioDiversityOfShareTest(){ + portfolio.addStockToBasePortfolio(StockEnum.MICROSOFT,5); + portfolio.addStockToBasePortfolio(StockEnum.APPLE,5); + portfolio.addStockToBasePortfolio(StockEnum.JPMORGANCHASE,5); + assertEquals(0.06, portfolio.getPortfolioDiversityOfShare("jpmorganchase"), 0.00); + assertEquals(0.04, portfolio.getPortfolioDiversityOfShare("microsoft"), 0.00); + assertEquals(0.18, portfolio.getPortfolioDiversityOfShare("Apple"), 0.00); + assertEquals(0.72, portfolio.getPortfolioDiversityOfShare("cash"), 0.00); + } + + + + } From 645054cc20201beedd51f3c8a931399e664d6b2b Mon Sep 17 00:00:00 2001 From: k-romero Date: Sun, 15 Mar 2020 11:27:41 -0400 Subject: [PATCH 7/8] create method to output position --- src/main/java/account/Portfolio.java | 23 +++++++++++++++++++++++ src/test/java/account/PortfolioTest.java | 10 ++++++++++ 2 files changed, 33 insertions(+) diff --git a/src/main/java/account/Portfolio.java b/src/main/java/account/Portfolio.java index a773ae4..1a144eb 100644 --- a/src/main/java/account/Portfolio.java +++ b/src/main/java/account/Portfolio.java @@ -71,6 +71,29 @@ public Double getPortfolioDiversityOfShare(String stock){ return result; } + public Double getDiversityPercentage(String stock){ + return (getPortfolioDiversityOfShare(stock)*100); + } + + + public String getPositionOfShare(String stock){ + StockEnum currentStock = getStock(stock); + StringBuilder builder = new StringBuilder(); + builder.append("****YOUR POSITION****") + .append(String.format("\nSymbol = %s\nShares = %d\nEquity = %.2f\nDiversity = %.2f", + currentStock.getSymbol(), getNumberOfShares(stock),getEquityOfShare(stock),getDiversityPercentage(stock))); + builder.append("%"); + return builder.toString(); + } + + private StockEnum getStock(String stock){ + for (Map.Entry s: portfolio.entrySet()){ + if (String.valueOf(s.getKey()).equalsIgnoreCase(stock)){ + return s.getKey(); + } + } + return null; + } } diff --git a/src/test/java/account/PortfolioTest.java b/src/test/java/account/PortfolioTest.java index e32efd6..babca60 100644 --- a/src/test/java/account/PortfolioTest.java +++ b/src/test/java/account/PortfolioTest.java @@ -76,6 +76,16 @@ public void portfolioDiversityOfShareTest(){ assertEquals(0.04, portfolio.getPortfolioDiversityOfShare("microsoft"), 0.00); assertEquals(0.18, portfolio.getPortfolioDiversityOfShare("Apple"), 0.00); assertEquals(0.72, portfolio.getPortfolioDiversityOfShare("cash"), 0.00); + System.out.println(portfolio.getPositionOfShare("Apple")); + } + + @Test + public void diversityPercentageTest(){ + portfolio.addStockToBasePortfolio(StockEnum.MICROSOFT,5); + portfolio.addStockToBasePortfolio(StockEnum.APPLE,5); + portfolio.addStockToBasePortfolio(StockEnum.JPMORGANCHASE,5); + assertEquals(18.0, portfolio.getDiversityPercentage("Apple"),0.00); + System.out.println(portfolio.getPositionOfShare("Apple")); } From 9a408f2df5e6c1455a4f3d1ebc0fd7a676a598b5 Mon Sep 17 00:00:00 2001 From: k-romero Date: Sun, 15 Mar 2020 12:05:56 -0400 Subject: [PATCH 8/8] create method to get string of all positions in portfolio --- src/main/java/account/Portfolio.java | 9 +++++++++ src/test/java/account/PortfolioTest.java | 18 ++++++++++++++++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/main/java/account/Portfolio.java b/src/main/java/account/Portfolio.java index 1a144eb..3c7dda6 100644 --- a/src/main/java/account/Portfolio.java +++ b/src/main/java/account/Portfolio.java @@ -95,5 +95,14 @@ private StockEnum getStock(String stock){ return null; } + public String getAllPositions(){ + StringBuilder builder = new StringBuilder(); + for (Map.Entry s: portfolio.entrySet()) { + builder.append(getPositionOfShare(String.valueOf(s.getKey()))) + .append("\n"); + } + return builder.toString(); + } + } diff --git a/src/test/java/account/PortfolioTest.java b/src/test/java/account/PortfolioTest.java index babca60..9a1286c 100644 --- a/src/test/java/account/PortfolioTest.java +++ b/src/test/java/account/PortfolioTest.java @@ -4,10 +4,16 @@ import org.junit.Test; import static org.junit.Assert.*; import stocks.StockEnum; +import stocks.StockEnumTest; + +import java.util.logging.Level; +import java.util.logging.Logger; public class PortfolioTest { Portfolio portfolio; + Logger logger = Logger.getLogger(PortfolioTest.class.getName()); + @Before public void setUP(){ portfolio = new Portfolio(); @@ -76,7 +82,7 @@ public void portfolioDiversityOfShareTest(){ assertEquals(0.04, portfolio.getPortfolioDiversityOfShare("microsoft"), 0.00); assertEquals(0.18, portfolio.getPortfolioDiversityOfShare("Apple"), 0.00); assertEquals(0.72, portfolio.getPortfolioDiversityOfShare("cash"), 0.00); - System.out.println(portfolio.getPositionOfShare("Apple")); + logger.log(Level.INFO, portfolio.getPositionOfShare("Apple")); } @Test @@ -85,9 +91,17 @@ public void diversityPercentageTest(){ portfolio.addStockToBasePortfolio(StockEnum.APPLE,5); portfolio.addStockToBasePortfolio(StockEnum.JPMORGANCHASE,5); assertEquals(18.0, portfolio.getDiversityPercentage("Apple"),0.00); - System.out.println(portfolio.getPositionOfShare("Apple")); } + @Test + public void getAllPositionsTest(){ + portfolio.addStockToBasePortfolio(StockEnum.MICROSOFT,5); + portfolio.addStockToBasePortfolio(StockEnum.APPLE,5); + portfolio.addStockToBasePortfolio(StockEnum.JPMORGANCHASE,5); + logger.log(Level.INFO, portfolio.getAllPositions()); + } + +