From 835cc7f687e27abcf9e12e40ddc25307e38c93bf Mon Sep 17 00:00:00 2001
From: Peter Powers <pmpowers@usgs.gov>
Date: Tue, 18 Jun 2024 13:08:27 -0600
Subject: [PATCH] more iterables updates

---
 .../java/gov/usgs/earthquake/nshmp/Text.java  | 34 +------------------
 .../nshmp/gmm/GroundMotionTables.java         | 14 +++++---
 .../nshmp/model/AbstractRuptureSet.java       |  4 +--
 .../gov/usgs/earthquake/nshmp/TextTests.java  | 32 -----------------
 4 files changed, 11 insertions(+), 73 deletions(-)

diff --git a/src/main/java/gov/usgs/earthquake/nshmp/Text.java b/src/main/java/gov/usgs/earthquake/nshmp/Text.java
index 774107e5..b3b95801 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/Text.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/Text.java
@@ -1,7 +1,6 @@
 package gov.usgs.earthquake.nshmp;
 
 import static com.google.common.base.Preconditions.checkArgument;
-import static gov.usgs.earthquake.nshmp.Text.Delimiter.COMMA;
 import static gov.usgs.earthquake.nshmp.Text.Delimiter.DASH;
 import static gov.usgs.earthquake.nshmp.Text.Delimiter.SPACE;
 import static gov.usgs.earthquake.nshmp.Text.Delimiter.UNDERSCORE;
@@ -15,14 +14,11 @@ import java.util.stream.Collectors;
 import java.util.stream.DoubleStream;
 
 import com.google.common.base.CharMatcher;
-import com.google.common.base.Enums;
 import com.google.common.base.Joiner;
 import com.google.common.base.Splitter;
 import com.google.common.base.StandardSystemProperty;
 import com.google.common.base.Strings;
-import com.google.common.collect.FluentIterable;
 import com.google.common.collect.Lists;
-import com.google.common.primitives.Doubles;
 
 /**
  * Miscellaneous {@code String} utilities.
@@ -69,20 +65,6 @@ public class Text {
     return name;
   }
 
-  /**
-   * Split {@code sequence} into {@code Double} components and make them
-   * available through an immutable {@code List}.
-   *
-   * @param sequence the sequence of characters to split
-   * @param delimiter the {@link Delimiter} to split on
-   */
-  public static List<Double> splitToDoubleList(CharSequence sequence, Delimiter delimiter) {
-    return FluentIterable
-        .from(delimiter.splitter().split(sequence))
-        .transform(Doubles.stringConverter())
-        .toList();
-  }
-
   /**
    * Delimiter identifiers, each of which can provide a {@link Joiner} and
    * {@link Splitter}. A delimiter's 'joiner' skips nulls; a delimiter's
@@ -129,6 +111,7 @@ public class Text {
 
     /**
      * Returns a null-skipping {@link Joiner} on this {@code Delimiter}.
+     *
      * @see Joiner#skipNulls()
      */
     public Joiner joiner() {
@@ -147,21 +130,6 @@ public class Text {
     }
   }
 
