From 7041a84e34ce778e7a95bc3837adb3bbfd780e3c Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Thu, 21 Jul 2022 09:40:57 -0600 Subject: [PATCH] Switch to data files, add nshm --- .../nshmp/netcdf/www/NetcdfController.java | 62 +++++++++++-------- 1 file changed, 35 insertions(+), 27 deletions(-) diff --git a/src/hazard/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfController.java b/src/hazard/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfController.java index f14d844..32a8b89 100644 --- a/src/hazard/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfController.java +++ b/src/hazard/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfController.java @@ -5,10 +5,11 @@ import java.util.List; import gov.usgs.earthquake.nshmp.gmm.Imt; import gov.usgs.earthquake.nshmp.gmm.NehrpSiteClass; -import gov.usgs.earthquake.nshmp.netcdf.NetcdfHazardCurves; -import gov.usgs.earthquake.nshmp.netcdf.www.Metadata.HazardResponseMetadata; -import gov.usgs.earthquake.nshmp.netcdf.www.Request.RequestDataImt; +import gov.usgs.earthquake.nshmp.netcdf.NetcdfDataFilesHazardCurves; +import gov.usgs.earthquake.nshmp.netcdf.Nshm; +import gov.usgs.earthquake.nshmp.netcdf.www.HazardMetadata.HazardResponseMetadata; import gov.usgs.earthquake.nshmp.netcdf.www.Request.RequestDataSiteClass; +import gov.usgs.earthquake.nshmp.netcdf.www.RequestHazardCurves.HazardRequestDataImt; import gov.usgs.earthquake.nshmp.www.NshmpMicronautServlet; import gov.usgs.earthquake.nshmp.www.ResponseBody; @@ -46,7 +47,7 @@ public class NetcdfController { @Inject private NshmpMicronautServlet servlet; - @Value("${nshmp-ws-static.netcdf-file}") + @Value("${nshmp-ws-static.netcdf-path}") Path netcdfPath; NetcdfServiceHazardCurves service; @@ -56,8 +57,8 @@ public class NetcdfController { */ @EventListener void startup(StartupEvent event) { - var netcdfHazard = new NetcdfHazardCurves(netcdfPath); - service = new NetcdfServiceHazardCurves(netcdfHazard); + var netcdfDataFiles = new NetcdfDataFilesHazardCurves(netcdfPath); + service = new NetcdfServiceHazardCurves(netcdfDataFiles); } /** @@ -86,11 +87,11 @@ public class NetcdfController { "### Service call pattern\n" + "This service call is slashed delimited with pattern: " + - "`/hazard/{longitude}/{latitude}/{siteClass}/{imt}`\n" + + "`/hazard/{nshm}/{longitude}/{latitude}/{siteClass}/{imt}`\n" + "<br><br>" + - "Example: `/hazard/-118/34/BC/PGA`" + + "Example: `/hazard/CONUS_2018/-118/34/BC/PGA`" + "<br><br>" + - "CSV Example: `/hazard/-118/34/BC/PGA?format=CSV`", + "CSV Example: `/hazard/CONUS_2018/-118/34/BC/PGA?format=CSV`", operationId = "hazard-by-imt") @ApiResponse( description = "Spatially interpolated hazard curves", @@ -109,17 +110,18 @@ public class NetcdfController { "Ground Motion (g),0.00233,0.0035,0.00524,0.00786,0.0118, ...\n" + "Annual Frequency of Exceedence,0.036386,0.026034,0.018125,0.012197, ...\n")) }) - @Get(uri = "/{longitude}/{latitude}/{siteClass}/{imt}{?format}", + @Get(uri = "/{nshm}/{longitude}/{latitude}/{siteClass}/{imt}{?format}", produces = MediaType.APPLICATION_JSON) public HttpResponse<String> doGetSlashByImt( HttpRequest<?> request, + @Schema(required = true) @PathVariable Nshm nshm, @Schema(required = true) @PathVariable Double latitude, @Schema(required = true) @PathVariable Double longitude, @Schema(required = true) @PathVariable NehrpSiteClass siteClass, @Schema(required = true) @PathVariable Imt imt, @Schema(required = false, defaultValue = "JSON", implementation = ResponseFormat.class) @QueryValue @Nullable ResponseFormat format) { - return doGet(request, longitude, latitude, siteClass, imt, format); + return doGet(request, nshm, longitude, latitude, siteClass, imt, format); } /** @@ -148,11 +150,11 @@ public class NetcdfController { "### Service call pattern\n" + "This service call is slashed delimited with pattern: " + - "`/hazard/{longitude}/{latitude}/{siteClass}`\n" + + "`/hazard/{nshm}/{longitude}/{latitude}/{siteClass}`\n" + "<br><br>" + - "Example: `/hazard/-118/34/BC`" + + "Example: `/hazard/CONUS_2018/-118/34/BC`" + "<br><br>" + - "Example: `/hazard/-118/34/BC?format=CSV`", + "Example: `/hazard/CONUS_2018/-118/34/BC?format=CSV`", operationId = "hazard-by-siteclass") @ApiResponse( description = "Spatially interpolated hazard curves", @@ -174,15 +176,17 @@ public class NetcdfController { "...")) }) - @Get(uri = "/{longitude}/{latitude}/{siteClass}{?format}", produces = MediaType.APPLICATION_JSON) + @Get(uri = "/{nshm}/{longitude}/{latitude}/{siteClass}{?format}", + produces = MediaType.APPLICATION_JSON) public HttpResponse<String> doGetSlashBySite( HttpRequest<?> request, + @Schema(required = true) @PathVariable Nshm nshm, @Schema(required = true) @PathVariable Double latitude, @Schema(required = true) @PathVariable Double longitude, @Schema(required = true) @PathVariable NehrpSiteClass siteClass, @Schema(required = false, defaultValue = "JSON", implementation = ResponseFormat.class) @QueryValue @Nullable ResponseFormat format) { - return doGet(request, longitude, latitude, siteClass, null, format); + return doGet(request, nshm, longitude, latitude, siteClass, null, format); } /** @@ -209,11 +213,11 @@ public class NetcdfController { "### Service call pattern\n" + "This service call is slashed delimited with pattern: " + - "`/hazard/{longitude}/{latitude}`\n" + + "`/hazard/{nshm}/{longitude}/{latitude}`\n" + "<br><br>" + - "Example: `/hazard/-118/34`" + + "Example: `/hazard/CONUS_2018/-118/34`" + "<br><br>" + - "Example: `/hazard/-118/34?format=CSV`", + "Example: `/hazard/conus_2018/-118/34?format=CSV`", operationId = "hazard") @ApiResponse( description = "Returns static curves from the NSHM NetCDF file", @@ -235,20 +239,22 @@ public class NetcdfController { "...")) }) - @Get(uri = "/{longitude}/{latitude}{?format}", produces = MediaType.APPLICATION_JSON) + @Get(uri = "/{nshm}/{longitude}/{latitude}{?format}", produces = MediaType.APPLICATION_JSON) public HttpResponse<String> doGetSlash( HttpRequest<?> request, + @Schema(required = true) @PathVariable Nshm nshm, @Schema(required = true) @PathVariable Double longitude, @Schema(required = true) @PathVariable Double latitude, @Schema(required = false, defaultValue = "JSON", implementation = ResponseFormat.class) @QueryValue @Nullable ResponseFormat format) { - return doGet(request, longitude, latitude, null, null, format); + return doGet(request, nshm, longitude, latitude, null, null, format); } /** * GET method to return a static curve using URL query. * * @param request The HTTP request + * @param nshm The NSHM to query * @param longitude The longitude of the site * @param latitude Latitude of the site * @param siteClass The site class (optional) @@ -271,12 +277,12 @@ public class NetcdfController { "### Service call pattern\n" + "This service call is query based with pattern: " + - "`/hazard?longitude={number}&latitude={number}" + + "`/hazard?nshm={string}&longitude={number}&latitude={number}" + "&siteClass={string}&imt={string}&format={CSV|JSON}`\n" + "<br><br>" + - "Example: `/hazard?longitude=-118&latitude=34&siteClass=A&imt=PGA`" + + "Example: `/hazard?nshm=CONUS_2018&longitude=-118&latitude=34&siteClass=A&imt=PGA`" + "<br><br>" + - "CSV Example: `/hazard?longitude=-118&latitude=34&siteClass=A&imt=PGA?format=CSV`", + "CSV Example: `/hazard?nshm=CONUS_2018&longitude=-118&latitude=34&siteClass=A&imt=PGA?format=CSV`", operationId = "hazard-by-imt") @ApiResponse( description = "Spatially interpolated hazard curves", @@ -298,23 +304,25 @@ public class NetcdfController { "...")) }) - @Get(uri = "{?longitude,latitude,siteClass,imt,format}", produces = MediaType.APPLICATION_JSON) + @Get(uri = "{?nshm,longitude,latitude,siteClass,imt,format}", + produces = MediaType.APPLICATION_JSON) public HttpResponse<String> doGet( HttpRequest<?> request, + @Schema(required = true) @QueryValue @Nullable Nshm nshm, @Schema(required = true) @QueryValue @Nullable Double longitude, @Schema(required = true) @QueryValue @Nullable Double latitude, @QueryValue @Nullable NehrpSiteClass siteClass, @QueryValue @Nullable Imt imt, @Schema(required = false, defaultValue = "JSON", implementation = ResponseFormat.class) @QueryValue @Nullable ResponseFormat format) { - var query = new HazardQuery(longitude, latitude, siteClass, imt, format); + var query = new HazardQuery(nshm, longitude, latitude, siteClass, imt, format); return service.handleServiceCall(request, query); } // For Swagger schema private static class ResponseByImt extends - ResponseBody<RequestDataImt, ResponseData<HazardResponseMetadata>> {} + ResponseBody<HazardRequestDataImt, ResponseData<HazardResponseMetadata>> {} // For Swagger schema private static class ResponseBySiteClass -- GitLab