From 03a82e0dba2d1cef7bfa87df2a81949e44c64584 Mon Sep 17 00:00:00 2001
From: Peter Powers <pmpowers@usgs.gov>
Date: Tue, 22 Oct 2024 15:25:27 -0600
Subject: [PATCH] interface system deserializer

---
 .../earthquake/nshmp/model/Deserialize.java   | 20 ++++++++++++++++---
 .../earthquake/nshmp/model/ModelFiles.java    |  9 +++++++--
 2 files changed, 24 insertions(+), 5 deletions(-)

diff --git a/src/main/java/gov/usgs/earthquake/nshmp/model/Deserialize.java b/src/main/java/gov/usgs/earthquake/nshmp/model/Deserialize.java
index aedbd4cb..2cd5364c 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/model/Deserialize.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/model/Deserialize.java
@@ -4,6 +4,8 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 import static gov.usgs.earthquake.nshmp.model.ModelFiles.checkRupturesFile;
 import static gov.usgs.earthquake.nshmp.model.ModelFiles.readSystemFeatures;
+import static gov.usgs.earthquake.nshmp.model.SourceType.FAULT_SYSTEM;
+import static gov.usgs.earthquake.nshmp.model.SourceType.INTERFACE_SYSTEM;
 import static java.util.stream.Collectors.toUnmodifiableMap;
 
 import java.io.BufferedReader;
@@ -389,13 +391,25 @@ class Deserialize {
         interfaceRuptureSets);
   }
 
-  /* Create a fault system rupture set. */
-  static SystemRuptureSet systemRuptureSet(Path json, ModelData data) {
+  /* Create a crustal fault system rupture set. */
+  static SystemRuptureSet crustalSystemRuptureSet(Path json, ModelData data) {
+    return systemRuptureSet(json, data, FAULT_SYSTEM);
+  }
+
+  /* Create an interface system rupture set. */
+  static SystemRuptureSet interfaceSystemRuptureSet(Path json, ModelData data) {
+    return systemRuptureSet(json, data, INTERFACE_SYSTEM);
+  }
+
+  private static SystemRuptureSet systemRuptureSet(
+      Path json,
+      ModelData data,
+      SourceType type) {
 
     Path parent = checkNotNull(json.getParent());
     JsonObject obj = jsonObject(json);
 
-    return SystemRuptureSet.builder()
+    return SystemRuptureSet.builder(type)
         .name(obj.get(NAME).getAsString())
         .id(obj.get(ID).getAsInt())
         .modelData(data)
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/model/ModelFiles.java b/src/main/java/gov/usgs/earthquake/nshmp/model/ModelFiles.java
index 2ae61357..3517afcc 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/model/ModelFiles.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/model/ModelFiles.java
@@ -255,6 +255,11 @@ class ModelFiles {
     return read(dir, CLUSTER_SET, data, Deserialize::interfaceClusterSet);
   }
 
+  /* Interface system rupture-set. */
+  static Optional<SystemRuptureSet> readInterfaceSystemRuptureSet(Path dir, ModelData data) {
+    return read(dir, RUPTURE_SET, data, Deserialize::interfaceSystemRuptureSet);
+  }
+
   /* Fault rupture-set. */
   static Optional<FaultRuptureSet> readFaultRuptureSet(Path dir, ModelData data) {
     return read(dir, RUPTURE_SET, data, Deserialize::faultRuptureSet);
@@ -266,8 +271,8 @@ class ModelFiles {
   }
 
   /* Fault system rupture-set. */
-  static Optional<SystemRuptureSet> readSystemRuptureSet(Path dir, ModelData data) {
-    return read(dir, RUPTURE_SET, data, Deserialize::systemRuptureSet);
+  static Optional<SystemRuptureSet> readCrustalSystemRuptureSet(Path dir, ModelData data) {
+    return read(dir, RUPTURE_SET, data, Deserialize::crustalSystemRuptureSet);
   }
 
   /* Grid rupture-set. */
-- 
GitLab