diff options
author | clarkohw <66530369+clarkohw@users.noreply.github.com> | 2021-04-20 01:10:36 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-20 01:10:36 -0400 |
commit | 8995968596c3a5c3ffd7b5d245d669f4efe2f491 (patch) | |
tree | b59b40dfc2827c636209cb528e1a929e88586cbf | |
parent | 9a670120b672996ce6865c0e3c66a49119e2b4a9 (diff) | |
parent | 0e49b69064b724b9b6bd1d7da08ab3b23fef720c (diff) |
Merge pull request #17 from cs0320-2021/search-by-holder_id
search by holder id
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 |