Skip to content
Snippets Groups Projects
Commit b59387fa authored by Powers, Peter M.'s avatar Powers, Peter M.
Browse files

Merge branch 'endpoint-updates-542' into 'main'

Logic tree endpoint updates

Closes #542

See merge request !671
parents f8171c35 74becf87
No related branches found
No related tags found
2 merge requests!672Production Release | nshmp-haz,!671Logic tree endpoint updates
Pipeline #198652 passed
...@@ -5,7 +5,6 @@ ...@@ -5,7 +5,6 @@
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "nshmp-haz",
"version": "2.0.0", "version": "2.0.0",
"devDependencies": { "devDependencies": {
"markdownlint-cli": "^0.31.1", "markdownlint-cli": "^0.31.1",
......
...@@ -19,8 +19,8 @@ import io.swagger.v3.oas.annotations.tags.Tag; ...@@ -19,8 +19,8 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.inject.Inject; import jakarta.inject.Inject;
/** /**
* Micronaut web service controller for the GeoJSON features in the current * Micronaut web service controller for the GeoJSON features in the installed
* installed model. * model.
* *
* <p>See src/main/resources/application.yml nshmp-haz.model-path for installed * <p>See src/main/resources/application.yml nshmp-haz.model-path for installed
* model. * model.
...@@ -39,6 +39,13 @@ public class FeaturesController { ...@@ -39,6 +39,13 @@ public class FeaturesController {
@Inject @Inject
private NshmpMicronautServlet servlet; private NshmpMicronautServlet servlet;
/*
* Not sure we need metadata for this. Issue #542 describes the various groups
* that could be supported. However instead of 'all' one could consider just
* having no argument such that the root endpoint path would just return all
* features.
*/
@Operation( @Operation(
summary = "Source model logic tree listing", summary = "Source model logic tree listing",
description = "Returns the ID's of logic trees in the model", description = "Returns the ID's of logic trees in the model",
...@@ -50,6 +57,7 @@ public class FeaturesController { ...@@ -50,6 +57,7 @@ public class FeaturesController {
schema = @Schema( schema = @Schema(
implementation = MetadataResponse.class))) implementation = MetadataResponse.class)))
@Get @Get
@Deprecated
public HttpResponse<String> doGetMetadata(HttpRequest<?> http) { public HttpResponse<String> doGetMetadata(HttpRequest<?> http) {
try { try {
return FeaturesService.getMetadata(http); return FeaturesService.getMetadata(http);
...@@ -74,6 +82,7 @@ public class FeaturesController { ...@@ -74,6 +82,7 @@ public class FeaturesController {
content = @Content( content = @Content(
schema = @Schema(implementation = TreeResponse.class))) schema = @Schema(implementation = TreeResponse.class)))
@Get(uri = "/{id}") @Get(uri = "/{id}")
@Deprecated
public HttpResponse<String> doGetTree(HttpRequest<?> http, @PathVariable int id) { public HttpResponse<String> doGetTree(HttpRequest<?> http, @PathVariable int id) {
try { try {
return FeaturesService.getTree(http, id); return FeaturesService.getTree(http, id);
......
...@@ -26,6 +26,7 @@ public class FeaturesService { ...@@ -26,6 +26,7 @@ public class FeaturesService {
static final String NAME = "Model Features"; static final String NAME = "Model Features";
static final Logger LOG = LoggerFactory.getLogger(FeaturesService.class); static final Logger LOG = LoggerFactory.getLogger(FeaturesService.class);
@Deprecated
public static HttpResponse<String> getMetadata(HttpRequest<?> request) { public static HttpResponse<String> getMetadata(HttpRequest<?> request) {
var url = request.getUri().toString(); var url = request.getUri().toString();
var metadata = new Metadata(ServletUtil.model()); var metadata = new Metadata(ServletUtil.model());
...@@ -39,6 +40,7 @@ public class FeaturesService { ...@@ -39,6 +40,7 @@ public class FeaturesService {
return HttpResponse.ok(ServletUtil.GSON2.toJson(response)); return HttpResponse.ok(ServletUtil.GSON2.toJson(response));
} }
@Deprecated
public static HttpResponse<String> getTree(HttpRequest<?> request, Integer id) { public static HttpResponse<String> getTree(HttpRequest<?> request, Integer id) {
var url = request.getUri().toString(); var url = request.getUri().toString();
var features = Models.features(ServletUtil.model(), id); var features = Models.features(ServletUtil.model(), id);
......
...@@ -3,8 +3,8 @@ package gov.usgs.earthquake.nshmp.www.source; ...@@ -3,8 +3,8 @@ package gov.usgs.earthquake.nshmp.www.source;
import gov.usgs.earthquake.nshmp.www.NshmpMicronautServlet; import gov.usgs.earthquake.nshmp.www.NshmpMicronautServlet;
import gov.usgs.earthquake.nshmp.www.ResponseBody; import gov.usgs.earthquake.nshmp.www.ResponseBody;
import gov.usgs.earthquake.nshmp.www.ServletUtil; import gov.usgs.earthquake.nshmp.www.ServletUtil;
import gov.usgs.earthquake.nshmp.www.source.SourceLogicTreesService.Metadata; import gov.usgs.earthquake.nshmp.www.source.LogicTreesService.Metadata;
import gov.usgs.earthquake.nshmp.www.source.SourceLogicTreesService.RequestData; import gov.usgs.earthquake.nshmp.www.source.LogicTreesService.RequestData;
import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpRequest;
import io.micronaut.http.HttpResponse; import io.micronaut.http.HttpResponse;
...@@ -19,8 +19,9 @@ import io.swagger.v3.oas.annotations.tags.Tag; ...@@ -19,8 +19,9 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.inject.Inject; import jakarta.inject.Inject;
/** /**
* Micronaut web service controller for the source logic trees in the current * Micronaut web service controller for the source logic trees in the installed
* installed model. * model. These endpoints return the GeoJSON features and Magnitude frequency
* distributions associated with the branches in a source logic tree.
* *
* <p>See src/main/resources/application.yml nshmp-haz.model-path for installed * <p>See src/main/resources/application.yml nshmp-haz.model-path for installed
* model. * model.
...@@ -31,17 +32,17 @@ import jakarta.inject.Inject; ...@@ -31,17 +32,17 @@ import jakarta.inject.Inject;
* @author U.S. Geological Survey * @author U.S. Geological Survey
*/ */
@Tag( @Tag(
name = SourceLogicTreesService.NAME, name = LogicTreesService.NAME,
description = "USGS NSHM source model logic tree service") description = "USGS NSHM source model logic tree service")
@Controller("/trees") @Controller("/trees")
public class SourceLogicTreesController { public class LogicTreesController {
@Inject @Inject
private NshmpMicronautServlet servlet; private NshmpMicronautServlet servlet;
@Operation( @Operation(
summary = "Source model logic tree listing", summary = "Source model logic tree listing",
description = "Returns the ID's of logic trees in the model", description = "Returns the IDs of logic trees in the model",
operationId = "source-tree-metadata") operationId = "source-tree-metadata")
@ApiResponse( @ApiResponse(
description = "Source logic tree metadata", description = "Source logic tree metadata",
...@@ -52,11 +53,11 @@ public class SourceLogicTreesController { ...@@ -52,11 +53,11 @@ public class SourceLogicTreesController {
@Get @Get
public HttpResponse<String> doGetMetadata(HttpRequest<?> http) { public HttpResponse<String> doGetMetadata(HttpRequest<?> http) {
try { try {
return SourceLogicTreesService.getMetadata(http); return LogicTreesService.getMetadata(http);
} catch (Exception e) { } catch (Exception e) {
return ServletUtil.error( return ServletUtil.error(
SourceLogicTreesService.LOG, e, LogicTreesService.LOG, e,
SourceLogicTreesService.NAME, LogicTreesService.NAME,
http.getUri().toString()); http.getUri().toString());
} }
} }
...@@ -67,20 +68,69 @@ public class SourceLogicTreesController { ...@@ -67,20 +68,69 @@ public class SourceLogicTreesController {
@Operation( @Operation(
summary = "Get a source model MFD logic tree", summary = "Get a source model MFD logic tree",
description = "Returns the logic tree of MFDs for the supplied ID", description = "Returns the logic tree of MFDs for the supplied ID",
operationId = "source-tree-mfds") operationId = "source-tree-mfds-old")
@ApiResponse( @ApiResponse(
description = "NSHM source logic tree", description = "NSHM source logic tree",
responseCode = "200", responseCode = "200",
content = @Content( content = @Content(
schema = @Schema(implementation = TreeResponse.class))) schema = @Schema(implementation = TreeResponse.class)))
@Get(uri = "/{id}") @Get(uri = "/{id}")
@Deprecated
public HttpResponse<String> doGetTree(HttpRequest<?> http, @PathVariable int id) { public HttpResponse<String> doGetTree(HttpRequest<?> http, @PathVariable int id) {
try { try {
return SourceLogicTreesService.getTree(http, id); return LogicTreesService.getMfdTree(http, id);
} catch (Exception e) {
return ServletUtil.error(
LogicTreesService.LOG, e,
LogicTreesService.NAME,
http.getUri().toString());
}
}
/**
* @param id Source logic tree id
*/
@Operation(
summary = "Get a source model feature logic tree",
description = "Returns the logic tree of features for the supplied ID",
operationId = "source-tree-features")
@ApiResponse(
description = "NSHM source logic tree",
responseCode = "200",
content = @Content(
schema = @Schema(implementation = TreeResponse.class)))
@Get(uri = "/features/{id}")
public HttpResponse<String> doGetFeatureTree(HttpRequest<?> http, @PathVariable int id) {
try {
return LogicTreesService.getFeatureTree(http, id);
} catch (Exception e) {
return ServletUtil.error(
LogicTreesService.LOG, e,
LogicTreesService.NAME,
http.getUri().toString());
}
}
/**
* @param id Source logic tree id
*/
@Operation(
summary = "Get a source model MFD logic tree",
description = "Returns the logic tree of MFDs for the supplied ID",
operationId = "source-tree-mfds")
@ApiResponse(
description = "NSHM source logic tree",
responseCode = "200",
content = @Content(
schema = @Schema(implementation = TreeResponse.class)))
@Get(uri = "/mfds/{id}")
public HttpResponse<String> doGetMfdTree(HttpRequest<?> http, @PathVariable int id) {
try {
return LogicTreesService.getMfdTree(http, id);
} catch (Exception e) { } catch (Exception e) {
return ServletUtil.error( return ServletUtil.error(
SourceLogicTreesService.LOG, e, LogicTreesService.LOG, e,
SourceLogicTreesService.NAME, LogicTreesService.NAME,
http.getUri().toString()); http.getUri().toString());
} }
} }
......
...@@ -16,15 +16,15 @@ import io.micronaut.http.HttpResponse; ...@@ -16,15 +16,15 @@ import io.micronaut.http.HttpResponse;
import jakarta.inject.Singleton; import jakarta.inject.Singleton;
/** /**
* Source model tree handler for {@link SourceLogicTreesController} * Source model tree handler for {@link LogicTreesController}
* *
* @author U.S. Geological Survey * @author U.S. Geological Survey
*/ */
@Singleton @Singleton
public class SourceLogicTreesService { public class LogicTreesService {
static final String NAME = "Model Logic Trees"; static final String NAME = "Model Logic Trees";
static final Logger LOG = LoggerFactory.getLogger(SourceLogicTreesService.class); static final Logger LOG = LoggerFactory.getLogger(LogicTreesService.class);
public static HttpResponse<String> getMetadata(HttpRequest<?> request) { public static HttpResponse<String> getMetadata(HttpRequest<?> request) {
var url = request.getUri().toString(); var url = request.getUri().toString();
...@@ -39,16 +39,30 @@ public class SourceLogicTreesService { ...@@ -39,16 +39,30 @@ public class SourceLogicTreesService {
return HttpResponse.ok(ServletUtil.GSON2.toJson(response)); return HttpResponse.ok(ServletUtil.GSON2.toJson(response));
} }
public static HttpResponse<String> getTree(HttpRequest<?> request, Integer id) { public static HttpResponse<String> getFeatureTree(HttpRequest<?> request, Integer id) {
var url = request.getUri().toString(); var url = request.getUri().toString();
var tree = Models.tree(ServletUtil.model(), id); var featureTree = Models.features(ServletUtil.model(), id);
var requestData = new RequestData(id); var requestData = new RequestData(id);
var response = ResponseBody.success() var response = ResponseBody.success()
.name(NAME) .name(NAME)
.url(url) .url(url)
.metadata(new ResponseMetadata(HazVersion.appVersions())) .metadata(new ResponseMetadata(HazVersion.appVersions()))
.request(requestData) .request(requestData)
.response(tree) .response(featureTree)
.build();
return HttpResponse.ok(ServletUtil.GSON2.toJson(response));
}
public static HttpResponse<String> getMfdTree(HttpRequest<?> request, Integer id) {
var url = request.getUri().toString();
var mfdTree = Models.tree(ServletUtil.model(), id);
var requestData = new RequestData(id);
var response = ResponseBody.success()
.name(NAME)
.url(url)
.metadata(new ResponseMetadata(HazVersion.appVersions()))
.request(requestData)
.response(mfdTree)
.build(); .build();
return HttpResponse.ok(ServletUtil.GSON2.toJson(response)); return HttpResponse.ok(ServletUtil.GSON2.toJson(response));
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment