Author: desruisseaux
Date: Sun May 15 17:42:44 2016
New Revision: 1743925

URL: http://svn.apache.org/viewvc?rev=1743925&view=rev
Log:
Command-line "transform" operation in "--verbose" mode should format the 
CoordinateOperation instead than the MathTransform.
The user should be notified if that coordinate operation can not be formatted 
in valid WKT.
Should also format the domain of validity.

Modified:
    
sis/branches/JDK8/application/sis-console/src/main/java/org/apache/sis/console/TransformCommand.java
    
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/AbstractCoordinateOperation.java
    
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java
    
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties
    
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties
    
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.java
    
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.properties
    
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages_fr.properties
    
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.java
    
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.properties
    
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary_fr.properties

Modified: 
sis/branches/JDK8/application/sis-console/src/main/java/org/apache/sis/console/TransformCommand.java
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK8/application/sis-console/src/main/java/org/apache/sis/console/TransformCommand.java?rev=1743925&r1=1743924&r2=1743925&view=diff
==============================================================================
--- 
sis/branches/JDK8/application/sis-console/src/main/java/org/apache/sis/console/TransformCommand.java
 [UTF-8] (original)
+++ 
sis/branches/JDK8/application/sis-console/src/main/java/org/apache/sis/console/TransformCommand.java
 [UTF-8] Sun May 15 17:42:44 2016
@@ -28,9 +28,11 @@ import javax.measure.unit.NonSI;
 import javax.measure.unit.SI;
 import javax.measure.converter.ConversionException;
 import org.opengis.metadata.Metadata;
-import org.opengis.geometry.MismatchedDimensionException;
+import org.opengis.metadata.extent.Extent;
 import org.opengis.metadata.extent.GeographicBoundingBox;
+import org.opengis.geometry.MismatchedDimensionException;
 import org.opengis.util.FactoryException;
+import org.opengis.util.InternationalString;
 import org.opengis.referencing.IdentifiedObject;
 import org.opengis.referencing.ReferenceSystem;
 import org.opengis.referencing.NoSuchAuthorityCodeException;
@@ -58,6 +60,7 @@ import org.apache.sis.io.wkt.Colors;
 import org.apache.sis.io.wkt.Convention;
 import org.apache.sis.io.wkt.Transliterator;
 import org.apache.sis.io.wkt.WKTFormat;
+import org.apache.sis.io.wkt.Warnings;
 import org.apache.sis.math.DecimalFunctions;
 import org.apache.sis.math.MathFunctions;
 import org.apache.sis.measure.Units;
@@ -198,39 +201,10 @@ final class TransformCommand extends Met
         printHeader(Vocabulary.Keys.Destination); 
printNameAndIdentifier(operation.getTargetCRS(), false);
         printHeader(Vocabulary.Keys.Operations);  printOperations (operation, 
false);
         outHeader.nextLine();
+        printDomainOfValidity(operation.getDomainOfValidity());
+        printAccuracy(CRS.getLinearAccuracy(operation));
         if (options.containsKey(Option.VERBOSE)) {
-            final WKTFormat f = new WKTFormat(locale, timezone);
-            f.setConvention(options.containsKey(Option.DEBUG) ? 
Convention.INTERNAL : convention);
-            if (colors) {
-                f.setColors(Colors.DEFAULT);
-            }
-            final CharSequence[] lines = 
CharSequences.splitOnEOL(f.format(operation.getMathTransform()));
-            for (int i=0; i<lines.length; i++) {
-                if (i == 0) {
-                    printHeader(Vocabulary.Keys.Details);
-                } else {
-                    printCommentLinePrefix();
-                    outHeader.nextColumn();
-                }
-                outHeader.append(lines[i]);
-                outHeader.nextLine();
-            }
-        }
-        double accuracy = CRS.getLinearAccuracy(operation);
-        if (accuracy >= 0) {
-            if (accuracy == 0) {
-                accuracy = Formulas.LINEAR_TOLERANCE;
-            }
-            printHeader(Vocabulary.Keys.Accuracy);
-            if (colors) {
-                outHeader.append(X364.FOREGROUND_YELLOW.sequence());    // 
Same as Colors.DEFAULT for ElementKind.NUMBER
-            }
-            outHeader.append(Double.toString(accuracy));
-            if (colors) {
-                outHeader.append(X364.FOREGROUND_DEFAULT.sequence());
-            }
-            outHeader.append(" metres");
-            outHeader.nextLine();
+            printDetails();
         }
         outHeader.flush();
         outHeader = null;
