diff --git a/src/org/opensha2/calc/CalcConfig.java b/src/org/opensha2/calc/CalcConfig.java index 3b5cd571d7eb87793a300c3c3b07da6bea00a293..2e3c65f667787ecbc0ecc06bd56a02ea63781a30 100644 --- a/src/org/opensha2/calc/CalcConfig.java +++ b/src/org/opensha2/calc/CalcConfig.java @@ -10,10 +10,10 @@ import static java.nio.charset.StandardCharsets.UTF_8; import static org.opensha2.data.XySequence.create; import static org.opensha2.data.XySequence.immutableCopyOf; import static org.opensha2.util.Parsing.enumsToString; +import static org.opensha2.util.TextUtils.LOG_INDENT; +import static org.opensha2.util.TextUtils.LOG_VALUE_COLUMN; import static org.opensha2.util.TextUtils.NEWLINE; -// import static org.opensha2.util.TextUtils.*; - import java.io.IOException; import java.io.Reader; import java.lang.reflect.Type; @@ -31,7 +31,6 @@ import org.opensha2.data.XySequence; import org.opensha2.eq.model.SourceType; import org.opensha2.gmm.Gmm; import org.opensha2.gmm.Imt; -import org.opensha2.util.TextUtils; import com.google.common.base.Optional; import com.google.common.collect.Maps; @@ -200,7 +199,7 @@ public final class CalcConfig { } } return new StringBuilder() - .append(formatGroup("Curve")) + .append(LOG_INDENT).append("Curve") .append(formatEntry(Key.EXCEEDANCE_MODEL, exceedanceModel)) .append(formatEntry(Key.TRUNCATION_LEVEL, truncationLevel)) .append(formatEntry(Key.IMTS, enumsToString(imts, Imt.class))) @@ -355,7 +354,7 @@ public final class CalcConfig { private StringBuilder asString() { return new StringBuilder() - .append(formatGroup("Performance")) + .append(LOG_INDENT).append("Performance") .append(formatEntry(Key.OPTIMIZE_GRIDS, optimizeGrids)) .append(formatEntry(Key.COLLAPSE_MFDS, collapseMfds)) .append(formatEntry(Key.SYSTEM_PARTITION, systemPartition)) @@ -453,7 +452,7 @@ public final class CalcConfig { private StringBuilder asString() { return new StringBuilder() - .append(formatGroup("Output")) + .append(LOG_INDENT).append("Output") .append(formatEntry(Key.DIRECTORY, directory.toAbsolutePath().normalize())) .append(formatEntry(Key.CURVE_TYPES, enumsToString(curveTypes, CurveType.class))) .append(formatEntry(Key.FLUSH_LIMIT, flushLimit)); @@ -548,7 +547,7 @@ public final class CalcConfig { private StringBuilder asString() { return new StringBuilder() - .append(formatGroup("Deaggregation")) + .append(LOG_INDENT).append("Deaggregation") .append(formatEntry("R")) .append("min=").append(rMin).append(", ") .append("max=").append(rMax).append(", ") @@ -600,7 +599,7 @@ public final class CalcConfig { @Override public String toString() { - return new StringBuilder("Calc Configuration: ") + return new StringBuilder("Calc Config: ") .append(resource.isPresent() ? resource.get().toAbsolutePath().normalize() : "(from defaults)") @@ -611,38 +610,25 @@ public final class CalcConfig { .toString(); } - // public static <E extends Enum<E>> String format(E id) { - // return format(id.toString()); - // } - - private static final int GROUP_INDENT_SIZE = 8; - private static final int KEY_INDENT_SIZE = 10; - private static final int VALUE_INDENT_SIZE = 28; private static final int MAX_COL = 100; - private static final int VALUE_WIDTH = MAX_COL - VALUE_INDENT_SIZE; - private static final String S = " "; - private static final String GROUP_INDENT = repeat(S, GROUP_INDENT_SIZE); - private static final String KEY_INDENT = repeat(S, KEY_INDENT_SIZE); - private static final String VALUE_INDENT = repeat(S, VALUE_INDENT_SIZE); - - private static String formatGroup(String group) { - return TextUtils.NEWLINE + GROUP_INDENT + group; - } + private static final int VALUE_WIDTH = MAX_COL - LOG_VALUE_COLUMN; + private static final String KEY_INDENT = LOG_INDENT + " "; + private static final String VALUE_INDENT = NEWLINE + repeat(" ", LOG_VALUE_COLUMN); private static String formatEntry(String key) { - return NEWLINE + padEnd(KEY_INDENT + '.' + key + ':', VALUE_INDENT_SIZE, ' '); + return padEnd(KEY_INDENT + '.' + key + ':', LOG_VALUE_COLUMN, ' '); } private static <E extends Enum<E>> String formatEntry(E key, Object value) { - return NEWLINE + padEnd(KEY_INDENT + '.' + key + ':', VALUE_INDENT_SIZE, ' ') + value; + return padEnd(KEY_INDENT + '.' + key + ':', LOG_VALUE_COLUMN, ' ') + value; } /* wrap a commma-delimited string */ private static String wrap(String s, boolean pad) { - if (s.length() <= VALUE_WIDTH) return pad ? NEWLINE + VALUE_INDENT + s : s; + if (s.length() <= VALUE_WIDTH) return pad ? VALUE_INDENT + s : s; StringBuilder sb = new StringBuilder(); int lastCommaIndex = s.substring(0, VALUE_WIDTH).lastIndexOf(',') + 1; - if (pad) sb.append(NEWLINE).append(VALUE_INDENT); + if (pad) sb.append(VALUE_INDENT); sb.append(s.substring(0, lastCommaIndex)); sb.append(wrap(s.substring(lastCommaIndex).trim(), true)); return sb.toString(); @@ -660,21 +646,6 @@ public final class CalcConfig { }) .create(); - // TODO clean - public static void main(String[] args) throws IOException { - - // CalcConfig cc = - // Builder.fromFile(Paths.get("etc/examples/5-complex-model/config-sites.json")).build(); - // System.out.println(cc); - - CalcConfig cc = Builder - .withDefaults() - // .extend(Builder.fromFile(Paths.get("etc/examples/6-enhanced-output/config.json"))) - .extend(Builder.fromFile(Paths.get("etc/examples/2-custom-config/config.json"))) - .build(); - System.out.println(cc); - } - /** * A builder of configuration instances. */ diff --git a/src/org/opensha2/calc/Deaggregation.java b/src/org/opensha2/calc/Deaggregation.java index 0a34f659118598201872e9ef6b866a3ea6eca816..dced2dfc345615707cbfe5d319cce203ea24e8db 100644 --- a/src/org/opensha2/calc/Deaggregation.java +++ b/src/org/opensha2/calc/Deaggregation.java @@ -4,7 +4,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkState; import static org.opensha2.data.Data.checkInRange; import static org.opensha2.util.TextUtils.NEWLINE; -import static org.opensha2.util.TextUtils.format; +import static org.opensha2.util.TextUtils.LOG_INDENT; import static org.opensha2.data.Data.multiply; import static com.google.common.primitives.Doubles.toArray; @@ -207,11 +207,16 @@ public final class Deaggregation { @Override public String toString() { return new StringBuilder("Deagg config:") - .append(format("imt")).append(imt.name()).append(" [").append(imt).append("]") - .append(format("iml")).append(iml).append(" ").append(imt.units()) - .append(format("rate")).append(rate).append(" yrâ»Â¹") - .append(format("returnPeriod")).append(returnPeriod).append(" yrs") - .append(format("probabilityModel")).append(probabilityModel) + .append(LOG_INDENT) + .append("imt: ").append(imt.name()).append(" [").append(imt).append("]") + .append(LOG_INDENT) + .append("iml: ").append(iml).append(" ").append(imt.units()) + .append(LOG_INDENT) + .append("rate: ").append(rate).append(" yrâ»Â¹") + .append(LOG_INDENT) + .append("returnPeriod: ").append(returnPeriod).append(" yrs") + .append(LOG_INDENT) + .append("probabilityModel: ").append(probabilityModel) .append(" [trunc = ").append(truncation).append("]") .toString(); } diff --git a/src/org/opensha2/calc/Site.java b/src/org/opensha2/calc/Site.java index 6a49dc9752f803f630006b00149eb7bd5cff12de..1fb8ba1f3556c89e4393a2e1fb217c3a5731925f 100644 --- a/src/org/opensha2/calc/Site.java +++ b/src/org/opensha2/calc/Site.java @@ -125,7 +125,7 @@ public class Site implements Named { @Override public String toString() { - return new StringBuilder(Strings.padEnd(name, 24, ' ')) + return new StringBuilder(Strings.padEnd(name, 20, ' ')) .append(String.format("%.3f %.3f Vs30=%s ", location.lon(), location.lat(), vs30)) .append(vsInferred ? "inferred " : "measured ") .append(String.format("Z1.0=%s Z2.5=%s", z1p0, z2p5)) diff --git a/src/org/opensha2/calc/Sites.java b/src/org/opensha2/calc/Sites.java index 4afb4a40c8baa7d14f9b8ab10d8e453da841a77b..c3f869afbeb9912bde433b4ecfc4179eda67d576 100644 --- a/src/org/opensha2/calc/Sites.java +++ b/src/org/opensha2/calc/Sites.java @@ -2,14 +2,13 @@ package org.opensha2.calc; import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkState; -import static com.google.common.base.Strings.padStart; -import static com.google.common.base.Strings.repeat; +import static com.google.common.base.Strings.padEnd; import static java.nio.charset.StandardCharsets.UTF_8; import static org.opensha2.geo.BorderType.MERCATOR_LINEAR; import static org.opensha2.util.GeoJson.validateProperty; import static org.opensha2.util.Parsing.splitToList; -import static org.opensha2.util.TextUtils.ALIGN_COL; -import static org.opensha2.util.TextUtils.*; +import static org.opensha2.util.TextUtils.LOG_INDENT; +import static org.opensha2.util.TextUtils.LOG_VALUE_COLUMN; import java.io.IOException; import java.io.Reader; @@ -31,10 +30,8 @@ import org.opensha2.geo.Regions; import org.opensha2.util.GeoJson; import org.opensha2.util.Parsing; import org.opensha2.util.Parsing.Delimiter; -import org.opensha2.util.TextUtils; import com.google.common.base.Optional; -import com.google.common.base.Strings; import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; import com.google.common.reflect.TypeToken; @@ -194,8 +191,8 @@ public final class Sites { } private static final int TO_STRING_LIMIT = 5; - private static final int SITE_INDENT_SIZE = 8; - private static final String SITE_INDENT = Strings.repeat(" ", SITE_INDENT_SIZE); + private static final String SITE_INDENT = LOG_INDENT + " "; +// private static final String SITE_STRING = padEnd(SITE_INDENT + "Site:", LOG_VALUE_COLUMN, ' '); /* * Parent class for deserialization of different GeoJSON site file formats @@ -211,16 +208,11 @@ public final class Sites { .append(" [size=").append(size).append("]"); if (!region) { for (Site site : Iterables.limit(this, TO_STRING_LIMIT)) { - sb.append(NEWLINE) - .append(SITE_INDENT) - .append("Site: ") - .append(site); + sb.append(SITE_INDENT).append(site); } if (size > TO_STRING_LIMIT) { int delta = size - TO_STRING_LIMIT; - sb.append(NEWLINE) - .append(SITE_INDENT) - .append("... and ").append(delta).append(" more ..."); + sb.append(SITE_INDENT).append("... and ").append(delta).append(" more ..."); } } return sb.toString(); diff --git a/src/org/opensha2/eq/model/ModelConfig.java b/src/org/opensha2/eq/model/ModelConfig.java index edd4f00afa87a8c20fc39b0550e48d8e1d9ba31e..b263e55c174f789ed1a91e9908fa72dcb7981c15 100644 --- a/src/org/opensha2/eq/model/ModelConfig.java +++ b/src/org/opensha2/eq/model/ModelConfig.java @@ -4,15 +4,16 @@ import static com.google.common.base.CaseFormat.LOWER_CAMEL; import static com.google.common.base.CaseFormat.UPPER_UNDERSCORE; import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkState; +import static com.google.common.base.Strings.padEnd; import static java.nio.charset.StandardCharsets.UTF_8; -import static org.opensha2.util.TextUtils.format; +import static org.opensha2.util.TextUtils.LOG_INDENT; +import static org.opensha2.util.TextUtils.LOG_VALUE_COLUMN; import java.io.IOException; import java.io.Reader; import java.nio.file.Files; import java.nio.file.Path; -import org.opensha2.calc.CalcConfig; import org.opensha2.eq.fault.surface.RuptureFloating; import org.opensha2.eq.model.AreaSource.GridScaling; @@ -20,7 +21,6 @@ import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonElement; import com.google.gson.JsonParser; -import com.google.gson.JsonStreamParser; /** * Model and calculation configuration class. No defaults; 'config.json' must be @@ -87,20 +87,26 @@ final class ModelConfig { @Override public String toString() { - return new StringBuilder("Model Configuration:") - .append(format(Key.NAME)).append(name) - .append(format(Key.RESOURCE)).append(resource.toAbsolutePath().normalize()) - .append(format(Key.SURFACE_SPACING)).append(surfaceSpacing) - .append(format(Key.RUPTURE_FLOATING)).append(ruptureFloating) - .append(format(Key.RUPTURE_VARIABILITY)).append(ruptureVariability) - .append(format(Key.POINT_SOURCE_TYPE)).append(pointSourceType) - .append(format(Key.AREA_GRID_SCALING)).append(areaGridScaling) + return new StringBuilder("Model Config: ") + .append(resource.toAbsolutePath().normalize()) + .append(LOG_INDENT).append("Model") + .append(formatEntry(Key.NAME, name)) + .append(formatEntry(Key.SURFACE_SPACING, surfaceSpacing)) + .append(formatEntry(Key.RUPTURE_FLOATING, ruptureFloating)) + .append(formatEntry(Key.RUPTURE_VARIABILITY, ruptureVariability)) + .append(formatEntry(Key.POINT_SOURCE_TYPE, pointSourceType)) + .append(formatEntry(Key.AREA_GRID_SCALING, areaGridScaling)) .toString(); } + private static final String KEY_INDENT = LOG_INDENT + " "; + + private static <E extends Enum<E>> String formatEntry(E key, Object value) { + return padEnd(KEY_INDENT + '.' + key + ':', LOG_VALUE_COLUMN, ' ') + value; + } + final static class Builder { - private static final String ID = "ModelConfig.Builder"; private boolean built = false; private String name; diff --git a/src/org/opensha2/util/TextUtils.java b/src/org/opensha2/util/TextUtils.java index 28e243ef095951c9fa8b45ea763f05778c55abf5..33be0461f267766d042cb33236bba0ed0ba72690 100644 --- a/src/org/opensha2/util/TextUtils.java +++ b/src/org/opensha2/util/TextUtils.java @@ -1,12 +1,7 @@ package org.opensha2.util; import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Strings.padStart; -import static com.google.common.base.Strings.repeat; -import java.util.Map; - -import com.google.common.base.Joiner; import com.google.common.base.StandardSystemProperty; import com.google.common.base.Strings; @@ -19,26 +14,14 @@ public class TextUtils { /** System specific newline string. */ public static final String NEWLINE = StandardSystemProperty.LINE_SEPARATOR.value(); - - public static final int ALIGN_COL = 24; - private static final int MAX_COL = 100; - private static final int DELTA_COL = MAX_COL - ALIGN_COL - 2; - private static final String INDENT = NEWLINE + repeat(" ", ALIGN_COL + 2); - - - private static final Joiner.MapJoiner MAP_JOIN = Joiner.on(", ").withKeyValueSeparator(": "); - private String toString(Map<?, ?> map) { - return Parsing.addBrackets(MAP_JOIN.join(map)); - } + /** The column on which to align values in a log entry. */ + public static final int LOG_VALUE_COLUMN = 32; - public static <E extends Enum<E>> String format(E id) { - return format(id.toString()); - } + private static final int LOG_INDENT_SIZE = 8; - public static String format(String s) { - return NEWLINE + padStart(s, ALIGN_COL, ' ') + ": "; - } + /** A newline plus the number of spaces to indent multiline log entries. */ + public static final String LOG_INDENT = NEWLINE + Strings.repeat(" ", LOG_INDENT_SIZE); /** * Verifies that the supplied {@code String} is neither {@code null} or