Skip to content

Commit

Permalink
TEST DO NOT MERGE
Browse files Browse the repository at this point in the history
  • Loading branch information
Luke-Sikina committed Jun 27, 2023
1 parent 8b5b4b3 commit eaedc21
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 28 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package edu.harvard.dbmi.avillach.data.entity;

import java.io.*;
import java.nio.charset.StandardCharsets;
import java.sql.Date;
import java.util.Optional;
import java.util.UUID;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;

Expand All @@ -12,7 +15,6 @@
@Entity(name = "query")
public class Query extends BaseEntity {

//TODO may not need these two things
private Date startTime;

private Date readyTime;
Expand Down Expand Up @@ -80,18 +82,19 @@ public String getQuery() {
return "";
}

String outStr = "";
try (GZIPInputStream gis = new GZIPInputStream(new ByteArrayInputStream(this.query));
BufferedReader bf = new BufferedReader(new InputStreamReader(gis, "UTF-8"));){

StringBuilder outStr = new StringBuilder();
try (
GZIPInputStream gis = new GZIPInputStream(new ByteArrayInputStream(this.query));
BufferedReader bf = new BufferedReader(new InputStreamReader(gis, StandardCharsets.UTF_8))
){
String line;
while ((line=bf.readLine())!=null) {
outStr += line;
while ((line = bf.readLine()) != null) {
outStr.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
return outStr;
return outStr.toString();
}

public void setQuery(String queryStr) {
Expand All @@ -102,7 +105,7 @@ public void setQuery(String queryStr) {

try (ByteArrayOutputStream obj=new ByteArrayOutputStream();
GZIPOutputStream gzip = new GZIPOutputStream(obj);){
gzip.write(queryStr.getBytes("UTF-8"));
gzip.write(queryStr.getBytes(StandardCharsets.UTF_8));
gzip.close();
this.query = obj.toByteArray();
} catch (IOException e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,8 +84,8 @@ public T getById(K id){
* @return
*/
public List<T> getByColumn(String columnName, Object value){
CriteriaQuery query = query();
Root root = root(query);
CriteriaQuery<T> query = query();
Root<T> root = root(query);
return getByColumns(query, root, eq(cb(),root,columnName,value));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@ public class PicsureQueryService {
public static final String QUERY_RESULT_METADATA_FIELD = "queryResultMetadata";
private static final String QUERY_JSON_FIELD = "queryJson";

private static final String COMMON_AREA_ID = "commonAreaId";


private final Logger logger = LoggerFactory.getLogger(PicsureQueryService.class);

private final static ObjectMapper mapper = new ObjectMapper();
Expand Down Expand Up @@ -62,7 +65,8 @@ public QueryStatus query(QueryRequest dataQueryRequest, HttpHeaders headers) {

QueryStatus results = resourceWebClient.query(resource.getResourceRSPath(), dataQueryRequest);

Query queryEntity = copyQuery(dataQueryRequest, resource, results);
String commonAreaId = dataQueryRequest.getResourceCredentials().get(COMMON_AREA_ID);
Query queryEntity = copyQuery(dataQueryRequest, resource, results, commonAreaId);
queryRepo.persist(queryEntity);

logger.debug("PicsureQueryService() persisted queryEntity with id: " + queryEntity.getUuid());
Expand Down Expand Up @@ -192,19 +196,12 @@ public Response querySync(QueryRequest queryRequest, HttpHeaders headers) {
Query queryEntity = new Query();
queryEntity.setResource(resource);
queryEntity.setStartTime(new Date(Calendar.getInstance().getTime().getTime()));
extractQueryJson(queryRequest)
.ifPresentOrElse(
queryEntity::setQuery,
() -> { throw new ProtocolException(ProtocolException.INCORRECTLY_FORMATTED_REQUEST); }
);


String queryJson = null;
if( queryRequest.getQuery() != null) {
try {
ObjectMapper mapper = new ObjectMapper();
queryJson = mapper.writeValueAsString( queryRequest);
} catch (JsonProcessingException e) {
throw new ProtocolException(ProtocolException.INCORRECTLY_FORMATTED_REQUEST);
}
}

queryEntity.setQuery(queryJson);
queryRepo.persist(queryEntity);
queryRequest.getResourceCredentials().put(ResourceWebClient.BEARER_TOKEN_KEY, resource.getToken());

Expand Down Expand Up @@ -233,7 +230,19 @@ public Response querySync(QueryRequest queryRequest, HttpHeaders headers) {
return syncResponse;
}

/**
private Optional<String> extractQueryJson(QueryRequest queryRequest) {
if( queryRequest.getQuery() != null) {
try {
ObjectMapper mapper = new ObjectMapper();
return Optional.of(mapper.writeValueAsString(queryRequest));
} catch (JsonProcessingException e) {
return Optional.empty();
}
}
return Optional.of("");
}

/**
* @param queryId The UUID of the query to get metadata about
* @return a QueryStatus object containing the metadata stored about the given query
*/
Expand Down Expand Up @@ -280,17 +289,32 @@ public QueryStatus institutionalQuery(QueryRequest dataQueryRequest, HttpHeaders
Resource resource = verifyQueryRequest(dataQueryRequest, headers);
dataQueryRequest.getResourceCredentials().put(ResourceWebClient.BEARER_TOKEN_KEY, resource.getToken());

// Start by persisting the basic query. We do this to generate the common area ID
Query initialQuery = new Query();
initialQuery.setResource(resource);
initialQuery.setStartTime(new Date(Calendar.getInstance().getTime().getTime()));
extractQueryJson(dataQueryRequest)
.ifPresentOrElse(
initialQuery::setQuery,
() -> { throw new ProtocolException(ProtocolException.INCORRECTLY_FORMATTED_REQUEST); }
);

queryRepo.persist(initialQuery);
dataQueryRequest.getResourceCredentials().put(COMMON_AREA_ID, initialQuery.getUuid().toString());


QueryStatus response = resourceWebClient.query(resource.getResourceRSPath(), dataQueryRequest);
Query queryEntity = copyQuery(dataQueryRequest, resource, response);
Query queryEntity = copyQuery(dataQueryRequest, resource, response, null);

queryRepo.persist(queryEntity);
// we don't want the user to see the common area ID for now, but this could be useful later
// for editing the query
response.getResultMetadata().put("commonAreaId", queryEntity.getUuid().toString());
response.getResultMetadata().put(COMMON_AREA_ID, queryEntity.getUuid().toString());

return response;
}

private Query copyQuery(QueryRequest dataQueryRequest, Resource resource, QueryStatus response) {
private Query copyQuery(QueryRequest dataQueryRequest, Resource resource, QueryStatus response, String commonId) {
Query queryEntity = new Query();
queryEntity.setResourceResultId(response.getResourceResultId());
queryEntity.setResource(resource);
Expand All @@ -307,6 +331,10 @@ private Query copyQuery(QueryRequest dataQueryRequest, Resource resource, QueryS
}
}

if (commonId != null && !commonId.isEmpty() && response.getResultMetadata() != null) {
response.getResultMetadata().put(COMMON_AREA_ID, commonId);
}

queryEntity.setQuery(queryJson);

if (response.getResultMetadata() != null) {
Expand Down

0 comments on commit eaedc21

Please sign in to comment.