@@ -354,6 +328,92 @@ final class TransformCommand extends Met
             }
         }
     }
+
+    /**
+     * Prints the accuracy.
+     */
+    private void printAccuracy(double accuracy) {
+        if (accuracy >= 0) {
+            if (accuracy == 0) {
+                accuracy = Formulas.LINEAR_TOLERANCE;
+            }
+            printHeader(Vocabulary.Keys.Accuracy);
+            if (colors) {
+                outHeader.append(X364.FOREGROUND_YELLOW.sequence());    // 
Same as Colors.DEFAULT for ElementKind.NUMBER
+            }
+            outHeader.append(Double.toString(accuracy));
+            if (colors) {
+                outHeader.append(X364.FOREGROUND_DEFAULT.sequence());
+            }
+            outHeader.append(" metres");
+            outHeader.nextLine();
+        }
+    }
+
+    /**
+     * Prints a textual description of the domain of validity. This method 
tries to reduce the string length by
+     * the use of some heuristic rules based on the syntax used in EPSG 
dataset. For example the following string:
+     *
+     * <blockquote>Canada - onshore and offshore - Alberta; British Columbia 
(BC); Manitoba; New Brunswick (NB);
+     * Newfoundland and Labrador; Northwest Territories (NWT); Nova Scotia 
(NS); Nunavut; Ontario; Prince Edward
+     * Island (PEI); Quebec; Saskatchewan; Yukon.</blockquote>
+     *
+     * is replaced by:
+     *
+     * <blockquote>Canada - onshore and offshore</blockquote>
+     */
+    private void printDomainOfValidity(final Extent domain) {
+        if (domain != null) {
+            final InternationalString description = domain.getDescription();
+            if (description != null) {
+                String text = description.toString(locale);
+                if (text.length() >= 80) {
+                    int end = text.indexOf(';');
+                    if (end >= 0) {
+                        int s = text.lastIndexOf('-', end);
+                        if (s >= 0) {
+                            end = s;
+                        }
+                        text = text.substring(0, end).trim();
+                    }
+                }
+                printHeader(Vocabulary.Keys.Domain);
+                outHeader.append(text);
+                outHeader.nextLine();
+            }
+        }
+    }
+
+    /**
+     * Prints the coordinate operation or math transform in Well Known Text 
format.
+     * This information is printed only if the {@code --verbose} option was 
specified.
+     */
+    private void printDetails() {
+        final boolean debug = options.containsKey(Option.DEBUG);
+        final WKTFormat f = new WKTFormat(locale, timezone);
+        if (colors) f.setColors(Colors.DEFAULT);
+        f.setConvention(convention);
+        CharSequence[] lines = CharSequences.splitOnEOL(f.format(debug ? 
operation.getMathTransform() : operation));
+        for (int i=0; i<lines.length; i++) {
+            if (i == 0) {
+                printHeader(Vocabulary.Keys.Details);
+            } else {
+                printCommentLinePrefix();
+                outHeader.nextColumn();
+            }
+            outHeader.append(lines[i]);
+            outHeader.nextLine();
+        }
+        final Warnings warnings = f.getWarnings();
+        if (warnings != null) {
+            lines = CharSequences.splitOnEOL(warnings.toString());
+            if (lines.length != 0) {                                           
 // Paranoiac check.
+                printHeader(Vocabulary.Keys.Note);
+                outHeader.append(lines[0]);
+                outHeader.nextLine();
+            }
+        }
+    }
 
     /**
      * Prints a quoted text in the given color.

Modified: 
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/AbstractCoordinateOperation.java
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/AbstractCoordinateOperation.java?rev=1743925&r1=1743924&r2=1743925&view=diff
==============================================================================
--- 
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/AbstractCoordinateOperation.java
 [UTF-8] (original)
+++ 
sis/branches/JDK8/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/AbstractCoordinateOperation.java
 [UTF-8] Sun May 15 17:42:44 2016
@@ -911,7 +911,11 @@ check:      for (int isTarget=0; ; isTar
         if (formatter.getConvention().majorVersion() == 1) {
             formatter.setInvalidWKT(this, null);
         }
-        return isComponent ? "CoordinateOperationStep" : 
WKTKeywords.CoordinateOperation;
+        if (isComponent) {
+            formatter.setInvalidWKT(this, null);
+            return "CoordinateOperationStep";
+        }
+        return WKTKeywords.CoordinateOperation;
     }
 
     /**

Modified: 
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java?rev=1743925&r1=1743924&r2=1743925&view=diff
==============================================================================
--- 
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java
 [UTF-8] (original)
+++ 
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java
 [UTF-8] Sun May 15 17:42:44 2016
@@ -151,7 +151,7 @@ public final class Errors extends Indexe
         public static final short CanNotRead_1 = 9;
 
         /**
-         * Can not represent “{1}” in the {0} format.
+         * Can not represent “{1}” in a strictly standard-compliant {0} format.
          */
         public static final short CanNotRepresentInFormat_2 = 10;
 