-  /**
-   * Return a {@code String} representation of an {@code Iterable<Enum>} where
-   * {@code Enum.name()} is used instead of {@code Enum.toString()}.
-   *
-   * @param iterable to process
-   * @param enumClass
-   */
-  public static <E extends Enum<E>> String enumsToString(Iterable<E> iterable,
-      Class<E> enumClass) {
-    return addBrackets(FluentIterable
-        .from(iterable)
-        .transform(Enums.stringConverter(enumClass).reverse())
-        .join(COMMA.joiner()));
-  }
-
   /**
    * Convert an {@code Enum.name()} to a space-delimited presentation-friendly
    * string.
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/gmm/GroundMotionTables.java b/src/main/java/gov/usgs/earthquake/nshmp/gmm/GroundMotionTables.java
index ac7eadd0..501aee24 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/gmm/GroundMotionTables.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/gmm/GroundMotionTables.java
@@ -3,7 +3,6 @@ package gov.usgs.earthquake.nshmp.gmm;
 import static com.google.common.io.Resources.getResource;
 import static com.google.common.io.Resources.readLines;
 import static gov.usgs.earthquake.nshmp.Text.NEWLINE;
-import static gov.usgs.earthquake.nshmp.Text.splitToDoubleList;
 import static gov.usgs.earthquake.nshmp.Text.Delimiter.COMMA;
 import static gov.usgs.earthquake.nshmp.Text.Delimiter.SPACE;
 import static gov.usgs.earthquake.nshmp.gmm.Imt.PGA;
@@ -34,7 +33,7 @@ import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.io.LineProcessor;
 
-import gov.usgs.earthquake.nshmp.Text;
+import gov.usgs.earthquake.nshmp.Text.Delimiter;
 import gov.usgs.earthquake.nshmp.data.DoubleData;
 import gov.usgs.earthquake.nshmp.gmm.GmmUtils.CeusSiteClass;
 import gov.usgs.earthquake.nshmp.gmm.GroundMotionTables.GroundMotionTable.Position;
@@ -655,8 +654,7 @@ final class GroundMotionTables {
         String imtHeaders = line.replace("\"", "");
         imtHeaders = imtHeaders.substring(imtHeaders.indexOf("FS") + 3);
 
-        List<Double> imtVals =
-            splitToDoubleList(imtHeaders, COMMA);
+        List<Double> imtVals = splitToDoubleList(imtHeaders, COMMA);
         for (Double t : imtVals) {
           Imt imt = (t == -1.) ? Imt.PGV : (t == 0.) ? Imt.PGA : Imt.fromPeriod(t);
           imtList.add(imt);
@@ -781,7 +779,7 @@ final class GroundMotionTables {
         return true;
       }
 
-      List<Double> values = Text.splitToDoubleList(line, SPACE);
+      List<Double> values = splitToDoubleList(line, SPACE);
 
       if (values.size() == 1) {
         // reset rIndex for every single mag line encountered
@@ -841,4 +839,10 @@ final class GroundMotionTables {
     return out;
   }
 
+  private static List<Double> splitToDoubleList(String line, Delimiter delimiter) {
+    return delimiter.splitter().splitToStream(line)
+        .map(Double::valueOf)
+        .collect(toList());
+  }
+
 }
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/model/AbstractRuptureSet.java b/src/main/java/gov/usgs/earthquake/nshmp/model/AbstractRuptureSet.java
index a44dc265..80232b83 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/model/AbstractRuptureSet.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/model/AbstractRuptureSet.java
@@ -9,8 +9,6 @@ import static gov.usgs.earthquake.nshmp.Text.checkName;
 import java.util.AbstractList;
 import java.util.function.Predicate;
 
-import com.google.common.collect.FluentIterable;
-
 import gov.usgs.earthquake.nshmp.geo.Location;
 
 /**
@@ -97,7 +95,7 @@ abstract class AbstractRuptureSet<T extends Source> extends
   @Override
   public Iterable<T> iterableForLocation(Location loc, double distance) {
     Predicate<T> filter = distanceFilter(loc, distance);
-    return FluentIterable.from(this).filter(filter::test);
+    return () -> this.stream().filter(filter).iterator();
   }
 
   static abstract class Builder {
diff --git a/src/test/java/gov/usgs/earthquake/nshmp/TextTests.java b/src/test/java/gov/usgs/earthquake/nshmp/TextTests.java
index c7ffb449..68c53543 100644
--- a/src/test/java/gov/usgs/earthquake/nshmp/TextTests.java
+++ b/src/test/java/gov/usgs/earthquake/nshmp/TextTests.java
@@ -116,38 +116,6 @@ class TextTests {
     str = "1 2 3 4";
     split = SPACE.splitter().split(str);
     assertEquals(str, SPACE.joiner().join(split));
-    assertNotEquals(str, SPACE.joiner().join(Text.splitToDoubleList(str, SPACE)));
-
-    str = "1.0 2.0 3.0 4.0";
-    List<Double> splitDouble = Text.splitToDoubleList(str, SPACE);
-    assertEquals(str, SPACE.joiner().join(splitDouble));
-    str = "1.1 2.02 3.3 4.0";
-    splitDouble = Text.splitToDoubleList(str, SPACE);
-    assertEquals(str, SPACE.joiner().join(splitDouble));
-    // trailing zeros are not reproduced
-    str = "1.10 2.02 3.3 4.0";
-    splitDouble = Text.splitToDoubleList(str, SPACE);
-    assertNotEquals(str, SPACE.joiner().join(splitDouble));
-
-    // doubles below 1e-3 are returned in scientific notation, with capital E
-    str = "1.0E-4 2.02 3.3 4.0";
-    splitDouble = Text.splitToDoubleList(str, SPACE);
-    assertEquals(str, SPACE.joiner().join(splitDouble));
-    str = "1.0E-3 2.02 3.3 4.0";
-    splitDouble = Text.splitToDoubleList(str, SPACE);
-    assertNotEquals(str, SPACE.joiner().join(splitDouble));
-
-    List<Double> listDoubles = List.of(1e-4, 2.02, 3.3);
-    String joined = COLON.joiner().join(listDoubles);
-    splitDouble = Text.splitToDoubleList(joined, COLON);
-    assertEquals(listDoubles, splitDouble);
-  }
-
-  @Test
-  final void testEnumsToString() {
-    List<TestEnum> v = List.of(TestEnum.values());
-    String enumString = "[ABC,DEF,G_HI_J]";
-    assertEquals(enumString, Text.enumsToString(v, TestEnum.class));
   }
 
   @Test
-- 
GitLab