aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/edu/brown
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/main/java/edu/brown
parentbd050926124a6eceaf17ab8426ee734c6148352f (diff)
search by holder id
Diffstat (limited to 'src/main/java/edu/brown')
-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
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;