Modified: 
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties?rev=1743925&r1=1743924&r2=1743925&view=diff
==============================================================================
--- 
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties
 [ISO-8859-1] (original)
+++ 
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties
 [ISO-8859-1] Sun May 15 17:42:44 2016
@@ -41,7 +41,7 @@ CanNotMapAxisToDirection_2        = Can
 CanNotOpen_1                      = Can not open \u201c{0}\u201d.
 CanNotParseFile_2                 = Can not parse \u201c{1}\u201d as a file in 
the {0} format.
 CanNotRead_1                      = Can not read \u201c{0}\u201d.
-CanNotRepresentInFormat_2         = Can not represent \u201c{1}\u201d in the 
{0} format.
+CanNotRepresentInFormat_2         = Can not represent \u201c{1}\u201d in a 
strictly standard-compliant {0} format.
 CanNotSeparateTargetDimension_1   = Target dimension {0} depends on excluded 
source dimensions.
 CanNotSetParameterValue_1         = Can not set a value for parameter 
\u201c{0}\u201d.
 CanNotSetPropertyValue_1          = Can not set a value for property 
\u201c{0}\u201d.

Modified: 
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties?rev=1743925&r1=1743924&r2=1743925&view=diff
==============================================================================
--- 
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties
 [ISO-8859-1] (original)
+++ 
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties
 [ISO-8859-1] Sun May 15 17:42:44 2016
@@ -38,7 +38,7 @@ CanNotMapAxisToDirection_2        = Aucu
 CanNotOpen_1                      = Ne peut pas ouvrir 
\u00ab\u202f{0}\u202f\u00bb.
 CanNotParseFile_2                 = Ne peut pas lire 
\u00ab\u202f{1}\u202f\u00bb comme un fichier au format {0}.
 CanNotRead_1                      = Ne peut pas lire 
\u00ab\u202f{0}\u202f\u00bb.
-CanNotRepresentInFormat_2         = Ne peut pas repr\u00e9senter 
\u00ab\u202f{1}\u202f\u00bb dans le format {0}.
+CanNotRepresentInFormat_2         = Ne peut pas repr\u00e9senter 
\u00ab\u202f{1}\u202f\u00bb dans un format {0} strictement conforme.
 CanNotSeparateTargetDimension_1   = La dimension de destination {0} 
