aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorclarkohw <clark_oh-willeke@brown.edu>2021-04-20 01:09:22 -0400
committerclarkohw <clark_oh-willeke@brown.edu>2021-04-20 01:09:22 -0400
commit0e49b69064b724b9b6bd1d7da08ab3b23fef720c (patch)
treedf3de18dc3748f8f1baf024aa4d1d6056b8b0ef0 /src
parentbd050926124a6eceaf17ab8426ee734c6148352f (diff)
search by holder id
Diffstat (limited to 'src')
-rw-r--r--src/main/java/edu/brown/cs/student/term/DatabaseQuerier.java6
-rw-r--r--src/main/java/edu/brown/cs/student/term/Main.java16
-rw-r--r--src/main/java/edu/brown/cs/student/term/profit/ProfitCalculation.java31
-rw-r--r--src/test/java/edu/brown/cs/student/ProfitCalculationTest.java16
4 files changed, 40 insertions, 29 deletions
diff --git a/src/main/java/edu/brown/cs/student/term/DatabaseQuerier.java b/src/main/java/edu/brown/cs/student/term/DatabaseQuerier.java
index 53c8cdc..2a9af65 100644
--- a/src/main/java/edu/brown/cs/student/term/DatabaseQuerier.java
+++ b/src/main/java/edu/brown/cs/student/term/DatabaseQuerier.java
@@ -125,16 +125,16 @@ public class DatabaseQuerier {
return trades;
}
- public List<Trade> getAllTradesByHolder(String person, Date startDate, Date endDate) {
+ public List<Trade> getAllTradesByHolder(Integer holder_id, Date startDate, Date endDate) {
LinkedList<Trade> trades = new LinkedList<>();
try {
PreparedStatement prep;
prep =
- conn.prepareStatement("SELECT * FROM \'trades\' WHERE holder_name= ? "
+ conn.prepareStatement("SELECT * FROM \'trades\' WHERE holder_id = ?"
+ " AND trade_timestamp BETWEEN ? AND ?"
+ "order by trade_timestamp asc;");
- prep.setString(1, person);
+ prep.setInt(1, holder_id);
prep.setDate(2, startDate);
prep.setDate(3, endDate);
ResultSet rs = prep.executeQuery();
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 dd304c5..d6948cd 100644
--- a/src/main/java/edu/brown/cs/student/term/Main.java
+++ b/src/main/java/edu/brown/cs/student/term/Main.java
@@ -178,22 +178,22 @@ public final class Main {
@Override
public Object handle(Request request, Response response) throws Exception {
JSONObject req = new JSONObject(request.body());
- String person = req.getString("person");
+ Integer holder_id = req.getInt("selectedId");
Date startPeriod = new Date(req.getLong("startTime"));
Date endPeriod = new Date(req.getLong("endTime"));
ProfitCalculation profit =
- new ProfitCalculation(DatabaseQuerier.getConn(), person, startPeriod, endPeriod);
- List<StockHolding> holdings = profit.getHoldingsList();
- double gains = profit.calculateGainsSingle();
+ new ProfitCalculation(DatabaseQuerier.getConn(), "", startPeriod, endPeriod);
+ List<StockHolding> holdings = profit.getHoldingsList(holder_id);
+ double gains = profit.calculateGainsSingle(holder_id);
double sp500PercentGain = profit.compareToSP500();
Map<String, Object> res = new HashMap<>();
- res.put("person", person);
+ res.put("holder_id", holder_id);
res.put("moneyIn", profit.getMoneyInput());
res.put("moneyOut", profit.getMoneyInput() + gains);
res.put("holdings", holdings);
- res.put("percentGain", 100 * gains / profit.getMoneyInput());
+ res.put("percentGain", 100 * (gains / profit.getMoneyInput()));
res.put("SP500", (1 + sp500PercentGain) * profit.getMoneyInput());
res.put("percentSP500", 100 * sp500PercentGain);
return GSON.toJson(res);
@@ -205,12 +205,12 @@ public final class Main {
@Override
public Object handle(Request request, Response response) throws Exception {
JSONObject req = new JSONObject(request.body());
- String person = req.getString("person");
+ Integer holder_id = req.getInt("selectedId");
Date startPeriod = new Date(req.getLong("startTime"));
Date endPeriod = new Date(req.getLong("endTime"));
DatabaseQuerier db = SetupCommand.getDq();
- List<Trade> trades = db.getAllTradesByHolder(person, startPeriod, endPeriod);
+ List<Trade> trades = db.getAllTradesByHolder(holder_id, startPeriod, endPeriod);
return GSON.toJson(trades);
diff --git a/src/main/java/edu/brown/cs/student/term/profit/ProfitCalculation.java b/src/main/java/edu/brown/cs/student/term/profit/ProfitCalculation.java
index d0df8a8..d5fa872 100644
--- a/src/main/java/edu/brown/cs/student/term/profit/ProfitCalculation.java
+++ b/src/main/java/edu/brown/cs/student/term/profit/ProfitCalculation.java
@@ -76,6 +76,7 @@ public class ProfitCalculation {
tablesFilled = false;
}
+
/**
* This method fills the maps of sell and buy orders with lists of oldest - new trades.
*/
@@ -93,15 +94,25 @@ public class ProfitCalculation {
return ticker;
}
- private void organizeOrders() {
+ private void organizeOrders(Integer id) {
//get a list of trades for a person to consider
try {
PreparedStatement prep;
- prep =
- conn.prepareStatement("SELECT * FROM \'trades\' WHERE holder_name= ? "
- + " AND trade_timestamp BETWEEN ? AND ? "
- + "order by trade_timestamp asc;");
- prep.setString(1, this.person);
+ if (id == -1) {
+ //search by name
+ prep =
+ conn.prepareStatement("SELECT * FROM \'trades\' WHERE holder_name= ? "
+ + " AND trade_timestamp BETWEEN ? AND ? "
+ + "order by trade_timestamp asc;");
+ prep.setString(1, this.person);
+ } else {
+ //search by id
+ prep =
+ conn.prepareStatement("SELECT * FROM \'trades\' WHERE holder_id = ? "
+ + " AND trade_timestamp BETWEEN ? AND ? "
+ + "order by trade_timestamp asc;");
+ prep.setInt(1, id);
+ }
prep.setDate(2, startTime);
prep.setDate(3, endTime);
ResultSet rs = prep.executeQuery();
@@ -283,10 +294,10 @@ public class ProfitCalculation {
}
- public double calculateGainsSingle() {
+ public double calculateGainsSingle(Integer id) {
if (!tablesFilled) {
- organizeOrders();
+ organizeOrders(id);
getRealizedGains();
tablesFilled = true;
}
@@ -301,14 +312,14 @@ public class ProfitCalculation {
return realizedGains;
}
- public List<StockHolding> getHoldingsList() {
+ public List<StockHolding> getHoldingsList(Integer id) {
if (conn == null) {
System.out.println("ERROR: No database connection");
return new LinkedList<>();
}
if (!tablesFilled) {
- organizeOrders();
+ organizeOrders(id);
getRealizedGains();
getUnrealizedGains();
tablesFilled = true;
diff --git a/src/test/java/edu/brown/cs/student/ProfitCalculationTest.java b/src/test/java/edu/brown/cs/student/ProfitCalculationTest.java
index 0d22109..fcb0de4 100644
--- a/src/test/java/edu/brown/cs/student/ProfitCalculationTest.java
+++ b/src/test/java/edu/brown/cs/student/ProfitCalculationTest.java
@@ -56,7 +56,7 @@ public class ProfitCalculationTest {
new ProfitCalculation(DatabaseQuerier.getConn(), "Don", new Date(1518010558000l),
new Date(1618698807000l));
//price of GME at end time is 154.69
- List<StockHolding> trade = profitCalculation.getHoldingsList();
+ List<StockHolding> trade = profitCalculation.getHoldingsList(-1);
//buy with no sell
assertEquals(trade.get(0).getUnrealizedGain(), 3842.25, .25);
assertEquals(trade.get(0).getRealizedGain(), 0, .01);
@@ -65,9 +65,9 @@ public class ProfitCalculationTest {
profitCalculation =
new ProfitCalculation(DatabaseQuerier.getConn(), "SELL", new Date(1518010558000l),
new Date(1618698807000l));
- trade = profitCalculation.getHoldingsList();
+ trade = profitCalculation.getHoldingsList(-1);
assertTrue(trade.isEmpty());
- assertEquals(profitCalculation.calculateGainsSingle(), 0, 0.001);
+ assertEquals(profitCalculation.calculateGainsSingle(-1), 0, 0.001);
tearDown();
}
@@ -90,7 +90,7 @@ public class ProfitCalculationTest {
new Date(1518010558000l),
new Date(1715629591000l));
- assertEquals(profitCalculation.getHoldingsList().get(0).getRealizedGain(), 3750, 0.01);
+ assertEquals(profitCalculation.getHoldingsList(-1).get(0).getRealizedGain(), 3750, 0.01);
assertEquals(profitCalculation.getMoneyInput(), 3750, .01);
//left over holdings
@@ -99,7 +99,7 @@ public class ProfitCalculationTest {
new Date(1518010558000l),
new Date(1715629591000l));
- assertEquals(profitCalculation.getHoldingsList().get(0).getShares(), 25, .01);
+ assertEquals(profitCalculation.getHoldingsList(-1).get(0).getShares(), 25, .01);
tearDown();
}
@@ -124,21 +124,21 @@ public class ProfitCalculationTest {
new Date(1618698807000l));
assertEquals(profitCalculation.getProfitMap(), new HashMap<>());
- assertEquals(profitCalculation.getHoldingsList(), new LinkedList<>());
+ assertEquals(profitCalculation.getHoldingsList(-1), new LinkedList<>());
setUp();
//invalid person
profitCalculation =
new ProfitCalculation(DatabaseQuerier.getConn(), "1234", new Date(1518010558000l),
new Date(1618698807000l));
- assertEquals(profitCalculation.getHoldingsList(), new LinkedList<>());
+ assertEquals(profitCalculation.getHoldingsList(-1), new LinkedList<>());
//invalid stock ticker
profitCalculation =
new ProfitCalculation(DatabaseQuerier.getConn(), "invalidTicker", new Date(1518010558000l),
new Date(1618698807000l));
- assertTrue(profitCalculation.getHoldingsList().isEmpty());
+ assertTrue(profitCalculation.getHoldingsList(-1).isEmpty());
}
} \ No newline at end of file