diff --git a/package-lock.json b/package-lock.json index dc72624ba1f9b5786382c12356add218736ccc4b..fd03b78e351745759edce1f4fbeb016a832b3d8b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,7 +5,6 @@ "requires": true, "packages": { "": { - "name": "nshmp-haz", "version": "2.0.0", "devDependencies": { "markdownlint-cli": "^0.31.1", diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/source/FeaturesController.java b/src/main/java/gov/usgs/earthquake/nshmp/www/source/FeaturesController.java index 9c854547bc87a29b1bdbf37b61224db198708ce3..3ff3662e707c693096e788e8cc15fc4ac3b6ef53 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/source/FeaturesController.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/source/FeaturesController.java @@ -19,8 +19,8 @@ import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.inject.Inject; /** - * Micronaut web service controller for the GeoJSON features in the current - * installed model. + * Micronaut web service controller for the GeoJSON features in the installed + * model. * * <p>See src/main/resources/application.yml nshmp-haz.model-path for installed * model. @@ -39,6 +39,13 @@ public class FeaturesController { @Inject 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( summary = "Source model logic tree listing", description = "Returns the ID's of logic trees in the model", @@ -50,6 +57,7 @@ public class FeaturesController { schema = @Schema( implementation = MetadataResponse.class))) @Get + @Deprecated public HttpResponse<String> doGetMetadata(HttpRequest<?> http) { try { return FeaturesService.getMetadata(http); @@ -74,6 +82,7 @@ public class FeaturesController { content = @Content( schema = @Schema(implementation = TreeResponse.class))) @Get(uri = "/{id}") + @Deprecated public HttpResponse<String> doGetTree(HttpRequest<?> http, @PathVariable int id) { try { return FeaturesService.getTree(http, id); diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/source/FeaturesService.java b/src/main/java/gov/usgs/earthquake/nshmp/www/source/FeaturesService.java index 786bafca4b3d0f955e91accaf7b6de3baa88d8ad..f21bf57dea1a34c4f0b406868b12005cdfb6004c 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/source/FeaturesService.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/source/FeaturesService.java @@ -26,6 +26,7 @@ public class FeaturesService { static final String NAME = "Model Features"; static final Logger LOG = LoggerFactory.getLogger(FeaturesService.class); + @Deprecated public static HttpResponse<String> getMetadata(HttpRequest<?> request) { var url = request.getUri().toString(); var metadata = new Metadata(ServletUtil.model()); @@ -39,6 +40,7 @@ public class FeaturesService { return HttpResponse.ok(ServletUtil.GSON2.toJson(response)); } + @Deprecated public static HttpResponse<String> getTree(HttpRequest<?> request, Integer id) { var url = request.getUri().toString(); var features = Models.features(ServletUtil.model(), id); diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/source/SourceLogicTreesController.java b/src/main/java/gov/usgs/earthquake/nshmp/www/source/LogicTreesController.java similarity index 52% rename from src/main/java/gov/usgs/earthquake/nshmp/www/source/SourceLogicTreesController.java rename to src/main/java/gov/usgs/earthquake/nshmp/www/source/LogicTreesController.java index 971c66e80bbc529918c3c7b3427bbf83235870ce..6fd72aafedb76bcb97304a5e5f319144cdd9d1f6 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/source/SourceLogicTreesController.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/source/LogicTreesController.java @@ -3,8 +3,8 @@ package gov.usgs.earthquake.nshmp.www.source; import gov.usgs.earthquake.nshmp.www.NshmpMicronautServlet; import gov.usgs.earthquake.nshmp.www.ResponseBody; import gov.usgs.earthquake.nshmp.www.ServletUtil; -import gov.usgs.earthquake.nshmp.www.source.SourceLogicTreesService.Metadata; -import gov.usgs.earthquake.nshmp.www.source.SourceLogicTreesService.RequestData; +import gov.usgs.earthquake.nshmp.www.source.LogicTreesService.Metadata; +import gov.usgs.earthquake.nshmp.www.source.LogicTreesService.RequestData; import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpResponse; @@ -19,8 +19,9 @@ import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.inject.Inject; /** - * Micronaut web service controller for the source logic trees in the current - * installed model. + * Micronaut web service controller for the source logic trees in the installed + * 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 * model. @@ -31,17 +32,17 @@ import jakarta.inject.Inject; * @author U.S. Geological Survey */ @Tag( - name = SourceLogicTreesService.NAME, + name = LogicTreesService.NAME, description = "USGS NSHM source model logic tree service") @Controller("/trees") -public class SourceLogicTreesController { +public class LogicTreesController { @Inject private NshmpMicronautServlet servlet; @Operation( 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") @ApiResponse( description = "Source logic tree metadata", @@ -52,11 +53,11 @@ public class SourceLogicTreesController { @Get public HttpResponse<String> doGetMetadata(HttpRequest<?> http) { try { - return SourceLogicTreesService.getMetadata(http); + return LogicTreesService.getMetadata(http); } catch (Exception e) { return ServletUtil.error( - SourceLogicTreesService.LOG, e, - SourceLogicTreesService.NAME, + LogicTreesService.LOG, e, + LogicTreesService.NAME, http.getUri().toString()); } } @@ -67,20 +68,69 @@ public class SourceLogicTreesController { @Operation( summary = "Get a source model MFD logic tree", description = "Returns the logic tree of MFDs for the supplied ID", - operationId = "source-tree-mfds") + operationId = "source-tree-mfds-old") @ApiResponse( description = "NSHM source logic tree", responseCode = "200", content = @Content( schema = @Schema(implementation = TreeResponse.class))) @Get(uri = "/{id}") + @Deprecated public HttpResponse<String> doGetTree(HttpRequest<?> http, @PathVariable int id) { 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) { return ServletUtil.error( - SourceLogicTreesService.LOG, e, - SourceLogicTreesService.NAME, + LogicTreesService.LOG, e, + LogicTreesService.NAME, http.getUri().toString()); } } diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/source/SourceLogicTreesService.java b/src/main/java/gov/usgs/earthquake/nshmp/www/source/LogicTreesService.java similarity index 69% rename from src/main/java/gov/usgs/earthquake/nshmp/www/source/SourceLogicTreesService.java rename to src/main/java/gov/usgs/earthquake/nshmp/www/source/LogicTreesService.java index 3f0fe6541bf47166bda144fe12484924935ffe6c..1a679b0d96e9c296492537a2bd64baf5a2283fe3 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/source/SourceLogicTreesService.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/source/LogicTreesService.java @@ -16,15 +16,15 @@ import io.micronaut.http.HttpResponse; import jakarta.inject.Singleton; /** - * Source model tree handler for {@link SourceLogicTreesController} + * Source model tree handler for {@link LogicTreesController} * * @author U.S. Geological Survey */ @Singleton -public class SourceLogicTreesService { +public class LogicTreesService { 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) { var url = request.getUri().toString(); @@ -39,16 +39,30 @@ public class SourceLogicTreesService { 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 tree = Models.tree(ServletUtil.model(), id); + var featureTree = Models.features(ServletUtil.model(), id); var requestData = new RequestData(id); var response = ResponseBody.success() .name(NAME) .url(url) .metadata(new ResponseMetadata(HazVersion.appVersions())) .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(); return HttpResponse.ok(ServletUtil.GSON2.toJson(response)); }