This is an automated email from the ASF dual-hosted git repository.

desruisseaux pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git

commit 02e2210684c3b41ea2b5da7730bc88929e21de84
Author: Martin Desruisseaux <martin.desruisse...@geomatys.com>
AuthorDate: Wed Dec 29 18:01:47 2021 +0100

    Layout TIFF "image description" on a single line.
---
 .../java/org/apache/sis/internal/util/Strings.java | 28 +++++++++++++++++++++-
 .../org/apache/sis/internal/util/package-info.java |  2 +-
 .../sis/storage/geotiff/ImageFileDirectory.java    |  3 ++-
 3 files changed, 30 insertions(+), 3 deletions(-)

diff --git 
a/core/sis-utility/src/main/java/org/apache/sis/internal/util/Strings.java 
b/core/sis-utility/src/main/java/org/apache/sis/internal/util/Strings.java
index 925a528..a07b148 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/internal/util/Strings.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/internal/util/Strings.java
@@ -21,6 +21,7 @@ import java.util.Formatter;
 import java.util.FormattableFlags;
 import org.apache.sis.util.Static;
 import org.apache.sis.util.Classes;
+import org.apache.sis.util.ArraysExt;
 import org.apache.sis.util.Characters;
 import org.apache.sis.util.CharSequences;
 
@@ -30,7 +31,7 @@ import org.apache.sis.util.CharSequences;
  * Most of those methods are for {@link Object#toString()} implementations.
  *
  * @author  Martin Desruisseaux (Geomatys)
- * @version 1.1
+ * @version 1.2
  * @since   0.3
  * @module
  */
@@ -272,6 +273,31 @@ public final class Strings extends Static {
     }
 
     /**
+     * Concatenates a potentially multi-lines text to a single line.
+     * White spaces at the beginning and end of each line are removed.
+     *
+     * @param  delimiter  the separator to insert between lines.
+     * @param  text       the multi-lines text to convert to single line, or 
{@code null}.
+     * @return the        the text on a single line text, or {@code null} if 
none.
+     */
+    public static String singleLine(final String delimiter, final CharSequence 
text) {
+        if (text != null) {
+            final CharSequence[] lines = CharSequences.splitOnEOL(text);
+            int count = 0;
+            for (int i=0; i<lines.length; i++) {
+                CharSequence line = CharSequences.trimWhitespaces(lines[i]);
+                if (line.length() != 0) lines[count++] = line;          // 
TODO: use !line.isEmpty() with JDK15.
+            }
+            switch (count) {
+                case 0:  break;
+                case 1:  return lines[0].toString();
+                default: return String.join(delimiter, ArraysExt.resize(lines, 
count));
+            }
+        }
+        return null;
+    }
+
+    /**
      * Returns a string representation of an instance of the given class 
having the given properties.
      * This is a convenience method for implementation of {@link 
Object#toString()} methods that are
      * used mostly for debugging purpose.
diff --git 
a/core/sis-utility/src/main/java/org/apache/sis/internal/util/package-info.java 
b/core/sis-utility/src/main/java/org/apache/sis/internal/util/package-info.java
index 54cd1b9..8d4ec29 100644
--- 
a/core/sis-utility/src/main/java/org/apache/sis/internal/util/package-info.java
+++ 
b/core/sis-utility/src/main/java/org/apache/sis/internal/util/package-info.java
@@ -30,7 +30,7 @@
  * so some serialized classes still exist in this package.
  *
  * @author  Martin Desruisseaux (Geomatys)
- * @version 1.1
+ * @version 1.2
  * @since   0.3
  * @module
  */
diff --git 
a/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/ImageFileDirectory.java
 
b/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/ImageFileDirectory.java
index d4330d9..c7484ad 100644
--- 
a/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/ImageFileDirectory.java
+++ 
b/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/ImageFileDirectory.java
@@ -46,6 +46,7 @@ import org.apache.sis.internal.coverage.j2d.ColorModelFactory;
 import org.apache.sis.internal.coverage.j2d.SampleModelFactory;
 import org.apache.sis.internal.util.UnmodifiableArrayList;
 import org.apache.sis.internal.util.Numerics;
+import org.apache.sis.internal.util.Strings;
 import org.apache.sis.metadata.iso.DefaultMetadata;
 import org.apache.sis.storage.DataStoreException;
 import org.apache.sis.storage.DataStoreContentException;
@@ -948,7 +949,7 @@ final class ImageFileDirectory extends DataCube {
              */
             case Tags.ImageDescription: {
                 for (final String value : type.readString(input(), count, 
encoding())) {
-                    metadata.addTitle(value);
+                    metadata.addTitle(Strings.singleLine(" ", value));
                 }
                 break;
             }

Reply via email to