diff options
| author | clarkohw <clark_oh-willeke@brown.edu> | 2021-04-20 01:09:22 -0400 |
|---|---|---|
| committer | clarkohw <clark_oh-willeke@brown.edu> | 2021-04-20 01:09:22 -0400 |
| commit | 0e49b69064b724b9b6bd1d7da08ab3b23fef720c (patch) | |
| tree | df3de18dc3748f8f1baf024aa4d1d6056b8b0ef0 /src/main | |
| parent | bd050926124a6eceaf17ab8426ee734c6148352f (diff) | |
search by holder id
Diffstat (limited to 'src/main')
3 files changed, 32 insertions, 21 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; |
