Finish V1 of List and Item Lambdas

List and Item Lambdas and client calls should be roughly finished (pending full testing once databse config is done).
This commit is contained in:
NMerz 2020-10-03 18:35:27 -04:00
parent f107ab023d
commit 1f361cf401
8 changed files with 227 additions and 12 deletions

View File

@ -49,4 +49,76 @@ public class Item {
", fetchCounts=" + fetchCounts + ", fetchCounts=" + fetchCounts +
'}'; '}';
} }
public Integer getProductID() {
return productID;
}
public void setProductID(Integer productID) {
this.productID = productID;
}
public Integer getChainID() {
return chainID;
}
public void setChainID(Integer chainID) {
this.chainID = chainID;
}
public String getUpc() {
return upc;
}
public void setUpc(String upc) {
this.upc = upc;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public BigDecimal getPrice() {
return price;
}
public void setPrice(BigDecimal price) {
this.price = price;
}
public String getImageURL() {
return imageURL;
}
public void setImageURL(String imageURL) {
this.imageURL = imageURL;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
public LocalDateTime getRetrievedDate() {
return retrievedDate;
}
public void setRetrievedDate(LocalDateTime retrievedDate) {
this.retrievedDate = retrievedDate;
}
public Integer getFetchCounts() {
return fetchCounts;
}
public void setFetchCounts(Integer fetchCounts) {
this.fetchCounts = fetchCounts;
}
} }

View File

@ -0,0 +1,11 @@
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import java.util.Map;
public class ItemDELETE implements RequestHandler<Map<String,Object>, Object> {
public Object handleRequest(Map<String, Object> inputMap, Context unfilled) {
return BasicHandler.handleRequest(inputMap, unfilled, ItemGetter.class);
}
}

View File

@ -0,0 +1,33 @@
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
public class ItemDeleter implements CallHandler {
private DBConnector connector;
private String cognitoID;
private final String REMOVE_FROM_LIST = "DELETE FROM ListProduct WHERE (ProductID = ? AND ListID = ?);";
public ItemDeleter(DBConnector connector, String cognitoID) {
this.connector = connector;
this.cognitoID = cognitoID;
}
public Object conductAction(Map<String, Object> bodyMap, HashMap<String, String> queryString, String cognitoID) throws SQLException {
Connection connection = connector.getConnection();
try {
PreparedStatement statement = connection.prepareStatement(REMOVE_FROM_LIST);
statement.setInt(1, (Integer) bodyMap.get("ProductID"));
statement.setInt(2, (Integer) bodyMap.get("ListID"));
System.out.println(statement);
statement.executeUpdate();
connection.commit();
} finally {
connection.close();
}
return null;
}
}

View File

@ -13,4 +13,36 @@ public class ItemEntry {
addedDate = listRow.getObject(3, LocalDateTime.class); addedDate = listRow.getObject(3, LocalDateTime.class);
purchased = listRow.getBoolean(4); purchased = listRow.getBoolean(4);
} }
public Integer getProductID() {
return productID;
}
public void setProductID(Integer productID) {
this.productID = productID;
}
public Integer getQuantity() {
return quantity;
}
public void setQuantity(Integer quantity) {
this.quantity = quantity;
}
public LocalDateTime getAddedDate() {
return addedDate;
}
public void setAddedDate(LocalDateTime addedDate) {
this.addedDate = addedDate;
}
public Boolean getPurchased() {
return purchased;
}
public void setPurchased(Boolean purchased) {
this.purchased = purchased;
}
} }

View File

