From 54d60a1cd448e5d070ec1cbbb8c370999c60d89e Mon Sep 17 00:00:00 2001
From: Brandon Clayton <bclayton@usgs.gov>
Date: Thu, 17 Feb 2022 14:04:58 -0700
Subject: [PATCH] Match to dynamic response

---
 .../nshmp/netcdf/www/NetcdfService.java       | 41 ++++++++++++++-----
 1 file changed, 31 insertions(+), 10 deletions(-)

diff --git a/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfService.java b/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfService.java
index f8cdb7a..718b08a 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfService.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/netcdf/www/NetcdfService.java
@@ -2,17 +2,18 @@ package gov.usgs.earthquake.nshmp.netcdf.www;
 
 import static gov.usgs.earthquake.nshmp.netcdf.www.NetcdfWsUtils.GSON;
 
-import java.util.List;
+import java.util.Map;
 import java.util.logging.Logger;
 
+import gov.usgs.earthquake.nshmp.Maths;
 import gov.usgs.earthquake.nshmp.data.XySequence;
-import gov.usgs.earthquake.nshmp.geo.Bounds;
 import gov.usgs.earthquake.nshmp.geo.Location;
 import gov.usgs.earthquake.nshmp.gmm.NehrpSiteClass;
 import gov.usgs.earthquake.nshmp.netcdf.Netcdf;
 import gov.usgs.earthquake.nshmp.netcdf.data.ScienceBaseMetadata;
 import gov.usgs.earthquake.nshmp.netcdf.www.NetcdfController.Query;
 import gov.usgs.earthquake.nshmp.netcdf.www.NetcdfController.Service;
+import gov.usgs.earthquake.nshmp.netcdf.www.meta.DoubleParameter;
 import gov.usgs.earthquake.nshmp.www.Response;
 
 import io.micronaut.http.HttpRequest;
@@ -126,7 +127,7 @@ public abstract class NetcdfService {
     final String description;
     final String[] syntax;
     final String netcdfFile;
-    final Parameters parameters;
+    final Parameters model;
     final ScienceBaseMetadata scienceBaseMetadata;
 
     Metadata(HttpRequest<?> request, String description) {
@@ -134,25 +135,45 @@ public abstract class NetcdfService {
       url = url.endsWith("/") ? url.substring(0, url.length() - 1) : url;
       this.description = description;
       scienceBaseMetadata = netcdf().netcdfData().scienceBaseMetadata();
-      netcdfFile = netcdf().netcdfPath().toString();
+      netcdfFile = netcdf().netcdfPath().getFileName().toString();
       syntax = new String[] {
           url + "/{longitude:number}/{latitude:number}",
           url + "?longitude={number}&latitude={number}",
           url + "/{longitude:number}/{latitude:number}/{siteClass:NehrpSiteClass}",
           url + "?longitude={number}&latitude={number}&siteClass={NehrpSiteClass}",
       };
-      parameters = new Parameters();
+      model = new Parameters();
     }
   }
 
   class Parameters {
-    final Bounds bounds;
-    final List<NehrpSiteClass> siteClasses;
+    final String name;
+    final DoubleParameter longitude;
+    final DoubleParameter latitude;
+    final Map<NehrpSiteClass, Double> siteClasses;
+    final DoubleParameter vs30;
 
     Parameters() {
-      var coordinates = netcdf().netcdfData();
-      bounds = coordinates.bounds();
-      siteClasses = coordinates.siteClasses();
+      var netcdfData = netcdf().netcdfData();
+      var bounds = netcdfData.bounds();
+
+      name = netcdfData.scienceBaseMetadata().label;
+      longitude = new DoubleParameter(
+          "Longitude",
+          "°",
+          Maths.round(bounds.min.longitude, 3),
+          Maths.round(bounds.max.longitude, 3));
+      latitude = new DoubleParameter(
+          "Latitude",
+          "°",
+          Maths.round(bounds.min.latitude, 3),
+          Maths.round(bounds.max.latitude, 3));
+      siteClasses = netcdfData.vs30Map();
+      vs30 = new DoubleParameter(
+          "Vs30",
+          "m/s",
+          150,
+          1500);
     }
   }
 
-- 
GitLab