Fixed merge conflict in List.java

This commit is contained in:
Adam Ding
2020-12-01 01:46:22 -05:00
38 changed files with 973 additions and 269 deletions

View File

@@ -1,16 +1,57 @@
package com.example.listify.data;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
public class ListShare {
Integer listID;
String shareWithEmail;
Integer permissionLevel;
Integer uiPosition;
ArrayList<ListShare> other;
public ListShare(ResultSet listRow) throws SQLException {
public ListShare(ResultSet listRow, String shareWithEmail) throws SQLException {
this.listID = listRow.getInt("listID");
this.shareWithEmail = listRow.getString("userID");
this.shareWithEmail = shareWithEmail;
this.permissionLevel = listRow.getInt("permissionLevel");
this.uiPosition = listRow.getInt("uiPosition");
other = new ArrayList<>();
}
@Override
public String toString() {
return "ListShare{" +
"listID=" + listID +
", shareWithEmail='" + shareWithEmail + '\'' +
", permissionLevel=" + permissionLevel +
", uiPosition=" + uiPosition +
", other=" + other +
'}';
}
public Integer getPermissionLevel() {
return permissionLevel;
}
public void setPermissionLevel(Integer permissionLevel) {
this.permissionLevel = permissionLevel;
}
public Integer getUiPosition() {
return uiPosition;
}
public void setUiPosition(Integer uiPosition) {
this.uiPosition = uiPosition;
}
public ArrayList<ListShare> getOther() {
return other;
}
public void setOther(ArrayList<ListShare> other) {
this.other = other;
}
public Integer getListID() {
return listID;
}

View File

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

View File

@@ -1,65 +0,0 @@
import java.security.AccessControlException;
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 ListShareDeleter implements CallHandler {
private final Connection connection;
private final String cognitoID;
private final String GET_LIST_ACCESS = "SELECT * FROM List WHERE (owner = ? AND listID = ?);";
private final String REMOVE_SHAREE = "DELETE FROM ListSharee WHERE listID = ? AND user = ?;";
public ListShareDeleter(Connection connection, String cognitoID) {
this.connection = connection;
this.cognitoID = cognitoID;
}
@Override
public Object conductAction(Map<String, Object> bodyMap, HashMap<String, String> queryMap, String cognitoID) throws SQLException {
Integer listID = Integer.parseInt(queryMap.get("id"));
InvokeRequest invokeRequest = new InvokeRequest();
invokeRequest.setFunctionName("UserGET");
invokeRequest.setPayload("{" +
" \"body\": {" +
" \"emailToCheck\": \"" + bodyMap.get("shareWithEmail").toString() + "\"" +
" }," +
" \"params\": {" +
" \"querystring\": {" +
" }" +
" }," +
" \"context\": {" +
" \"sub\": \"not used\"" +
" }" +
"}");
InvokeResult invokeResult = AWSLambdaClientBuilder.defaultClient().invoke(invokeRequest);
String shareeID = new String(invokeResult.getPayload().array()).replace("\"", "");
//Ensure that the user who is unsharing a list is the owner of that list
PreparedStatement accessCheck = connection.prepareStatement(GET_LIST_ACCESS);
accessCheck.setString(1, cognitoID);
accessCheck.setInt(2, listID);
ResultSet userLists = accessCheck.executeQuery();
//User does not own the list; unshare attempt fails
if (!userLists.next()) {
throw new AccessControlException("User does not have access to list");
}
//Unshare the list with the specified sharee
PreparedStatement unshareList = connection.prepareStatement(REMOVE_SHAREE);
unshareList.setInt(1, listID);
unshareList.setInt(2, shareeID);
cleanAccess.executeUpdate();
connection.commit();
return null;
}
}

View File

@@ -1,9 +1,14 @@
import com.amazonaws.services.lambda.AWSLambdaClientBuilder;
import com.amazonaws.services.lambda.model.InvokeRequest;
import com.amazonaws.services.lambda.model.InvokeResult;
import com.google.gson.Gson;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.InputMismatchException;
import java.util.Map;
public class ListShareGetter implements CallHandler{
@@ -21,18 +26,67 @@ public class ListShareGetter implements CallHandler{
public Object conductAction(Map<String, Object> bodyMap, HashMap<String, String> queryMap, String cognitoID) throws SQLException {
Integer listID = Integer.parseInt(queryMap.get("id"));
PreparedStatement getList = connection.prepareStatement(GET_LIST);
PreparedStatement getList = connection.prepareStatement(GET_LISTS);
getList.setInt(1, listID);
ResultSet getListResults = getList.executeQuery();
getListResults.first();
System.out.println(getListResults);
ListShare first = null;
while (getListResults.next() && first == null) {
InvokeRequest invokeRequest = new InvokeRequest();
invokeRequest.setFunctionName("UserGET");
invokeRequest.setPayload("{" +
" \"body\": {" +
" }," +
" \"params\": {" +
" \"querystring\": {" +
" \"id\": \"" + getListResults.getString("userID") + "\"" +
" }" +
" }," +
" \"context\": {" +
" \"sub\": \"not used\"" +
" }" +
"}");
InvokeResult invokeResult = AWSLambdaClientBuilder.defaultClient().invoke(invokeRequest);
if (invokeResult.getStatusCode() != 200) {
throw new InputMismatchException("Could not find specified user to share with");
}
String shareWithEmail = new Gson().fromJson(new String(invokeResult.getPayload().array()), User.class).email;
first = new ListShare(getListResults, shareWithEmail);
if (first.permissionLevel == 0 || first.permissionLevel == 1) {
first = null;
}
}
//ListShare object to hold the data values of the first row retrived
ListShare first = new ListShare(getListResults);
//Insert the ListShare objects to hold the data of the remaining rows into first's ListShare list
while (getListResults.next()) {
first.addtoList(new ListShare(getListResults));
InvokeRequest invokeRequest = new InvokeRequest();
invokeRequest.setFunctionName("UserGET");
invokeRequest.setPayload("{" +
" \"body\": {" +
" }," +
" \"params\": {" +
" \"querystring\": {" +
" \"id\": \"" + getListResults.getString("userID") + "\"" +
" }" +
" }," +
" \"context\": {" +
" \"sub\": \"not used\"" +
" }" +
"}");
InvokeResult invokeResult = AWSLambdaClientBuilder.defaultClient().invoke(invokeRequest);
if (invokeResult.getStatusCode() != 200) {
throw new InputMismatchException("Could not find specified user to share with");
}
String shareWithEmail = new Gson().fromJson(new String(invokeResult.getPayload().array()), User.class).email;
ListShare newShare = new ListShare(getListResults, shareWithEmail);
System.out.println(newShare);
if (newShare.permissionLevel != 0 && newShare.permissionLevel != 1) {
first.addtoList(newShare);
}
}
return first;

View File

@@ -1,6 +1,7 @@
import com.amazonaws.services.lambda.AWSLambdaClientBuilder;
import com.amazonaws.services.lambda.model.InvokeRequest;
import com.amazonaws.services.lambda.model.InvokeResult;
import com.google.gson.Gson;
import java.security.AccessControlException;
import java.sql.Connection;
@@ -56,7 +57,7 @@ public class ListSharer implements CallHandler {
if (invokeResult.getStatusCode() != 200) {
throw new InputMismatchException("Could not find specified user to share with");
}
String shareWithSub = new String(invokeResult.getPayload().array()).replace("\"", "");
String shareWithSub = new Gson().fromJson(new String(invokeResult.getPayload().array()), User.class).cognitoID;
// checkAccess.setString(2, shareWithSub);
// checkAccessRS = checkAccess.executeQuery();
// if (checkAccessRS.next()) {