From 1467b3e63df405e5594e4101d919c5528c57b5ef Mon Sep 17 00:00:00 2001
From: bclayton-usgs <bclayton@usgs.gov>
Date: Wed, 11 Mar 2020 16:51:27 -0600
Subject: [PATCH] update

---
 .../nshmp/netcdf/reader/BoundingHazards.java      |  6 +++---
 .../nshmp/netcdf/reader/NetcdfUtils.java          | 15 +++++++++------
 .../nshmp/netcdf/reader/NetcdfUtilsTests.java     |  6 +++---
 3 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/src/main/java/gov/usgs/earthquake/nshmp/netcdf/reader/BoundingHazards.java b/src/main/java/gov/usgs/earthquake/nshmp/netcdf/reader/BoundingHazards.java
index 3906d39..2275031 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/netcdf/reader/BoundingHazards.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/netcdf/reader/BoundingHazards.java
@@ -82,6 +82,9 @@ public class BoundingHazards {
     boundingHazards.put(
         site,
         calcTargetHazards(fracLon, fracLat));
+
+    // validate boundingHazards
+    NetcdfUtils.checkBoundingHazards(boundingHazards, boundingLocations.first());
   }
 
   private Map<SiteClass, Map<Imt, XySequence>> calcTargetHazards(double fracLon, double fracLat) {
@@ -165,9 +168,6 @@ public class BoundingHazards {
           boundingLocations.get(3),
           mapHazardsFromArray(aHazards.section(origin, shape)));
 
-      // validate boundingHazardMaps
-      NetcdfUtils.checkBoundingHazards(boundingHazards);
-
     } catch (IOException | InvalidRangeException e) {
       // shouldn't get here because the reader was initialized with a valid and
       // existing netCDF file. Is the only way to trigger this error is to
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/netcdf/reader/NetcdfUtils.java b/src/main/java/gov/usgs/earthquake/nshmp/netcdf/reader/NetcdfUtils.java
index e434737..0424989 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/netcdf/reader/NetcdfUtils.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/netcdf/reader/NetcdfUtils.java
@@ -1,12 +1,12 @@
 package gov.usgs.earthquake.nshmp.netcdf.reader;
 
+import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.Map;
-import java.util.stream.Collectors;
 
 import com.google.common.collect.Maps;
 import com.google.common.math.DoubleMath;
@@ -201,11 +201,14 @@ public class NetcdfUtils {
    * @param boundingHazards The bounding hazards
    */
   static void checkBoundingHazards(
-      Map<Location, Map<SiteClass, Map<Imt, XySequence>>> boundingHazards) {
-    var location = boundingHazards.keySet().stream().collect(Collectors.toList()).get(0);
-    boundingHazards.keySet().forEach(key -> {
-      checkBoundingHazard(boundingHazards.get(location), boundingHazards.get(key));
-    });
+      Map<Location, Map<SiteClass, Map<Imt, XySequence>>> boundingHazards,
+      Location location) {
+    checkArgument(boundingHazards.containsKey(location), "Location not in bounding hazards");
+    boundingHazards.keySet().stream()
+        .filter(loc -> loc.equals(location))
+        .forEach(key -> {
+          checkBoundingHazard(boundingHazards.get(location), boundingHazards.get(key));
+        });
   }
 
   /**
diff --git a/src/test/java/gov/usgs/earthquake/nshmp/netcdf/reader/NetcdfUtilsTests.java b/src/test/java/gov/usgs/earthquake/nshmp/netcdf/reader/NetcdfUtilsTests.java
index 625ec8c..2eaacb2 100644
--- a/src/test/java/gov/usgs/earthquake/nshmp/netcdf/reader/NetcdfUtilsTests.java
+++ b/src/test/java/gov/usgs/earthquake/nshmp/netcdf/reader/NetcdfUtilsTests.java
@@ -163,17 +163,17 @@ class NetcdfUtilsTests {
     });
 
     // compare maps with different size at first level (SiteClass)
-    assertThrows(IllegalArgumentException.class, () -> {
+    assertThrows(IllegalStateException.class, () -> {
       NetcdfUtils.checkBoundingHazard(mapHaz0, mapDiffScSize);
     });
 
     // compare maps with different size at second level (Imt)
-    assertThrows(IllegalArgumentException.class, () -> {
+    assertThrows(IllegalStateException.class, () -> {
       NetcdfUtils.checkBoundingHazard(mapHaz0, mapDiffImtSize);
     });
 
     // compare maps with a single different Iml value
-    assertThrows(IllegalArgumentException.class, () -> {
+    assertThrows(IllegalStateException.class, () -> {
       NetcdfUtils.checkBoundingHazard(mapHaz0, mapDiffImlValue);
     });
   }
-- 
GitLab