aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJulia McCauley <skurvyj@gmail.com>2021-04-01 18:27:00 -0400
committerJulia McCauley <skurvyj@gmail.com>2021-04-01 18:27:00 -0400
commit22538c2a68160cd7edc47d7c3bcea54f84c97b72 (patch)
treecdb190dc7295d3f312b6b7241678ffcf490f9c40 /src
parent1e26cab2dec20b67bc5528cb2448ab69a593c66e (diff)
Created class outline for hub stuff, started database querier
Diffstat (limited to 'src')
-rw-r--r--src/main/java/edu/brown/cs/student/term/DatabaseQuerier.java71
-rw-r--r--src/main/java/edu/brown/cs/student/term/Main.java4
-rw-r--r--src/main/java/edu/brown/cs/student/term/hub/HubSearch.java4
-rw-r--r--src/main/java/edu/brown/cs/student/term/hub/LinkMapper.java4
-rw-r--r--src/main/java/edu/brown/cs/student/term/hub/SuspicionRanker.java4
-rw-r--r--src/main/java/edu/brown/cs/student/term/repl/Command.java6
-rw-r--r--src/main/java/edu/brown/cs/student/term/repl/REPL.java1
-rw-r--r--src/main/java/edu/brown/cs/student/term/repl/SetupCommand.java36
-rw-r--r--src/main/java/edu/brown/cs/student/term/trade/Trade.java49
9 files changed, 170 insertions, 9 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
new file mode 100644
index 0000000..7818a83
--- /dev/null
+++ b/src/main/java/edu/brown/cs/student/term/DatabaseQuerier.java
@@ -0,0 +1,71 @@
+package edu.brown.cs.student.term;
+import edu.brown.cs.student.term.trade.Trade;
+
+import java.sql.*;
+import java.util.ArrayList;
+import java.util.List;
+
+
+public class DatabaseQuerier{
+ private static Connection conn = null;
+
+ /**
+ * Makes a database querier for a particular sqlite database
+ * @param filename - String representing filepath of database
+ * @throws SQLException
+ * @throws ClassNotFoundException
+ */
+ public DatabaseQuerier(String filename) throws SQLException,
+ ClassNotFoundException {
+ Class.forName("org.sqlite.JDBC");
+ String urlToDB = "jdbc:sqlite:" + filename;
+ // AutoClosable TRY-WITH-RESOURCES ensures database connection will be closed when it is done
+ conn = DriverManager.getConnection(urlToDB);
+ }
+
+ public static Connection getConn() {
+ return conn;
+ }
+
+ /**
+ * Gets the names of all stocks in the database for the past two weeks from end date
+ * @param endDate - the end data for the 2 week period in unix time
+ * @return
+ * @throws SQLException
+ */
+ public List<String> getRecentStocks(double endDate) throws SQLException {
+ List<String> stocks = new ArrayList<>();
+
+ PreparedStatement prep = conn.prepareStatement(
+ "SELECT DISTINCT stock_name FROM trades (WHERE trade_timestamp < ?)");
+
+ prep.setDouble(1, endDate);
+ ResultSet rs = prep.executeQuery();
+
+ while(rs.next()){
+ stocks.add(rs.getString(1));
+ }
+
+ System.out.println(stocks.size());
+ for (String s: stocks) {
+ System.out.println(s);
+ }
+ return stocks;
+ }
+
+ //TODO: Fill these in
+ public List<List<Trade>> getAllTradesByStock() throws SQLException {
+
+ PreparedStatement prep = conn.prepareStatement(
+ "");
+ return null;
+ }
+
+ public List<Trade> getTradeByStock() throws SQLException{
+ return null;
+ }
+
+
+
+
+}
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 c436b2e..a6a9764 100644
--- a/src/main/java/edu/brown/cs/student/term/Main.java
+++ b/src/main/java/edu/brown/cs/student/term/Main.java
@@ -2,6 +2,7 @@ package edu.brown.cs.student.term;
import edu.brown.cs.student.term.repl.Command;
import edu.brown.cs.student.term.repl.REPL;
+import edu.brown.cs.student.term.repl.SetupCommand;
import joptsimple.OptionParser;
import joptsimple.OptionSet;
@@ -45,10 +46,9 @@ public final class Main {
}
HashMap<String, Command> commandHashMap = new HashMap<>();
+ commandHashMap.put("setup", new SetupCommand());
/** add commands to map here! */
REPL repl = new REPL(commandHashMap);
repl.runREPL();
-
- // TODO: Process commands in a REPL
}
} \ No newline at end of file
diff --git a/src/main/java/edu/brown/cs/student/term/hub/HubSearch.java b/src/main/java/edu/brown/cs/student/term/hub/HubSearch.java
new file mode 100644
index 0000000..87e723b
--- /dev/null
+++ b/src/main/java/edu/brown/cs/student/term/hub/HubSearch.java
@@ -0,0 +1,4 @@
+package edu.brown.cs.student.term.hub;
+
+public class HubSearch {
+}
diff --git a/src/main/java/edu/brown/cs/student/term/hub/LinkMapper.java b/src/main/java/edu/brown/cs/student/term/hub/LinkMapper.java
new file mode 100644
index 0000000..7cb1011
--- /dev/null
+++ b/src/main/java/edu/brown/cs/student/term/hub/LinkMapper.java
@@ -0,0 +1,4 @@
+package edu.brown.cs.student.term.hub;
+
+public class LinkMapper {
+}
diff --git a/src/main/java/edu/brown/cs/student/term/hub/SuspicionRanker.java b/src/main/java/edu/brown/cs/student/term/hub/SuspicionRanker.java
new file mode 100644
index 0000000..a1196d8
--- /dev/null
+++ b/src/main/java/edu/brown/cs/student/term/hub/SuspicionRanker.java
@@ -0,0 +1,4 @@
+package edu.brown.cs.student.term.hub;
+
+public class SuspicionRanker {
+}
diff --git a/src/main/java/edu/brown/cs/student/term/repl/Command.java b/src/main/java/edu/brown/cs/student/term/repl/Command.java
index f8b0b04..056c7df 100644
--- a/src/main/java/edu/brown/cs/student/term/repl/Command.java
+++ b/src/main/java/edu/brown/cs/student/term/repl/Command.java
@@ -10,10 +10,4 @@ public interface Command {
* @param args arguments for the command
*/
String run(String[] args);
-
- /**
- * Used to print command output to GUI.
- * @return String representing neighbors found by NeighborsCommand and RadiusCommand commands
- */
- String toString();
}
diff --git a/src/main/java/edu/brown/cs/student/term/repl/REPL.java b/src/main/java/edu/brown/cs/student/term/repl/REPL.java
index 0be7e3f..a1d5c23 100644
--- a/src/main/java/edu/brown/cs/student/term/repl/REPL.java
+++ b/src/main/java/edu/brown/cs/student/term/repl/REPL.java
@@ -1,5 +1,4 @@
package edu.brown.cs.student.term.repl;
-import edu.brown.cs.student.term.repl.Command;
import java.io.BufferedReader;
import java.io.IOException;
diff --git a/src/main/java/edu/brown/cs/student/term/repl/SetupCommand.java b/src/main/java/edu/brown/cs/student/term/repl/SetupCommand.java
new file mode 100644
index 0000000..1d84f49
--- /dev/null
+++ b/src/main/java/edu/brown/cs/student/term/repl/SetupCommand.java
@@ -0,0 +1,36 @@
+package edu.brown.cs.student.term.repl;
+
+import edu.brown.cs.student.term.DatabaseQuerier;
+
+public class SetupCommand implements Command {
+
+ private String error;
+ private static DatabaseQuerier dq;
+
+ @Override
+ /**
+ * Sets up connection to the database
+ * Returns an empty string if no errors, non empty with error message otherwise
+ */
+ public String run(String[] args) {
+ error = "";
+ if(args.length == 1){
+ try{
+ dq = new DatabaseQuerier(args[0]);
+ } catch (Exception e) {
+ error = "ERROR: Could not connect to database. Ensure this is a valid database.";
+ System.out.println(error);
+ return error;
+ }
+ } else {
+ error = "ERROR: Incorrect number of arguments for setup command";
+ System.out.println(error);
+ return error;
+ }
+ return error;
+ }
+
+ public static DatabaseQuerier getDq() {
+ return dq;
+ }
+}
diff --git a/src/main/java/edu/brown/cs/student/term/trade/Trade.java b/src/main/java/edu/brown/cs/student/term/trade/Trade.java
new file mode 100644
index 0000000..831f9f1
--- /dev/null
+++ b/src/main/java/edu/brown/cs/student/term/trade/Trade.java
@@ -0,0 +1,49 @@
+package edu.brown.cs.student.term.trade;
+
+public class Trade {
+
+ private int id;
+ private String stock;
+ private boolean isBuy;
+ private double timestamp;
+ private String holder;
+
+ public Trade(int id, String stockName, boolean buy, double ts, String holderName){
+ this.id = id;
+ this.stock = stockName;
+ this.isBuy = buy;
+ this.timestamp = ts;
+ this.holder = holderName;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public boolean isBuy() {
+ return isBuy;
+ }
+
+ public double getTimestamp() {
+ return timestamp;
+ }
+
+ public String getStock() {
+ return stock;
+ }
+
+ public String getHolder() {
+ return holder;
+ }
+
+ @Override
+ public String toString() {
+ return "Trade{" +
+ "id=" + id +
+ ", stock='" + stock + '\'' +
+ ", isBuy=" + isBuy +
+ ", timestamp=" + timestamp +
+ ", holder='" + holder + '\'' +
+ '}';
+ }
+}