diff --git a/Lambdas/Lists/Item/src/Item.java b/Lambdas/Lists/Item/src/Item.java index dcdbdd6..bfa12a1 100644 --- a/Lambdas/Lists/Item/src/Item.java +++ b/Lambdas/Lists/Item/src/Item.java @@ -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; } diff --git a/Lambdas/Lists/ItemSearch/src/ItemSearch.java b/Lambdas/Lists/ItemSearch/src/ItemSearch.java new file mode 100644 index 0000000..17b701a --- /dev/null +++ b/Lambdas/Lists/ItemSearch/src/ItemSearch.java @@ -0,0 +1,29 @@ +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; + +public class ItemSearch { + ArrayList 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 getResults() { + return results; + } + + public void setResults(ArrayList results) { + this.results = results; + } +} diff --git a/Lambdas/Lists/ItemSearch/src/ItemSearchGET.java b/Lambdas/Lists/ItemSearch/src/ItemSearchGET.java new file mode 100644 index 0000000..14e146d --- /dev/null +++ b/Lambdas/Lists/ItemSearch/src/ItemSearchGET.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 ItemSearchGET implements RequestHandler, Object> { + + public Object handleRequest(Map inputMap, Context unfilled) { + return BasicHandler.handleRequest(inputMap, unfilled, ItemSearcher.class); + } +} diff --git a/Lambdas/Lists/ItemSearch/src/ItemSearcher.java b/Lambdas/Lists/ItemSearch/src/ItemSearcher.java new file mode 100644 index 0000000..29bc78c --- /dev/null +++ b/Lambdas/Lists/ItemSearch/src/ItemSearcher.java @@ -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 body, HashMap 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; + } + } +} diff --git a/Lambdas/Lists/List/src/ItemEntry.java b/Lambdas/Lists/List/src/ItemEntry.java index f03e910..506be09 100644 --- a/Lambdas/Lists/List/src/ItemEntry.java +++ b/Lambdas/Lists/List/src/ItemEntry.java @@ -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; } diff --git a/Lambdas/Lists/ListEntry/src/ListEntryAdder.java b/Lambdas/Lists/ListEntry/src/ListEntryAdder.java index 2145cd5..6154025 100644 --- a/Lambdas/Lists/ListEntry/src/ListEntryAdder.java +++ b/Lambdas/Lists/ListEntry/src/ListEntryAdder.java @@ -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(); diff --git a/Listify/app/src/main/java/com/example/listify/MainActivity.java b/Listify/app/src/main/java/com/example/listify/MainActivity.java index 5590ccd..c7b072d 100644 --- a/Listify/app/src/main/java/com/example/listify/MainActivity.java +++ b/Listify/app/src/main/java/com/example/listify/MainActivity.java @@ -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 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 listIdsReceiver = new SynchronousReceiver<>(); requestor.getListOfIds(List.class, listIdsReceiver, listIdsReceiver); + SynchronousReceiver 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(); } diff --git a/Listify/app/src/main/java/com/example/listify/data/Item.java b/Listify/app/src/main/java/com/example/listify/data/Item.java index 07662b5..12fbbb8 100644 --- a/Listify/app/src/main/java/com/example/listify/data/Item.java +++ b/Listify/app/src/main/java/com/example/listify/data/Item.java @@ -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; } diff --git a/Listify/app/src/main/java/com/example/listify/data/ItemSearch.java b/Listify/app/src/main/java/com/example/listify/data/ItemSearch.java new file mode 100644 index 0000000..8d7874d --- /dev/null +++ b/Listify/app/src/main/java/com/example/listify/data/ItemSearch.java @@ -0,0 +1,27 @@ +package com.example.listify.data; + +import java.util.ArrayList; + +public class ItemSearch { + ArrayList results; + + public ItemSearch(ArrayList results) { + this.results = results; + } + + @Override + public String toString() { + return "ItemSearch{" + + "results=" + results + + '}'; + } + + public ArrayList getResults() { + return results; + } + + public void setResults(ArrayList results) { + this.results = results; + } +} + diff --git a/Listify/app/src/main/java/com/example/listify/data/ListEntry.java b/Listify/app/src/main/java/com/example/listify/data/ListEntry.java index 404f649..e482079 100644 --- a/Listify/app/src/main/java/com/example/listify/data/ListEntry.java +++ b/Listify/app/src/main/java/com/example/listify/data/ListEntry.java @@ -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; }