diff --git a/Lambdas/Lists/ItemSearch/src/ItemSearcher.java b/Lambdas/Lists/ItemSearch/src/ItemSearcher.java index eef6cc4..e24ebdf 100644 --- a/Lambdas/Lists/ItemSearch/src/ItemSearcher.java +++ b/Lambdas/Lists/ItemSearch/src/ItemSearcher.java @@ -29,10 +29,18 @@ public class ItemSearcher implements CallHandler { ItemSearch searchResultsObject = new ItemSearch(searchResults); System.out.println(searchResultsObject); InvokeRequest invokeRequest = new InvokeRequest(); - invokeRequest.setFunctionName("SearchHistoryUpdate"); + invokeRequest.setFunctionName("SearchHistoryPOST"); invokeRequest.setPayload("{" + - " \"newSearch\": \"" + queryParams.get("id") + "\"," + - " \"cognitoID\": \""+ cognitoID + "\"" + + " \"body\": {" + + " \"searchTerm\": \"" + queryParams.get("id") + "\"" + + " }," + + " \"params\": {" + + " \"querystring\": {" + + " }" + + " }," + + " \"context\": {" + + " \"sub\": \"" + cognitoID + "\"" + + " }" + "}"); invokeRequest.setInvocationType("Event"); System.out.println(invokeRequest); diff --git a/Lambdas/Lists/SearchHistory/src/SearchHistory.java b/Lambdas/Lists/SearchHistory/src/SearchHistory.java index b29e10d..f319150 100644 --- a/Lambdas/Lists/SearchHistory/src/SearchHistory.java +++ b/Lambdas/Lists/SearchHistory/src/SearchHistory.java @@ -15,7 +15,11 @@ public class SearchHistory implements Serializable { } public SearchHistory(ResultSet row) throws SQLException { - this.searches = (ArrayList) row.getObject("historyObject"); + this.searches = new ArrayList<>(); + row.beforeFirst(); + while (row.next()) { + this.searches.add(row.getString("search")); + } } public ArrayList getSearches() { diff --git a/Lambdas/Lists/SearchHistory/src/SearchHistoryPUT.java b/Lambdas/Lists/SearchHistory/src/SearchHistoryPOST.java similarity index 72% rename from Lambdas/Lists/SearchHistory/src/SearchHistoryPUT.java rename to Lambdas/Lists/SearchHistory/src/SearchHistoryPOST.java index 28d5019..6b05141 100644 --- a/Lambdas/Lists/SearchHistory/src/SearchHistoryPUT.java +++ b/Lambdas/Lists/SearchHistory/src/SearchHistoryPOST.java @@ -3,9 +3,9 @@ import com.amazonaws.services.lambda.runtime.RequestHandler; import java.util.Map; -public class SearchHistoryPUT implements RequestHandler, Object> { +public class SearchHistoryPOST implements RequestHandler, Object> { public Object handleRequest(Map inputMap, Context unfilled) { - return BasicHandler.handleRequest(inputMap, unfilled, SearchHistoryPutter.class); + return BasicHandler.handleRequest(inputMap, unfilled, SearchHistoryUpdater.class); } } diff --git a/Lambdas/Lists/SearchHistory/src/SearchHistoryUpdate.java b/Lambdas/Lists/SearchHistory/src/SearchHistoryUpdate.java deleted file mode 100644 index 70671aa..0000000 --- a/Lambdas/Lists/SearchHistory/src/SearchHistoryUpdate.java +++ /dev/null @@ -1,56 +0,0 @@ -import com.amazonaws.services.lambda.AWSLambdaClientBuilder; -import com.amazonaws.services.lambda.model.InvokeRequest; -import com.amazonaws.services.lambda.model.InvokeResult; -import com.amazonaws.services.lambda.runtime.Context; -import com.amazonaws.services.lambda.runtime.RequestHandler; -import com.google.gson.Gson; - -import java.util.InputMismatchException; -import java.util.Map; - -public class SearchHistoryUpdate implements RequestHandler, Object> { - - public Object handleRequest(Map inputMap, Context unfilled) { - String cognitoID = (String) inputMap.get("cognitoID"); - System.out.println(cognitoID); - String newSearch = (String) inputMap.get("newSearch"); - System.out.println(newSearch); - InvokeRequest invokeRequest = new InvokeRequest(); - invokeRequest.setFunctionName("SearchHistoryGET"); - invokeRequest.setPayload("{" + - " \"body\": {" + - " }," + - " \"params\": {" + - " \"querystring\": {" + - " }" + - " }," + - " \"context\": {" + - " \"sub\": \""+ cognitoID + "\"" + - " }" + - "}"); - System.out.println(invokeRequest); - InvokeResult searchHistoryResult = AWSLambdaClientBuilder.defaultClient().invoke(invokeRequest); - System.out.println(searchHistoryResult); - if (searchHistoryResult.getStatusCode() != 200) { - throw new InputMismatchException("Could not find a search history for the specified usr"); - } - System.out.println(new String(searchHistoryResult.getPayload().array())); - SearchHistory priorSearchHistory = new Gson().fromJson(new String(searchHistoryResult.getPayload().array()), SearchHistory.class); - priorSearchHistory.addSearch(newSearch); - invokeRequest.setFunctionName("SearchHistoryPUT"); - System.out.println("New search history: " + new Gson().toJson(priorSearchHistory)); - invokeRequest.setPayload("{" + - " \"body\":" + new Gson().toJson(priorSearchHistory) + "," + - " \"params\": {" + - " \"querystring\": {" + - " }" + - " }," + - " \"context\": {" + - " \"sub\": \""+ cognitoID + "\"" + - " }" + - "}"); - invokeRequest.setInvocationType("Event"); - System.out.println(invokeRequest); - AWSLambdaClientBuilder.defaultClient().invoke(invokeRequest); - return null; } -} diff --git a/Lambdas/Lists/SearchHistory/src/SearchHistoryPutter.java b/Lambdas/Lists/SearchHistory/src/SearchHistoryUpdater.java similarity index 53% rename from Lambdas/Lists/SearchHistory/src/SearchHistoryPutter.java rename to Lambdas/Lists/SearchHistory/src/SearchHistoryUpdater.java index a18a2ff..625c6db 100644 --- a/Lambdas/Lists/SearchHistory/src/SearchHistoryPutter.java +++ b/Lambdas/Lists/SearchHistory/src/SearchHistoryUpdater.java @@ -1,31 +1,25 @@ -import com.google.gson.Gson; - import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.HashMap; import java.util.Map; -public class SearchHistoryPutter implements CallHandler { +public class SearchHistoryUpdater implements CallHandler { private Connection connection; private String cognitoID; - public SearchHistoryPutter(Connection connection, String cognitoID) { + public SearchHistoryUpdater(Connection connection, String cognitoID) { this.connection = connection; this.cognitoID = cognitoID; } - final private String STORE_HISTORY = "REPLACE INTO SearchHistory(userID, historyObject) VALUES(?, ?);"; + final private String UPDATE_HISTORY = "INSERT INTO SearchHistory(userID, search) VALUES(?, ?);"; public Object conductAction(Map bodyMap, HashMap queryString, String cognitoID) throws SQLException { - final String searchHistoryJson = new Gson().toJson(bodyMap); - System.out.println(searchHistoryJson); - SearchHistory toStore = new Gson().fromJson(searchHistoryJson, SearchHistory.class); - System.out.println(toStore); - PreparedStatement store_history = connection.prepareStatement(STORE_HISTORY); + PreparedStatement store_history = connection.prepareStatement(UPDATE_HISTORY); store_history.setString(1, cognitoID); - store_history.setObject(2, toStore.searches); + store_history.setObject(2, bodyMap.get("searchTerm")); System.out.println(store_history); store_history.executeUpdate(); connection.commit(); 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 881ce02..ec0c89b 100644 --- a/Listify/app/src/main/java/com/example/listify/MainActivity.java +++ b/Listify/app/src/main/java/com/example/listify/MainActivity.java @@ -16,19 +16,15 @@ import androidx.navigation.Navigation; 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.example.listify.data.SearchHistory; import com.example.listify.ui.LoginPage; import com.google.android.material.navigation.NavigationView; import org.json.JSONException; import java.io.IOException; import java.time.Instant; -import java.util.Arrays; import java.util.Properties; -import java.util.Random; import static com.example.listify.SplashActivity.showSplash; @@ -108,7 +104,14 @@ public class MainActivity extends AppCompatActivity implements CreateListDialogF } Requestor requestor = new Requestor(authManager, configs.getProperty("apiKey")); - + SynchronousReceiver historyReceiver = new SynchronousReceiver<>(); + requestor.getObject("N/A", SearchHistory.class, historyReceiver, historyReceiver); + try { + System.out.println(historyReceiver.await()); + } catch (Exception e) { + e.printStackTrace(); + } + /* List testList = new List(-1, "New List", "user filled by lambda", Instant.now().toEpochMilli()); ListEntry entry = new ListEntry(1, 4, Math.abs(new Random().nextInt()), Instant.now().toEpochMilli(),false); @@ -139,6 +142,7 @@ public class MainActivity extends AppCompatActivity implements CreateListDialogF } catch (Exception receiverError) { receiverError.printStackTrace(); } + */ } //------------------------------------------------------------------------------------------// diff --git a/Listify/app/src/main/java/com/example/listify/data/SearchHistory.java b/Listify/app/src/main/java/com/example/listify/data/SearchHistory.java index dace88d..1d29594 100644 --- a/Listify/app/src/main/java/com/example/listify/data/SearchHistory.java +++ b/Listify/app/src/main/java/com/example/listify/data/SearchHistory.java @@ -20,4 +20,11 @@ public class SearchHistory { public void addSearch(String newSearch) { searches.add(newSearch); } + + @Override + public String toString() { + return "SearchHistory{" + + "searches=" + searches + + '}'; + } }