d\u00e9pend de dimensions sources qui ont \u00e9t\u00e9 exclues.
 CanNotSetParameterValue_1         = Ne peut pas d\u00e9finir une valeur pour 
le param\u00e8tre \u00ab\u202f{0}\u202f\u00bb.
 CanNotSetPropertyValue_1          = Ne peut pas d\u00e9finir une valeur pour 
la propri\u00e9t\u00e9 \u00ab\u202f{0}\u202f\u00bb.

Modified: 
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.java
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.java?rev=1743925&r1=1743924&r2=1743925&view=diff
==============================================================================
--- 
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.java
 [UTF-8] (original)
+++ 
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.java
 [UTF-8] Sun May 15 17:42:44 2016
@@ -249,7 +249,7 @@ public final class Messages extends Inde
         public static final short MisnamedParameter_1 = 18;
 
         /**
-         * Formatting of “{0}” is not conform to the format standard.
+         * This “{0}” formatting is a departure from standard format.
          */
         public static final short NonConformFormatting_1 = 15;
 

Modified: 
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.properties
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.properties?rev=1743925&r1=1743924&r2=1743925&view=diff
==============================================================================
--- 
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.properties
 [ISO-8859-1] (original)
+++ 
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages.properties
 [ISO-8859-1] Sun May 15 17:42:44 2016
@@ -54,7 +54,7 @@ PropertyHiddenBy_2               = Prope
 MismatchedOperationFactories_2   = No coordinate operation from 
\u201c{0}\u201d to \u201c{1}\u201d because of mismatched factories.
 MismatchedEllipsoidAxisLength_3  = The \u201c{1}\u201d parameter could have 
been omitted. But it has been given a value of {2} which does not match the 
definition of the \u201c{0}\u201d ellipsoid.
 MisnamedParameter_1              = Despite its name, this parameter is 
effectively \u201c{0}\u201d.
-NonConformFormatting_1           = Formatting of \u201c{0}\u201d is not 
conform to the format standard.
+NonConformFormatting_1           = This \u201c{0}\u201d formatting is a 
departure from standard format.
 NotFormalProjectionParameter_1   = This parameter borrowed from the 
\u201c{0}\u201d projection is not formally a parameter of this projection.
 UnknownElementsInText            = The text contains unknown elements:
 UnknownKeywordInRecord_2         = Loading of \u201c{0}\u201d done, but some 
records were ignored because of unrecognized keywords: {1}

Modified: 
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages_fr.properties
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages_fr.properties?rev=1743925&r1=1743924&r2=1743925&view=diff
==============================================================================
--- 
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages_fr.properties
 [ISO-8859-1] (original)
+++ 
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Messages_fr.properties
 [ISO-8859-1] Sun May 15 17:42:44 2016
@@ -61,7 +61,7 @@ PropertyHiddenBy_2               = La pr
 MismatchedOperationFactories_2   = Il n\u2019y a pas d\u2019op\u00e9rations 
allant de \u00ab\u202f{0}\u202f\u00bb vers \u00ab\u202f{1}\u202f\u00bb parce 
que ces derniers sont associ\u00e9s \u00e0 deux fabriques diff\u00e9rentes.
 MismatchedEllipsoidAxisLength_3  = Le param\u00e8tre 
\u00ab\u202f{1}\u202f\u00bb aurait pu \u00eatre omis. Mais il lui a 
\u00e9t\u00e9 donn\u00e9 la valeur {2} qui ne correspond pas \u00e0 la 
d\u00e9finition de l\u2019ellipso\u00efde \u00ab\u202f{0}\u202f\u00bb.
 MisnamedParameter_1              = Malgr\u00e9 son nom, ce param\u00e8tre 
