diff options
| -rw-r--r-- | .idea/term-project-cohwille-jmccaul3-mfoiani-rhunt2.iml | 34 | ||||
| -rw-r--r-- | pom.xml | 5 | ||||
| -rw-r--r-- | src/main/java/edu/brown/cs/student/term/Main.java | 4 | ||||
| -rw-r--r-- | src/main/java/edu/brown/cs/student/term/ProfitCalculation.java | 75 |
4 files changed, 77 insertions, 41 deletions
diff --git a/.idea/term-project-cohwille-jmccaul3-mfoiani-rhunt2.iml b/.idea/term-project-cohwille-jmccaul3-mfoiani-rhunt2.iml index ec06211..415cd3d 100644 --- a/.idea/term-project-cohwille-jmccaul3-mfoiani-rhunt2.iml +++ b/.idea/term-project-cohwille-jmccaul3-mfoiani-rhunt2.iml @@ -48,38 +48,6 @@ <orderEntry type="library" name="Maven: com.sparkjava:spark-template-freemarker:2.7.1" level="project" /> <orderEntry type="library" name="Maven: org.freemarker:freemarker:2.3.26-incubating" level="project" /> <orderEntry type="library" name="Maven: org.xerial:sqlite-jdbc:3.30.1" level="project" /> - <orderEntry type="library" name="Maven: net.sf.jopt-simple:jopt-simple:6.0-alpha-3" level="project" /> - <orderEntry type="library" name="Maven: junit:junit:4.13" level="project" /> - <orderEntry type="library" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" /> - <orderEntry type="library" name="Maven: org.hamcrest:hamcrest-all:1.3" level="project" /> - <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:2.0.0-alpha1" level="project" /> - <orderEntry type="library" name="Maven: org.slf4j:slf4j-jdk14:2.0.0-alpha1" level="project" /> - <orderEntry type="library" name="Maven: com.google.guava:guava:28.2-jre" level="project" /> - <orderEntry type="library" name="Maven: com.google.guava:failureaccess:1.0.1" level="project" /> - <orderEntry type="library" name="Maven: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava" level="project" /> - <orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:3.0.2" level="project" /> - <orderEntry type="library" name="Maven: org.checkerframework:checker-qual:2.10.0" level="project" /> - <orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.3.4" level="project" /> - <orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.3" level="project" /> - <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.6" level="project" /> - <orderEntry type="library" name="Maven: com.sparkjava:spark-core:2.9.1" level="project" /> - <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-server:9.4.18.v20190429" level="project" /> - <orderEntry type="library" name="Maven: javax.servlet:javax.servlet-api:3.1.0" level="project" /> - <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-http:9.4.18.v20190429" level="project" /> - <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-util:9.4.18.v20190429" level="project" /> - <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-io:9.4.18.v20190429" level="project" /> - <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-webapp:9.4.18.v20190429" level="project" /> - <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-xml:9.4.18.v20190429" level="project" /> - <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-servlet:9.4.18.v20190429" level="project" /> - <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-security:9.4.18.v20190429" level="project" /> - <orderEntry type="library" name="Maven: org.eclipse.jetty.websocket:websocket-server:9.4.18.v20190429" level="project" /> - <orderEntry type="library" name="Maven: org.eclipse.jetty.websocket:websocket-common:9.4.18.v20190429" level="project" /> - <orderEntry type="library" name="Maven: org.eclipse.jetty.websocket:websocket-client:9.4.18.v20190429" level="project" /> - <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-client:9.4.18.v20190429" level="project" /> - <orderEntry type="library" name="Maven: org.eclipse.jetty.websocket:websocket-servlet:9.4.18.v20190429" level="project" /> - <orderEntry type="library" name="Maven: org.eclipse.jetty.websocket:websocket-api:9.4.18.v20190429" level="project" /> - <orderEntry type="library" name="Maven: com.sparkjava:spark-template-freemarker:2.7.1" level="project" /> - <orderEntry type="library" name="Maven: org.freemarker:freemarker:2.3.26-incubating" level="project" /> - <orderEntry type="library" name="Maven: org.xerial:sqlite-jdbc:3.30.1" level="project" /> + <orderEntry type="library" name="Maven: org.json:json:20201115" level="project" /> </component> </module>
\ No newline at end of file @@ -116,6 +116,11 @@ <artifactId>sqlite-jdbc</artifactId> <version>3.30.1</version> </dependency> + <dependency> + <groupId>org.json</groupId> + <artifactId>json</artifactId> + <version>20201115</version> + </dependency> </dependencies> <!-- Build section --> diff --git a/src/main/java/edu/brown/cs/student/term/Main.java b/src/main/java/edu/brown/cs/student/term/Main.java index 3800837..7838dd3 100644 --- a/src/main/java/edu/brown/cs/student/term/Main.java +++ b/src/main/java/edu/brown/cs/student/term/Main.java @@ -55,9 +55,7 @@ public final class Main { e.printStackTrace(); } - person.organizeOrders(); - - System.out.println("hello"); + person.calculateGains(); // HashMap<String, Command> commandHashMap = new HashMap<>(); // /** add commands to map here! */ diff --git a/src/main/java/edu/brown/cs/student/term/ProfitCalculation.java b/src/main/java/edu/brown/cs/student/term/ProfitCalculation.java index 66891ce..998ea26 100644 --- a/src/main/java/edu/brown/cs/student/term/ProfitCalculation.java +++ b/src/main/java/edu/brown/cs/student/term/ProfitCalculation.java @@ -1,5 +1,20 @@ package edu.brown.cs.student.term; + +import org.json.JSONObject; + + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.ProtocolException; +import java.net.URI; +import java.net.URL; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; import java.sql.Connection; import java.sql.Date; import java.sql.DriverManager; @@ -54,7 +69,7 @@ public class ProfitCalculation { /** * This method fills the maps of sell and buy orders with lists of oldest - new trades */ - public void organizeOrders() { + private void organizeOrders() { //get a list of trades for a person to consider try { PreparedStatement prep; @@ -107,7 +122,7 @@ public class ProfitCalculation { /** * This method processes the sell orders in the sellHistoryMap to get realized gains */ - public void getRealizedGains() { + private void getRealizedGains() { for (String ticker : sellHistoryMap.keySet()) { //use FIFO selling LinkedList<OrderTuple> sells = sellHistoryMap.get(ticker); @@ -151,7 +166,7 @@ public class ProfitCalculation { /** * get the change in value of stocks which are still held */ - public void getUnrealizedGains() { + private void getUnrealizedGains() { //calculate change in value of holdings for (String ticker : buyHistoryMap.keySet()) { @@ -167,7 +182,6 @@ public class ProfitCalculation { } } - private class OrderTuple { private int shares; private double cost; @@ -197,9 +211,60 @@ public class ProfitCalculation { } public double getCurrentPrice(String ticker) { - return 100.0; + //get request for body string + //convert body to JSONObject + //object.getDouble("price") + + String API_KEY = "NW169NGWKDG9UGXO"; + String url = "https://www.alphavantage.co/query?function=GLOBAL_QUOTE&symbol=" + + ticker + + "&apikey=" + + API_KEY; + + HttpClient client = HttpClient.newHttpClient(); + HttpRequest request = HttpRequest.newBuilder() + .uri(URI.create(url)) + .build(); + + HttpResponse<String> response = null; + try { + response = client.send(request, + HttpResponse.BodyHandlers.ofString()); + } catch (IOException e) { + e.printStackTrace(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + System.out.println(response.body()); + JSONObject object = new JSONObject(response.body()); + return object.getJSONObject("Global Quote").getDouble("05. price"); + } + + public void calculateGains() { + organizeOrders(); + getRealizedGains(); + getUnrealizedGains(); + double totalGains = 0; + double realizedGains = 0; + double unrealizedGains = 0; + + for (double value : realizedGainsMap.values()) { + realizedGains += value; + } + + for (double value : unrealizedGainsMap.values()) { + unrealizedGains += value; + } + + totalGains = unrealizedGains + realizedGains; + + System.out.println( + "Total: " + totalGains + "| unrealized: " + unrealizedGains + " | realized: " + + realizedGains); } + public void setConnection(String filename) throws SQLException, ClassNotFoundException { // Initialize the database connection, turn foreign keys on |
