diff --git a/src/org/ohmage/domain/AccessRequest.java b/src/org/ohmage/domain/AccessRequest.java index 30b9a6fb..8c85fe3d 100644 --- a/src/org/ohmage/domain/AccessRequest.java +++ b/src/org/ohmage/domain/AccessRequest.java @@ -64,7 +64,7 @@ public class AccessRequest { private final String username; private final String emailAddress; private final Type requestType; - private final String requestContent; + private final JSONObject requestContent; private final Status requestStatus; private final DateTime creationTime; private final DateTime lastModifiedTime; @@ -164,7 +164,7 @@ public AccessRequest( final String id, final String username, final String emailAddress, - final String requestContent, + final JSONObject requestContent, final String requestType, final String status, final DateTime creationTime, @@ -309,7 +309,7 @@ public String getEmailAddress(){ * * @return the request content. */ - public String getContent(){ + public JSONObject getContent(){ return requestContent; } diff --git a/src/org/ohmage/query/IAccessRequestQueries.java b/src/org/ohmage/query/IAccessRequestQueries.java index 6571d557..2dcf3013 100644 --- a/src/org/ohmage/query/IAccessRequestQueries.java +++ b/src/org/ohmage/query/IAccessRequestQueries.java @@ -18,6 +18,7 @@ import java.util.Collection; import java.util.List; import org.joda.time.DateTime; +import org.json.JSONObject; import org.ohmage.domain.AccessRequest; import org.ohmage.exception.DataAccessException; import org.ohmage.exception.ServiceException; @@ -49,7 +50,7 @@ public void createAccessRequest( final String requestId, final String username, final String emailAddress, - final String requestContent, + final JSONObject requestContent, final String requestType, final String requestStatus) throws DataAccessException; @@ -206,7 +207,7 @@ List getAccessRequests(String requester, * @throws ServiceException Thrown if there is an error. */ void updateAccessRequest(String requestId, String emailAddress, - String requestContent, String requestType, String requestStatus, + JSONObject requestContent, String requestType, String requestStatus, Boolean updateUserPrivileges) throws DataAccessException; diff --git a/src/org/ohmage/query/impl/AccessRequestQueries.java b/src/org/ohmage/query/impl/AccessRequestQueries.java index 2d98eb52..78d20969 100644 --- a/src/org/ohmage/query/impl/AccessRequestQueries.java +++ b/src/org/ohmage/query/impl/AccessRequestQueries.java @@ -27,6 +27,8 @@ import org.apache.log4j.Logger; import org.joda.time.DateTime; +import org.json.JSONException; +import org.json.JSONObject; import org.ohmage.domain.AccessRequest; import org.ohmage.exception.DataAccessException; import org.ohmage.exception.DomainException; @@ -92,7 +94,7 @@ public void createAccessRequest( final String requestId, final String username, final String emailAddress, - final String requestContent, + final JSONObject requestContent, final String requestType, final String requestStatus) throws DataAccessException { @@ -108,12 +110,12 @@ public void createAccessRequest( // Insert the class. try { getJdbcTemplate().update(SQL_INSERT_REQUEST, - new Object[] { requestId, username, emailAddress, requestType, requestContent, requestStatus} ); + new Object[] { requestId, username, emailAddress, requestType, requestContent.toString(), requestStatus} ); } catch(org.springframework.dao.DataAccessException e) { transactionManager.rollback(status); throw new DataAccessException("Error while executing SQL '" + SQL_INSERT_REQUEST + "' with parameters: " + - requestId + ", " + username + ", " + emailAddress + ", " + requestContent + ", " + requestStatus, + requestId + ", " + username + ", " + emailAddress + ", " + requestContent.toString() + ", " + requestStatus, e); } @@ -408,11 +410,21 @@ public AccessRequest mapRow( throws SQLException { try { + JSONObject requestContent = null; + try { + requestContent = new JSONObject(rs.getString("content")); + } + catch (JSONException e) { + throw new DomainException( + "Error parsing the request content.", + e); + } + return new AccessRequest( rs.getString("uuid"), rs.getString("username"), rs.getString("email_address"), - rs.getString("content"), + requestContent, rs.getString("type"), rs.getString("status"), new DateTime(rs.getTimestamp("creation_timestamp").getTime()), @@ -468,7 +480,7 @@ public AccessRequest getAccessRequest(final String requester, String requestId) * java.lang.String, java.lang.String, java.lang.String, java.lang.String ) */ @Override - public void updateAccessRequest(String requestId, String emailAddress, String requestContent, + public void updateAccessRequest(String requestId, String emailAddress, JSONObject requestContent, String requestType, String requestStatus, Boolean updateUserPrivileges) throws DataAccessException { @@ -493,7 +505,7 @@ public void updateAccessRequest(String requestId, String emailAddress, String re firstClause = false; } else sql.append(", content = ? "); - parameters.add(requestContent); + parameters.add(requestContent.toString()); } if (requestType != null) { diff --git a/src/org/ohmage/service/AccessRequestServices.java b/src/org/ohmage/service/AccessRequestServices.java index 4e09040b..55af0453 100644 --- a/src/org/ohmage/service/AccessRequestServices.java +++ b/src/org/ohmage/service/AccessRequestServices.java @@ -119,7 +119,7 @@ public void createAccessRequest( // Create a request with pending status userSetupRequestQueries.createAccessRequest(requestId, username, emailAddress, - requestContent.toString(), requestType, defaultStatus); + requestContent, requestType, defaultStatus); } @@ -483,7 +483,7 @@ public void updateAccessRequest( // update the request userSetupRequestQueries.updateAccessRequest(requestId, emailAddress, - (requestContent == null) ? null : requestContent.toString(), + (requestContent == null) ? null : requestContent, requestType, requestStatus, updateUserPrivileges); }