produit en r\u00e9alit\u00e9 l\u2019effet d\u2019un \u00ab\u202f{0}\u202f\u00bb.
-NonConformFormatting_1           = L\u2019\u00e9criture de 
\u00ab\u202f{0}\u202f\u00bb n\u2019est pas conforme au format standard.
+NonConformFormatting_1           = Cette \u00e9criture de 
\u00ab\u202f{0}\u202f\u00bb d\u00e9vie du format standard.
 NotFormalProjectionParameter_1   = Ce param\u00e8tre emprunt\u00e9 \u00e0 la 
projection \u00ab\u202f{0}\u202f\u00bb n\u2019est pas formellement un 
param\u00e8tre de cette projection.
 UnknownElementsInText            = Le texte contient des \u00e9l\u00e9ments 
inconnus\u00a0:
 UnknownKeywordInRecord_2         = La lecture de \u00ab\u202f{0}\u202f\u00bb a 
\u00e9t\u00e9 faite, mais en ignorant certains enregistrements \u00e0 cause de 
mots-cl\u00e9s non reconnus: {1}

Modified: 
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.java
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.java?rev=1743925&r1=1743924&r2=1743925&view=diff
==============================================================================
--- 
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.java
 [UTF-8] (original)
+++ 
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.java
 [UTF-8] Sun May 15 17:42:44 2016
@@ -232,6 +232,11 @@ public final class Vocabulary extends In
         public static final short DittoMark = 82;
 
         /**
+         * Domain
+         */
+        public static final short Domain = 113;
+
+        /**
          * Dublin Julian
          */
         public static final short DublinJulian = 17;
@@ -412,6 +417,11 @@ public final class Vocabulary extends In
         public static final short None = 91;
 
         /**
+         * Note
+         */
+        public static final short Note = 114;
+
+        /**
          * Number of ‘NaN’
          */
         public static final short NumberOfNaN = 38;

Modified: 
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.properties
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.properties?rev=1743925&r1=1743924&r2=1743925&view=diff
==============================================================================
--- 
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.properties
 [ISO-8859-1] (original)
+++ 
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.properties
 [ISO-8859-1] Sun May 15 17:42:44 2016
@@ -49,6 +49,7 @@ Details                 = Details
 Dimensions              = Dimensions
 Directory               = Directory
 DittoMark               = \u2033
+Domain                  = Domain
 DublinJulian            = Dublin Julian
 Ellipsoid               = Ellipsoid
 EllipsoidChange         = Ellipsoid change
@@ -85,6 +86,7 @@ Methods                 = Methods
 ModifiedJulian          = Modified Julian
 Name                    = Name
 None                    = None
+Note                    = Note
 NumberOfValues          = Number of values
 NumberOfNaN             = Number of \u2018NaN\u2019
 Obligation              = Obligation

Modified: 
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary_fr.properties
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary_fr.properties?rev=1743925&r1=1743924&r2=1743925&view=diff
==============================================================================
--- 
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary_fr.properties
 [ISO-8859-1] (original)
+++ 
sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary_fr.properties
 [ISO-8859-1] Sun May 15 17:42:44 2016
@@ -56,6 +56,7 @@ Details                 = D\u00e9tails
 Dimensions              = Dimensions
 Directory               = R\u00e9pertoire
 DittoMark               = \u2033
+Domain                  = Domaine
 DublinJulian            = Julien Dublin
 Ellipsoid               = Ellipso\u00efde
 EllipsoidChange         = Changement d\u2019ellipso\u00efde
@@ -92,6 +93,7 @@ Methods                 = M\u00e9thodes
 ModifiedJulian          = Julien modifi\u00e9
 Name                    = Nom
 None                    = Aucun
+Note                    = Note
 NumberOfValues          = Nombre de valeurs
 NumberOfNaN             = Nombre de \u2018NaN\u2019
 Obligation              = Obligation


Reply via email to