From d881e1e5452fc98a043290f65c468573f9afd246 Mon Sep 17 00:00:00 2001
From: Peter Powers <pmpowers@usgs.gov>
Date: Wed, 18 May 2022 14:04:41 -0600
Subject: [PATCH] added model root path

---
 .../earthquake/nshmp/model/HazardModel.java   | 19 +++++++++++++++----
 .../earthquake/nshmp/model/ModelLoader.java   |  2 +-
 2 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/src/main/java/gov/usgs/earthquake/nshmp/model/HazardModel.java b/src/main/java/gov/usgs/earthquake/nshmp/model/HazardModel.java
index edbb8516..bd5f14be 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/model/HazardModel.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/model/HazardModel.java
@@ -59,6 +59,7 @@ import gov.usgs.earthquake.nshmp.gmm.NehrpSiteClass;
  */
 public final class HazardModel implements Iterable<SourceTree> {
 
+  private final Path root;
   private final String name;
   private final CalcConfig config;
   private final Map<NehrpSiteClass, Double> siteClassMap;
@@ -73,12 +74,13 @@ public final class HazardModel implements Iterable<SourceTree> {
   private final Map<Integer, SourceTree> idMap;
 
   private HazardModel(Builder builder) {
+    this.root = builder.root;
     this.name = builder.info.name;
     this.config = builder.config;
     this.siteClassMap = Maps.immutableEnumMap(builder.info.siteClassMap);
     this.bounds = builder.info.bounds != null
         ? new HashMap<>(builder.info.bounds)
-        : new HashMap<>();; // TODO make immutable
+        : new HashMap<>(); // TODO make immutable
     this.ruptureSetMap = builder.ruptureSetMap;
     this.settings = Sets.immutableEnumSet(builder.settings);
     this.mapRegionMap = Maps.immutableEnumMap(builder.mapRegionMap);
@@ -120,6 +122,13 @@ public final class HazardModel implements Iterable<SourceTree> {
     return treesMap.values().iterator();
   }
 
+  /**
+   * The path to the root directory of the model.
+   */
+  public Path root() {
+    return root;
+  }
+
   /**
    * The name of the model.
    */
@@ -229,8 +238,8 @@ public final class HazardModel implements Iterable<SourceTree> {
   /**
    * Returns a new {@link Builder}.
    */
-  static Builder builder() {
-    return new Builder();
+  static Builder builder(Path root) {
+    return new Builder(root);
   }
 
   static class Builder {
@@ -238,6 +247,7 @@ public final class HazardModel implements Iterable<SourceTree> {
     static final String ID = "HazardModel.Builder";
     boolean built = false;
 
+    private Path root;
     private Info info;
     CalcConfig config; // also accessible during model initialization
     private SetMultimap<SourceType, RuptureSet<? extends Source>> ruptureSetMap;
@@ -255,7 +265,8 @@ public final class HazardModel implements Iterable<SourceTree> {
     // Not used but will be (uncertainty)
     private List<SourceTree> trees = new ArrayList<>();
 
-    private Builder() {
+    private Builder(Path root) {
+      this.root = checkNotNull(root);
       ruptureMapBuilder = ImmutableSetMultimap.builder();
       treesMapBuilder = ImmutableListMultimap.builder();
     }
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/model/ModelLoader.java b/src/main/java/gov/usgs/earthquake/nshmp/model/ModelLoader.java
index e7998390..ac86bf7d 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/model/ModelLoader.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/model/ModelLoader.java
@@ -125,7 +125,7 @@ abstract class ModelLoader {
       SiteData siteData = readSiteData(dir);
       System.out.println(siteData);
 
-      HazardModel.Builder builder = HazardModel.builder()
+      HazardModel.Builder builder = HazardModel.builder(dir)
           .info(readModelInfo(dir).orElseThrow())
           .config(config)
           .siteData(siteData);
-- 
GitLab