From 69572b3a1fbf2e6905e5dacbd1255d63b276a431 Mon Sep 17 00:00:00 2001 From: NMerz Date: Sat, 3 Oct 2020 11:22:35 -0400 Subject: [PATCH] Generify endpoint groups as IntelliJ Modules This allows them to be built sperately decreasing JAR size and also creates a better structure for generic service functions and business logic. --- Lambdas/Lists/Item/src/ItemAdder.java | 27 +++++++++++++++++ Lambdas/Lists/Item/src/ItemGET.java | 11 +++++++ Lambdas/Lists/Item/src/ItemGetter.java | 9 ++++++ Lambdas/Lists/Item/src/ItemPOST.java | 11 +++++++ .../main/java => List/src}/ListAdder.java | 7 +++-- Lambdas/Lists/List/src/ListPOST.java | 11 +++++++ Lambdas/Lists/src/main/java/BasicHandler.java | 29 +++++++++++++++++++ Lambdas/Lists/src/main/java/CallHandler.java | 6 ++++ Lambdas/Lists/src/main/java/DBConnector.java | 4 +-- Lambdas/Lists/src/main/java/InputUtils.java | 4 +++ Lambdas/Lists/src/main/java/ListPOST.java | 28 ------------------ Listify/.idea/misc.xml | 2 +- 12 files changed, 115 insertions(+), 34 deletions(-) create mode 100644 Lambdas/Lists/Item/src/ItemAdder.java create mode 100644 Lambdas/Lists/Item/src/ItemGET.java create mode 100644 Lambdas/Lists/Item/src/ItemGetter.java create mode 100644 Lambdas/Lists/Item/src/ItemPOST.java rename Lambdas/Lists/{src/main/java => List/src}/ListAdder.java (75%) create mode 100644 Lambdas/Lists/List/src/ListPOST.java create mode 100644 Lambdas/Lists/src/main/java/BasicHandler.java create mode 100644 Lambdas/Lists/src/main/java/CallHandler.java delete mode 100644 Lambdas/Lists/src/main/java/ListPOST.java diff --git a/Lambdas/Lists/Item/src/ItemAdder.java b/Lambdas/Lists/Item/src/ItemAdder.java new file mode 100644 index 0000000..bea8cfa --- /dev/null +++ b/Lambdas/Lists/Item/src/ItemAdder.java @@ -0,0 +1,27 @@ +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.util.Map; + +public class ItemAdder implements CallHandler { + + private DBConnector connector; + private String cognitoID; + + private final String LIST_CREATE = "INSERT INTO Items (Name) VALUES (?)"; + + public ItemAdder(DBConnector connector, String cognitoID) { + this.connector = connector; + this.cognitoID = cognitoID; + } + + public String conductAction(Map bodyMap, String queryString) throws SQLException { + Connection connection = connector.getConnection(); + PreparedStatement statement = connection.prepareStatement(LIST_CREATE); + statement.setString(1, bodyMap.get("name").toString());//Needs safe checking + System.out.println(statement); + statement.executeUpdate(); + connection.commit(); + return null; + } +} diff --git a/Lambdas/Lists/Item/src/ItemGET.java b/Lambdas/Lists/Item/src/ItemGET.java new file mode 100644 index 0000000..3794b51 --- /dev/null +++ b/Lambdas/Lists/Item/src/ItemGET.java @@ -0,0 +1,11 @@ +import com.amazonaws.services.lambda.runtime.Context; +import com.amazonaws.services.lambda.runtime.RequestHandler; + +import java.util.Map; + +public class ItemGET implements RequestHandler, String> { + + public String handleRequest(Map inputMap, Context unfilled) { + return BasicHandler.handleRequest(inputMap, unfilled, ItemGetter.class); + } +} diff --git a/Lambdas/Lists/Item/src/ItemGetter.java b/Lambdas/Lists/Item/src/ItemGetter.java new file mode 100644 index 0000000..57a350c --- /dev/null +++ b/Lambdas/Lists/Item/src/ItemGetter.java @@ -0,0 +1,9 @@ +import java.sql.SQLException; +import java.util.Map; + +public class ItemGetter implements CallHandler{ + @Override + public String conductAction(Map bodyMap, String cognitoID) throws SQLException { + return null; + } +} diff --git a/Lambdas/Lists/Item/src/ItemPOST.java b/Lambdas/Lists/Item/src/ItemPOST.java new file mode 100644 index 0000000..f2279c4 --- /dev/null +++ b/Lambdas/Lists/Item/src/ItemPOST.java @@ -0,0 +1,11 @@ +import com.amazonaws.services.lambda.runtime.Context; +import com.amazonaws.services.lambda.runtime.RequestHandler; + +import java.util.Map; + +public class ItemPOST implements RequestHandler, String>{ + + public String handleRequest(Map inputMap, Context unfilled) { + return BasicHandler.handleRequest(inputMap, unfilled, ItemAdder.class); + } +} diff --git a/Lambdas/Lists/src/main/java/ListAdder.java b/Lambdas/Lists/List/src/ListAdder.java similarity index 75% rename from Lambdas/Lists/src/main/java/ListAdder.java rename to Lambdas/Lists/List/src/ListAdder.java index e1598b7..d7f4982 100644 --- a/Lambdas/Lists/src/main/java/ListAdder.java +++ b/Lambdas/Lists/List/src/ListAdder.java @@ -3,19 +3,19 @@ import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.Map; -public class ListAdder { +public class ListAdder implements CallHandler { private DBConnector connector; private String cognitoID; private final String LIST_CREATE = "INSERT INTO Lists (Name, Owner) VALUES (?, ?)"; - ListAdder(DBConnector connector, String cognitoID) { + public ListAdder(DBConnector connector, String cognitoID) { this.connector = connector; this.cognitoID = cognitoID; } - public void add(Map bodyMap) throws SQLException { + public String conductAction(Map bodyMap, String queryString) throws SQLException { Connection connection = connector.getConnection(); PreparedStatement statement = connection.prepareStatement(LIST_CREATE); statement.setString(1, bodyMap.get("name").toString());//Needs safe checking @@ -23,5 +23,6 @@ public class ListAdder { System.out.println(statement); statement.executeUpdate(); connection.commit(); + return null; } } diff --git a/Lambdas/Lists/List/src/ListPOST.java b/Lambdas/Lists/List/src/ListPOST.java new file mode 100644 index 0000000..13c2785 --- /dev/null +++ b/Lambdas/Lists/List/src/ListPOST.java @@ -0,0 +1,11 @@ +import java.util.Map; + +import com.amazonaws.services.lambda.runtime.Context; +import com.amazonaws.services.lambda.runtime.RequestHandler; + +public class ListPOST implements RequestHandler, String>{ + + public String handleRequest(Map inputMap, Context unfilled) { + return BasicHandler.handleRequest(inputMap, unfilled, ListAdder.class); + } +} diff --git a/Lambdas/Lists/src/main/java/BasicHandler.java b/Lambdas/Lists/src/main/java/BasicHandler.java new file mode 100644 index 0000000..8b642eb --- /dev/null +++ b/Lambdas/Lists/src/main/java/BasicHandler.java @@ -0,0 +1,29 @@ +import com.amazonaws.services.lambda.runtime.Context; + +import java.io.IOException; +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; +import java.sql.SQLException; +import java.util.Map; + +public class BasicHandler { + public static String handleRequest(Map inputMap, Context unfilled, Class toCall) { + String cognitoID = InputUtils.getCognitoIDFromBody(inputMap); + try { + DBConnector connector = new DBConnector(); + try { + Constructor constructor = toCall.getConstructor(DBConnector.class, String.class); + CallHandler callHandler = constructor.newInstance(connector, cognitoID); + callHandler.conductAction(InputUtils.getBody(inputMap), ""); + } catch (SQLException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e) { + e.printStackTrace(); + } finally { + connector.close(); + } + } catch (IOException |SQLException|ClassNotFoundException e) { + e.printStackTrace(); + throw new RuntimeException(e.getMessage()); + } + return null; + } +} diff --git a/Lambdas/Lists/src/main/java/CallHandler.java b/Lambdas/Lists/src/main/java/CallHandler.java new file mode 100644 index 0000000..ac5aa2a --- /dev/null +++ b/Lambdas/Lists/src/main/java/CallHandler.java @@ -0,0 +1,6 @@ +import java.sql.SQLException; +import java.util.Map; + +public interface CallHandler { + String conductAction(Map bodyMap, String cognitoID) throws SQLException; +} diff --git a/Lambdas/Lists/src/main/java/DBConnector.java b/Lambdas/Lists/src/main/java/DBConnector.java index 074f4de..798cfc3 100644 --- a/Lambdas/Lists/src/main/java/DBConnector.java +++ b/Lambdas/Lists/src/main/java/DBConnector.java @@ -12,11 +12,11 @@ public class DBConnector { Connection connection; - DBConnector() throws IOException, SQLException, ClassNotFoundException { + public DBConnector() throws IOException, SQLException, ClassNotFoundException { this(loadProperties("dbProperties.json")); } - DBConnector(Properties dbProperties) throws SQLException, ClassNotFoundException { + public DBConnector(Properties dbProperties) throws SQLException, ClassNotFoundException { Class.forName("org.mariadb.jdbc.Driver"); System.out.println(dbProperties); System.out.println(DBConnector.buildURL(dbProperties)); diff --git a/Lambdas/Lists/src/main/java/InputUtils.java b/Lambdas/Lists/src/main/java/InputUtils.java index 46a0694..b10781d 100644 --- a/Lambdas/Lists/src/main/java/InputUtils.java +++ b/Lambdas/Lists/src/main/java/InputUtils.java @@ -19,6 +19,10 @@ public class InputUtils { return getMap(inputMap, "body"); } + public static String getQueryString(Map inputMap) { + return (String) (getMap(inputMap, "params").get("querystring")); + } + public static Map getMap(Map parentMap, String childKey) { if ((parentMap.get(childKey) != null) && (parentMap.get(childKey) instanceof Map)) { return ((Map) parentMap.get(childKey)); diff --git a/Lambdas/Lists/src/main/java/ListPOST.java b/Lambdas/Lists/src/main/java/ListPOST.java deleted file mode 100644 index c2fc63c..0000000 --- a/Lambdas/Lists/src/main/java/ListPOST.java +++ /dev/null @@ -1,28 +0,0 @@ -import java.io.IOException; -import java.sql.SQLException; -import java.util.Map; - -import com.amazonaws.services.lambda.runtime.Context; -import com.amazonaws.services.lambda.runtime.RequestHandler; - -public class ListPOST implements RequestHandler, String>{ - - - public String handleRequest(Map inputMap, Context unfilled) { - String cognitoID = InputUtils.getCognitoIDFromBody(inputMap); - try { - DBConnector connector = new DBConnector(); - try { - new ListAdder(connector, cognitoID).add(InputUtils.getBody(inputMap)); - } catch (SQLException e) { - e.printStackTrace(); - } finally { - connector.close(); - } - } catch (IOException|SQLException|ClassNotFoundException e) { - e.printStackTrace(); - throw new RuntimeException(e.getMessage()); - } - return null; - } -} diff --git a/Listify/.idea/misc.xml b/Listify/.idea/misc.xml index d5d35ec..fdae1d0 100644 --- a/Listify/.idea/misc.xml +++ b/Listify/.idea/misc.xml @@ -1,6 +1,6 @@ - +