Skip to content

Commit

Permalink
Stash: including facet ids to addDataverse endpoint WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
GPortas committed Jun 21, 2024
1 parent 3dd6355 commit 1cc48b7
Showing 1 changed file with 24 additions and 11 deletions.
35 changes: 24 additions & 11 deletions src/main/java/edu/harvard/iq/dataverse/api/Dataverses.java
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,9 @@ public Response addDataverse(@Context ContainerRequestContext crc, String body,
JsonArray inputLevels = newDataverseJson.getJsonArray("inputLevels");
List<DataverseFieldTypeInputLevel> newInputLevels = inputLevels != null ? parseInputLevels(inputLevels, newDataverse) : null;

JsonArray facetIds = newDataverseJson.getJsonArray("facetIds");
List<DatasetFieldType> facetList = facetIds != null ? parseFacets(facetIds) : null;

if (!parentIdtf.isEmpty()) {
Dataverse owner = findDataverseOrDie(parentIdtf);
newDataverse.setOwner(owner);
Expand All @@ -151,7 +154,7 @@ public Response addDataverse(@Context ContainerRequestContext crc, String body,
}

AuthenticatedUser u = getRequestAuthenticatedUserOrDie(crc);
newDataverse = execCommand(new CreateDataverseCommand(newDataverse, createDataverseRequest(u), null, newInputLevels));
newDataverse = execCommand(new CreateDataverseCommand(newDataverse, createDataverseRequest(u), facetList, newInputLevels));
return created("/dataverses/" + newDataverse.getAlias(), json(newDataverse));
} catch (WrappedResponse ww) {

Expand Down Expand Up @@ -673,6 +676,20 @@ private List<DataverseFieldTypeInputLevel> parseInputLevels(JsonArray inputLevel
return newInputLevels;
}

private List<DatasetFieldType> parseFacets(JsonArray facetsArray) throws WrappedResponse {
List<DatasetFieldType> facets = new LinkedList<>();
for (JsonString facetId : facetsArray.getValuesAs(JsonString.class)) {
DatasetFieldType dsfType = findDatasetFieldType(facetId.getString());
if (dsfType == null) {
throw new WrappedResponse(badRequest("Can't find dataset field type '" + facetId + "'"));
} else if (!dsfType.isFacetable()) {
throw new WrappedResponse(badRequest("Dataset field type '" + facetId + "' is not facetable"));
}
facets.add(dsfType);
}
return facets;
}

@DELETE
@AuthRequired
@Path("{linkingDataverseId}/deleteLink/{linkedDataverseId}")
Expand Down Expand Up @@ -921,16 +938,12 @@ public Response deleteFeaturedCollections(@Context ContainerRequestContext crc,
* (judging by the UI). This triggers a 500 when '-d @foo.json' is used.
*/
public Response setFacets(@Context ContainerRequestContext crc, @PathParam("identifier") String dvIdtf, String facetIds) {

List<DatasetFieldType> facets = new LinkedList<>();
for (JsonString facetId : Util.asJsonArray(facetIds).getValuesAs(JsonString.class)) {
DatasetFieldType dsfType = findDatasetFieldType(facetId.getString());
if (dsfType == null) {
return error(Response.Status.BAD_REQUEST, "Can't find dataset field type '" + facetId + "'");
} else if (!dsfType.isFacetable()) {
return error(Response.Status.BAD_REQUEST, "Dataset field type '" + facetId + "' is not facetable");
}
facets.add(dsfType);
JsonArray jsonArray = Util.asJsonArray(facetIds);
List<DatasetFieldType> facets;
try {
facets = parseFacets(jsonArray);
} catch (WrappedResponse e) {
return e.getResponse();
}

try {
Expand Down

0 comments on commit 1cc48b7

Please sign in to comment.