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