From 4c5845c74b444daa538bc856e6e23fe1a45f55e6 Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Thu, 21 Jul 2022 09:47:29 -0600 Subject: [PATCH] add metadata --- .../nshmp/netcdf/www/NetcdfService.java | 74 +++++++++++-------- 1 file changed, 44 insertions(+), 30 deletions(-) diff --git a/src/lib/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfService.java b/src/lib/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfService.java index 243ab94..ff23fae 100644 --- a/src/lib/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfService.java +++ b/src/lib/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfService.java @@ -12,10 +12,12 @@ import gov.usgs.earthquake.nshmp.Text; import gov.usgs.earthquake.nshmp.Text.Delimiter; import gov.usgs.earthquake.nshmp.gmm.NehrpSiteClass; import gov.usgs.earthquake.nshmp.netcdf.Netcdf; +import gov.usgs.earthquake.nshmp.netcdf.NetcdfDataFiles; +import gov.usgs.earthquake.nshmp.netcdf.data.ScienceBaseMetadata; import gov.usgs.earthquake.nshmp.netcdf.www.Metadata.ServiceResponseMetadata; import gov.usgs.earthquake.nshmp.netcdf.www.Query.Service; import gov.usgs.earthquake.nshmp.netcdf.www.Request.RequestData; -import gov.usgs.earthquake.nshmp.netcdf.www.Request.RequestDataSiteClass; +import gov.usgs.earthquake.nshmp.netcdf.www.meta.DoubleParameter; import gov.usgs.earthquake.nshmp.www.ResponseBody; import io.micronaut.http.HttpRequest; @@ -32,10 +34,10 @@ public abstract class NetcdfService<T extends Query> { protected static final Logger LOGGER = Logger.getLogger(NetcdfService.class.getName()); - Netcdf<?> netcdf; + protected NetcdfDataFiles<?> netcdfDataFiles; - protected NetcdfService(Netcdf<?> netcdf) { - this.netcdf = netcdf; + protected NetcdfService(NetcdfDataFiles<?> netcdfDataFiles) { + this.netcdfDataFiles = netcdfDataFiles; } /** @@ -50,35 +52,10 @@ public abstract class NetcdfService<T extends Query> { */ abstract String getServiceName(); - /** - * Returns the source model - */ - abstract SourceModel getSourceModel(); - /** * Returns the netcdf object associated with the specific data type. */ - abstract Netcdf<?> netcdf(); - - /** - * Returns the static curves at a specific location. - * - * @param <T> The response type - * @param request The request data - * @param url The URL for the service call - */ - abstract <U> ResponseBody<RequestData, U> processCurves(RequestData request, String url); - - /** - * Returns the static curves at a specific location and site class. - * - * @param <T> The response type - * @param request The request data - * @param url The URL for the service call - */ - abstract <U> ResponseBody<RequestDataSiteClass, U> processCurvesSiteClass( - RequestDataSiteClass request, - String url); + abstract NetcdfDataFiles<?> netcdfDataFiles(); /** * Process the service request and returns the string response. @@ -127,6 +104,15 @@ public abstract class NetcdfService<T extends Query> { } } + /** + * Returns the source models. + */ + List<SourceModel> getSourceModels() { + return netcdfDataFiles().stream() + .map(SourceModel::new) + .collect(Collectors.toList()); + } + <U extends ServiceResponseMetadata> String toCsvResponse( RequestData requestData, ResponseData<U> responseData) { @@ -192,13 +178,41 @@ public abstract class NetcdfService<T extends Query> { return lines.stream().collect(Collectors.joining(Text.NEWLINE)); } + static class NetcdfMetadata { + public final String netcdfFile; + public final ScienceBaseMetadata scienceBaseMetadata; + + NetcdfMetadata(Netcdf<?> netcdf) { + var fileName = netcdf.netcdfPath().getFileName(); + netcdfFile = fileName == null ? netcdf.netcdfPath().toString() : fileName.toString(); + scienceBaseMetadata = netcdf.netcdfData().scienceBaseMetadata(); + } + } + static class SourceModel { public final String name; public final Map<NehrpSiteClass, Double> siteClasses; + public final DoubleParameter longitude; + public final DoubleParameter latitude; + public final NetcdfMetadata netcdfMetadata; SourceModel(Netcdf<?> netcdf) { name = netcdf.netcdfData().scienceBaseMetadata().label; siteClasses = netcdf.netcdfData().vs30Map(); + var min = netcdf.netcdfData().minimumBounds(); + var max = netcdf.netcdfData().maximumBounds(); + + longitude = new DoubleParameter( + "Longitude", + "°", + min.longitude, + max.longitude); + latitude = new DoubleParameter( + "Latitude", + "°", + min.latitude, + max.latitude); + netcdfMetadata = new NetcdfMetadata(netcdf); } } } -- GitLab