aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.idea/term-project-cohwille-jmccaul3-mfoiani-rhunt2.iml34
-rw-r--r--pom.xml5
-rw-r--r--src/main/java/edu/brown/cs/student/term/Main.java4
-rw-r--r--src/main/java/edu/brown/cs/student/term/ProfitCalculation.java75
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
diff --git a/pom.xml b/pom.xml
index a2bd1a7..7172753 100644
--- a/pom.xml
+++ b/pom.xml
@@ -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