Merge pull request #38 from ClaytonWWilson/ClientLambdas

Item Search
This commit is contained in:
Nathan Merz 2020-10-06 21:55:37 -04:00 committed by GitHub
commit 0ef75e3461
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 124 additions and 25 deletions

View File

@ -1,7 +1,6 @@
import java.math.BigDecimal;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.LocalDateTime;
public class Item {
Integer productID;
@ -11,10 +10,10 @@ public class Item {
BigDecimal price;
String imageURL;
String department;
LocalDateTime retrievedDate;
long retrievedDate;
Integer fetchCounts;
Item(ResultSet itemRow) throws SQLException {
public Item(ResultSet itemRow) throws SQLException {
this.productID = itemRow.getInt(1);
System.out.println(this.productID);
this.chainID = itemRow.getInt(2);
@ -29,7 +28,7 @@ public class Item {
System.out.println(imageURL);
this.department = itemRow.getString(7);
System.out.println(department);
this.retrievedDate = itemRow.getObject(8, LocalDateTime.class);
this.retrievedDate = itemRow.getTimestamp(8).toInstant().toEpochMilli();
System.out.println(retrievedDate);
this.fetchCounts = itemRow.getInt(9);
System.out.println(fetchCounts);
@ -106,11 +105,11 @@ public class Item {
this.department = department;
}
public LocalDateTime getRetrievedDate() {
public long getRetrievedDate() {
return retrievedDate;
}
public void setRetrievedDate(LocalDateTime retrievedDate) {
public void setRetrievedDate(long retrievedDate) {
this.retrievedDate = retrievedDate;
}

View File

@ -0,0 +1,29 @@
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
public class ItemSearch {
ArrayList<Item> results;
ItemSearch(ResultSet searchResults) throws SQLException {
results = new ArrayList<>();
while (searchResults.next()) {
results.add(new Item(searchResults));
}
}
@Override
public String toString() {
return "ItemSearch{" +
"results=" + results +
'}';
}
public ArrayList<Item> getResults() {
return results;
}
public void setResults(ArrayList<Item> results) {
this.results = results;
}
}

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 ItemSearchGET implements RequestHandler<Map<String,Object>, Object> {
public Object handleRequest(Map<String, Object> inputMap, Context unfilled) {
return BasicHandler.handleRequest(inputMap, unfilled, ItemSearcher.class);
}
}

View File

@ -0,0 +1,32 @@
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
public class ItemSearcher implements CallHandler {
DBConnector connector;
String cognitoID;
private final String GET_ITEM_MATCHES = "SELECT * FROM Product WHERE description LIKE ?";
public ItemSearcher(DBConnector connector, String cognitoID) {
this.connector = connector;
this.cognitoID = cognitoID;
}
@Override
public Object conductAction(Map<String, Object> body, HashMap<String, String> queryParams, String s) throws SQLException {
try (Connection connection = connector.getConnection()) {
PreparedStatement getItemMatches = connection.prepareStatement(GET_ITEM_MATCHES);
getItemMatches.setString(1, "%" + queryParams.get("id") + "%");
System.out.println(getItemMatches);
ResultSet searchResults = getItemMatches.executeQuery();
ItemSearch searchResultsObject = new ItemSearch(searchResults);
System.out.println(searchResultsObject);
return searchResultsObject;
}
}
}

View File

@ -6,13 +6,13 @@ public class ItemEntry {
Integer listID;
Integer productID;
Integer quantity;
LocalDateTime addedDate;
long addedDate;
Boolean purchased;
public ItemEntry(Integer listID, ResultSet listRow) throws SQLException {
this.listID = listID;
productID = listRow.getInt(1);
quantity = listRow.getInt(2);
addedDate = listRow.getObject(3, LocalDateTime.class);
addedDate = listRow.getTimestamp(3).toInstant().toEpochMilli();
purchased = listRow.getBoolean(4);
}
@ -32,11 +32,11 @@ public class ItemEntry {
this.quantity = quantity;
}
public LocalDateTime getAddedDate() {
public long getAddedDate() {
return addedDate;
}
public void setAddedDate(LocalDateTime addedDate) {
public void setAddedDate(long addedDate) {
this.addedDate = addedDate;
}

View File

@ -1,6 +1,7 @@
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.time.Instant;
import java.time.ZoneOffset;
import java.util.HashMap;
@ -25,7 +26,7 @@ public class ListEntryAdder implements CallHandler {
statement.setInt(1, (Integer) bodyMap.get("productID"));
statement.setInt(2, (Integer) bodyMap.get("listID"));
statement.setInt(3, (Integer) bodyMap.get("quantity"));
statement.setObject(4, Instant.now().atZone(ZoneOffset.UTC).toLocalDateTime());
statement.setTimestamp(4, Timestamp.from(Instant.now()));
statement.setBoolean(5, (Boolean) bodyMap.get("purchased"));
System.out.println(statement);
statement.executeUpdate();

View File

@ -14,6 +14,7 @@ import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;
import com.amplifyframework.auth.AuthException;
import com.example.listify.data.Item;
import com.example.listify.data.ItemSearch;
import com.example.listify.data.List;
import com.example.listify.data.ListEntry;
import com.google.android.material.navigation.NavigationView;
@ -21,7 +22,6 @@ import org.json.JSONException;
import java.io.IOException;
import java.time.Instant;
import java.time.ZoneOffset;
import java.util.Arrays;
import java.util.Properties;
import java.util.Random;
@ -84,7 +84,7 @@ public class MainActivity extends AppCompatActivity {
//The name is the only part of this that is used, the rest is generated by the Lambda.
List testList = new List(-1, "New List", "user filled by lambda", Instant.now().toEpochMilli());
//Everything except addedDate is used for ItemEntry
ListEntry entry = new ListEntry(1, 1, new Random().nextInt(), Instant.now().atZone(ZoneOffset.UTC).toLocalDateTime(),false);
ListEntry entry = new ListEntry(1, 4, Math.abs(new Random().nextInt()), Instant.now().toEpochMilli(),false);
SynchronousReceiver<Integer> idReceiver = new SynchronousReceiver<>();
try {
requestor.postObject(testList, idReceiver, idReceiver);
@ -100,10 +100,13 @@ public class MainActivity extends AppCompatActivity {
requestor.getObject("39", List.class, listReceiver, listReceiver);
SynchronousReceiver<Integer[]> listIdsReceiver = new SynchronousReceiver<>();
requestor.getListOfIds(List.class, listIdsReceiver, listIdsReceiver);
SynchronousReceiver<ItemSearch> itemSearchReceiver = new SynchronousReceiver<>();
requestor.getObject("r", ItemSearch.class, itemSearchReceiver, itemSearchReceiver);
try {
System.out.println(itemReceiver.await());
System.out.println(listReceiver.await());
System.out.println(Arrays.toString(listIdsReceiver.await()));
System.out.println(itemSearchReceiver.await());
} catch (Exception receiverError) {
receiverError.printStackTrace();
}

View File

@ -1,7 +1,6 @@
package com.example.listify.data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
public class Item {
Integer productID;
@ -11,11 +10,11 @@ public class Item {
BigDecimal price;
String imageURL;
String department;
LocalDateTime retrievedDate;
long retrievedDate;
Integer fetchCounts;
public Item(Integer productID, Integer chainID, String upc, String description, BigDecimal price,
String imageURL, String department, LocalDateTime retrievedDate, Integer fetchCounts) {
String imageURL, String department, long retrievedDate, Integer fetchCounts) {
this.productID = productID;
this.chainID = chainID;
this.upc = upc;
@ -37,7 +36,7 @@ public class Item {
", price=" + price +
", imageURL='" + imageURL + '\'' +
", department='" + department + '\'' +
", retrievedDate=" + (retrievedDate == null ? null : retrievedDate) +
", retrievedDate=" + retrievedDate +
", fetchCounts=" + fetchCounts +
'}';
}
@ -98,11 +97,11 @@ public class Item {
this.department = department;
}
public LocalDateTime getRetrievedDate() {
public long getRetrievedDate() {
return retrievedDate;
}
public void setRetrievedDate(LocalDateTime retrievedDate) {
public void setRetrievedDate(long retrievedDate) {
this.retrievedDate = retrievedDate;
}

View File

@ -0,0 +1,27 @@
package com.example.listify.data;
import java.util.ArrayList;
public class ItemSearch {
ArrayList<Item> results;
public ItemSearch(ArrayList<Item> results) {
this.results = results;
}
@Override
public String toString() {
return "ItemSearch{" +
"results=" + results +
'}';
}
public ArrayList<Item> getResults() {
return results;
}
public void setResults(ArrayList<Item> results) {
this.results = results;
}
}

View File

@ -1,15 +1,13 @@
package com.example.listify.data;
import java.time.LocalDateTime;
public class ListEntry {
Integer listID;
Integer productID;
Integer quantity;
LocalDateTime addedDate;
long addedDate;
Boolean purchased;
public ListEntry(Integer listID, Integer productID, Integer quantity, LocalDateTime addedDate, Boolean purchased) {
public ListEntry(Integer listID, Integer productID, Integer quantity, long addedDate, Boolean purchased) {
this.listID = listID;
this.productID = productID;
this.quantity = quantity;
@ -52,11 +50,11 @@ public class ListEntry {
this.quantity = quantity;
}
public LocalDateTime getAddedDate() {
public long getAddedDate() {
return addedDate;
}
public void setAddedDate(LocalDateTime addedDate) {
public void setAddedDate(long addedDate) {
this.addedDate = addedDate;
}