@ -1,18 +1,60 @@
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList;
public class List { public class List {
Integer itemID; Integer itemID;
String name; String name;
String owner; String owner;
LocalDateTime lastUpdated; LocalDateTime lastUpdated;
ArrayList<ItemEntry> entries;
public List(ResultSet listRow) throws SQLException { public List(ResultSet listRow) throws SQLException {
itemID = listRow.getInt(1); itemID = listRow.getInt(1);
name = listRow.getString(2); name = listRow.getString(2);
owner = listRow.getString(3); owner = listRow.getString(3);
lastUpdated = listRow.getObject(8, LocalDateTime.class); lastUpdated = listRow.getObject(4, LocalDateTime.class);
entries = new ArrayList<>();
} }
public void addItemEntry(ItemEntry entry) {
entries.add(entry);
}
public ItemEntry[] getEntries() {
return entries.toArray(new ItemEntry[entries.size()]);
}
public Integer getItemID() {
return itemID;
}
public void setItemID(Integer itemID) {
this.itemID = itemID;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getOwner() {
return owner;
}
public void setOwner(String owner) {
this.owner = owner;
}
public LocalDateTime getLastUpdated() {
return lastUpdated;
}
public void setLastUpdated(LocalDateTime lastUpdated) {
this.lastUpdated = lastUpdated;
}
} }

View File

@ -4,6 +4,7 @@ import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@ -12,6 +13,8 @@ public class ListGetter implements CallHandler{
private final String cognitoID; private final String cognitoID;
private final String GET_LIST = "SELECT * FROM List WHERE listID = ?;"; private final String GET_LIST = "SELECT * FROM List WHERE listID = ?;";
private final String GET_LISTS = "SELECT listID FROM List WHERE owner = ?;";
private final String GET_ENTRIES = "SELECT * FROM ListProduct WHERE listID = ?;";
public ListGetter(DBConnector connector, String cognitoID) { public ListGetter(DBConnector connector, String cognitoID) {
this.connector = connector; this.connector = connector;
@ -21,17 +24,33 @@ public class ListGetter implements CallHandler{
@Override @Override
public Object conductAction(Map<String, Object> bodyMap, HashMap<String, String> queryMap, String cognitoID) throws SQLException { public Object conductAction(Map<String, Object> bodyMap, HashMap<String, String> queryMap, String cognitoID) throws SQLException {
Connection connection = connector.getConnection(); Connection connection = connector.getConnection();
Integer id = Integer.parseInt(queryMap.get("id"));
try { try {
PreparedStatement statement = connection.prepareStatement(GET_LIST); if (id == -1) {
statement.setInt(1, Integer.parseInt(queryMap.get("id"))); PreparedStatement getLists = connection.prepareStatement(GET_LISTS);
System.out.println(statement); getLists.setString(1, cognitoID);
ResultSet queryResults = statement.executeQuery(); ResultSet getListsResults = getLists.executeQuery();
queryResults.first(); ArrayList<Integer> listIds = new ArrayList<>();
System.out.println(queryResults); while (getListsResults.next()) {
String returnValue; listIds.add(getListsResults.getInt(1));
List retrievedItem = new List(queryResults); }
System.out.println(retrievedItem); return listIds;
return retrievedItem; }
PreparedStatement getList = connection.prepareStatement(GET_LIST);
getList.setInt(1, id);
System.out.println(getList);
ResultSet getListResults = getList.executeQuery();
getListResults.first();
System.out.println(getListResults);
List retrievedList = new List(getListResults);
System.out.println(retrievedList);
PreparedStatement getListEntries = connection.prepareStatement(GET_ENTRIES);
getListEntries.setInt(1, id);
ResultSet getEntryResults = getListEntries.executeQuery();
while (getEntryResults.next()) {
retrievedList.addItemEntry(new ItemEntry(getEntryResults));
}
return retrievedList;
} finally { } finally {
connection.close(); connection.close();
} }

View File

@ -28,6 +28,12 @@ public class Requestor {
getObject(id, classType, receiver, null); getObject(id, classType, receiver, null);
} }
public <T> void getListOfIds(Class<T> ofType, Receiver<Integer[]> successHandler, RequestErrorHandler failureHandler) {
String getURL = DEV_BASEURL + "/" + ofType.getSimpleName() + "?list=-1";
Request postRequest = buildBaseRequest(getURL, "GET", null);
launchCall(postRequest, successHandler, Integer[].class, failureHandler);
}
public <T> void getObject(String id, Class<T> classType, Receiver<T> successHandler, RequestErrorHandler failureHandler) { public <T> void getObject(String id, Class<T> classType, Receiver<T> successHandler, RequestErrorHandler failureHandler) {
String getURL = DEV_BASEURL + "/" + classType.getSimpleName() + "?id=" + id; String getURL = DEV_BASEURL + "/" + classType.getSimpleName() + "?id=" + id;
Request postRequest = buildBaseRequest(getURL, "GET", null); Request postRequest = buildBaseRequest(getURL, "GET", null);

View File

@ -34,6 +34,6 @@ public class SynchronousReceiver<T> implements Requestor.Receiver<T>, Requestor.
@Override @Override
public void acceptError(IOException error) { public void acceptError(IOException error) {
waiting = false; waiting = false;
this.error = error this.error = error;
} }
} }