You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sis.apache.org by de...@apache.org on 2014/02/17 15:24:13 UTC

svn commit: r1569010 - in /sis/branches/JDK7/core: sis-metadata/src/main/java/org/apache/sis/io/wkt/ sis-metadata/src/main/java/org/apache/sis/metadata/iso/ sis-referencing/src/main/java/org/apache/sis/referencing/cs/ sis-referencing/src/main/java/org/...

Author: desruisseaux
Date: Mon Feb 17 14:24:12 2014
New Revision: 1569010

URL: http://svn.apache.org/r1569010
Log:
- Format "Anchor" element for all Datum.
- Documentation fixes in "@return The WKT element name, which is..." descriptions.

Modified:
    sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/Formatter.java
    sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ImmutableIdentifier.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultCoordinateSystemAxis.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/BursaWolfParameters.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultEllipsoid.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultGeodeticDatum.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultPrimeMeridian.java
    sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/datum/DefaultGeodeticDatumTest.java

Modified: sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/Formatter.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/Formatter.java?rev=1569010&r1=1569009&r2=1569010&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/Formatter.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/io/wkt/Formatter.java [UTF-8] Mon Feb 17 14:24:12 2014
@@ -517,19 +517,21 @@ public class Formatter implements Locali
      * <ul>
      *   <li>Invoke <code>object.{@linkplain FormattableObject#formatTo(Formatter) formatTo}(this)</code>.</li>
      *   <li>Prepend the keyword returned by the above method call (e.g. {@code "GEOCS"}).</li>
-     *   <li>If the given object is an instance of {@link IdentifiedObject}, then append complementary information:
-     *     <ul>
-     *       <li>{@code SCOPE[…]} (WKT 2 only)</li>
-     *       <li>{@code AREA[…]}  (WKT 2 only)</li>
-     *       <li>{@code BBOX[…]}  (WKT 2 only)</li>
-     *       <li>{@code VERTICALEXTENT[…]} (WKT 2 only)</li>
-     *       <li>{@code TIMEEXTENT[…]} (WKT 2 only)</li>
-     *       <li>{@code ID[…]} (WKT 2) or {@code AUTHORITY[…]} (WKT 1)</li>
-     *       <li>{@code REMARKS[…]} ({@link ReferenceSystem} and {@link CoordinateOperation} in WKT 2 only)</li>
-     *     </ul>
-     *   </li>
+     *   <li>If the given object is an instance of {@link IdentifiedObject}, then append complementary information:</li>
      * </ul>
      *
+     * <blockquote><table class="sis">
+     *   <tr><th>WKT 2 element</th><th>WKT 1 element</th><th>For types</th></tr>
+     *   <tr><td>{@code Anchor[…]}</td>        <td></td> <td>{@link Datum}</td></tr>
+     *   <tr><td>{@code Scope[…]}</td>         <td></td> <td>{@link ReferenceSystem}, {@link Datum}, {@link CoordinateOperation}</td></tr>
+     *   <tr><td>{@code Area[…]}</td>          <td></td> <td>{@link ReferenceSystem}, {@link Datum}, {@link CoordinateOperation}</td></tr>
+     *   <tr><td>{@code BBox[…]}</td>          <td></td> <td>{@link ReferenceSystem}, {@link Datum}, {@link CoordinateOperation}</td></tr>
+     *   <tr><td>{@code VerticalExtent[…]}</td><td></td> <td>{@link ReferenceSystem}, {@link Datum}, {@link CoordinateOperation}</td></tr>
+     *   <tr><td>{@code TimeExtent[…]}</td>    <td></td> <td>{@link ReferenceSystem}, {@link Datum}, {@link CoordinateOperation}</td></tr>
+     *   <tr><td>{@code Id[…]}</td><td>{@code Authority[…]}</td><td>{@link IdentifiedObject}</td></tr>
+     *   <tr><td>{@code Remarks[…]}</td>       <td></td> <td>{@link ReferenceSystem}, {@link CoordinateOperation}</td></tr>
+     * </table></blockquote>
+     *
      * @param object The formattable object to append to the WKT, or {@code null} if none.
      */
     public void append(final FormattableObject object) {
@@ -605,10 +607,11 @@ public class Formatter implements Locali
     }
 
     /**
-     * Appends the optional complementary attributes common to all {@link IdentifiedObject}s.
-     * Those attributes are {@code SCOPE}, {@code AREA}, {@code BBOX}, {@code VERTICALEXTENT}, {@code TIMEEXTENT},
-     * {@code ID} (previously known as {@code AUTHORITY}) and {@code REMARKS}, and have a special treatment: they
-     * are written by {@link #append(FormattableObject))} after the {@code formatTo(Formatter)} method returned.
+     * Appends the optional complementary attributes common to many {@link IdentifiedObject} subtypes.
+     * Those attributes are {@code ANCHOR}, {@code SCOPE}, {@code AREA}, {@code BBOX}, {@code VERTICALEXTENT},
+     * {@code TIMEEXTENT}, {@code ID} (previously known as {@code AUTHORITY}) and {@code REMARKS},
+     * and have a special treatment: they are written by {@link #append(FormattableObject))}
+     * after the {@code formatTo(Formatter)} method returned.
      *
      * <p>The {@code ID[<name>,<code>,…]} element is written only for the root element, unless the convention are
      * INTERNAL. If formatted, the ID element will be on the same line than the enclosing one if no line separator
@@ -663,7 +666,7 @@ public class Formatter implements Locali
             }
         }
         if (showOthers) {
-            appendScopeAndArea(object);
+            appendForSubtypes(object);
         }
         if (showIDs) {
             Collection<ReferenceIdentifier> identifiers = object.getIdentifiers();
@@ -692,24 +695,28 @@ public class Formatter implements Locali
     }
 
     /**
-     * Appends the scope and domain of validity of the given object. Those information are available
+     * Appends the anchor, scope and domain of validity of the given object. Those information are available
      * only for {@link ReferenceSystem}, {@link Datum} and {@link CoordinateOperation} objects.
      */
-    private void appendScopeAndArea(final IdentifiedObject object) {
-        final InternationalString scope;
+    private void appendForSubtypes(final IdentifiedObject object) {
+        final InternationalString anchor, scope;
         final Extent area;
         if (object instanceof ReferenceSystem) {
-            scope = ((ReferenceSystem) object).getScope();
-            area  = ((ReferenceSystem) object).getDomainOfValidity();
+            anchor = null;
+            scope  = ((ReferenceSystem) object).getScope();
+            area   = ((ReferenceSystem) object).getDomainOfValidity();
         } else if (object instanceof Datum) {
-            scope = ((Datum) object).getScope();
-            area  = ((Datum) object).getDomainOfValidity();
+            anchor = ((Datum) object).getAnchorPoint();
+            scope  = ((Datum) object).getScope();
+            area   = ((Datum) object).getDomainOfValidity();
         } else if (object instanceof CoordinateOperation) {
-            scope = ((CoordinateOperation) object).getScope();
-            area  = ((CoordinateOperation) object).getDomainOfValidity();
+            anchor = null;
+            scope  = ((CoordinateOperation) object).getScope();
+            area   = ((CoordinateOperation) object).getDomainOfValidity();
         } else {
             return;
         }
+        appendOnNewLine("Anchor", anchor, null);
         appendOnNewLine("Scope", scope, ElementKind.SCOPE);
         if (area != null) {
             appendOnNewLine("Area", area.getDescription(), ElementKind.EXTENT);
@@ -856,50 +863,23 @@ public class Formatter implements Locali
     }
 
     /**
-     * Appends a code list.
-     *
-     * @param code The code list to append to the WKT, or {@code null} if none.
-     */
-    public void append(final CodeList<?> code) {
-        if (code != null) {
-            appendSeparator();
-            setColor(ElementKind.CODE_LIST);
-            buffer.append(convention.versionOfWKT() == 1 ? code.name() : Types.getCodeName(code));
-            resetColor();
-        }
-    }
-
-    /**
-     * Appends a character string between quotes.
-     * The {@linkplain Symbols#getSeparator() element separator} will be written before the text if needed.
-     *
-     * @param text The string to format to the WKT, or {@code null} if none.
-     * @param type The key of the colors to apply if syntax coloring is enabled.
-     */
-    public void append(final String text, final ElementKind type) {
-        if (text != null) {
-            appendSeparator();
-            setColor(type);
-            quote(text);
-            resetColor();
-        }
-    }
-
-    /**
      * Appends an international text in an element having the given keyword. Since this method
      * is typically invoked for long descriptions, the element will be written on its own line.
      *
      * {@example
      *   <ul>
-     *     <li><code>SCOPE["Large scale topographic mapping and cadastre."]</code></li>
-     *     <li><code>AREA["Netherlands offshore."]</code></li>
+     *     <li><code>Scope["Large scale topographic mapping and cadastre."]</code></li>
+     *     <li><code>Area["Netherlands offshore."]</code></li>
      *   </ul>
      * }
      *
-     * @param keyword The keyword. Example: {@code "SCOPE"}, {@code "AREA"} or {@code "REMARKS"}.
+     * @param keyword The {@linkplain KeywordCase#CAMEL_CASE camel-case} keyword.
+     *                Example: {@code "Scope"}, {@code "Area"} or {@code "Remarks"}.
      * @param text The text, or {@code null} if none.
+     * @param type The key of the colors to apply if syntax coloring is enabled.
      */
     private void appendOnNewLine(final String keyword, final InternationalString text, final ElementKind type) {
+        ArgumentChecks.ensureNonNull("keyword", keyword);
         if (text != null) {
             final String localized = CharSequences.trimWhitespaces(text.toString(locale));
             if (localized != null && !localized.isEmpty()) {
@@ -913,6 +893,22 @@ public class Formatter implements Locali
     }
 
     /**
+     * Appends a character string between quotes.
+     * The {@linkplain Symbols#getSeparator() element separator} will be written before the text if needed.
+     *
+     * @param text The string to format to the WKT, or {@code null} if none.
+     * @param type The key of the colors to apply if syntax coloring is enabled.
+     */
+    public void append(final String text, final ElementKind type) {
+        if (text != null) {
+            appendSeparator();
+            setColor(type);
+            quote(text);
+            resetColor();
+        }
+    }
+
+    /**
      * Appends the given string as a quoted text. If the given string contains the closing quote character,
      * that character will be doubled (WKT 2) or deleted (WKT 1). We check for the closing quote only because
      * it is the character that the parser will look for determining the text end.
@@ -948,6 +944,21 @@ public class Formatter implements Locali
     }
 
     /**
+     * Appends a code list.
+     * The {@linkplain Symbols#getSeparator() element separator} will be written before the code list if needed.
+     *
+     * @param code The code list to append to the WKT, or {@code null} if none.
+     */
+    public void append(final CodeList<?> code) {
+        if (code != null) {
+            appendSeparator();
+            setColor(ElementKind.CODE_LIST);
+            buffer.append(convention.versionOfWKT() == 1 ? code.name() : Types.getCodeName(code));
+            resetColor();
+        }
+    }
+
+    /**
      * Appends a date.
      * The {@linkplain Symbols#getSeparator() element separator} will be written before the date if needed.
      *

Modified: sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ImmutableIdentifier.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ImmutableIdentifier.java?rev=1569010&r1=1569009&r2=1569010&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ImmutableIdentifier.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ImmutableIdentifier.java [UTF-8] Mon Feb 17 14:24:12 2014
@@ -545,7 +545,7 @@ public class ImmutableIdentifier extends
      * See class javadoc for more information on the WKT format.
      *
      * @param  formatter The formatter where to format the inner content of this WKT element.
-     * @return The WKT keyword: {@code "ID"} (WKT 2) or {@code "AUTHORITY"} (WKT 1).
+     * @return The WKT keyword, which is {@code "Id"} (WKT 2) or {@code "Authority"} (WKT 1).
      */
     @Override
     protected String formatTo(final Formatter formatter) {

Modified: sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultCoordinateSystemAxis.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultCoordinateSystemAxis.java?rev=1569010&r1=1569009&r2=1569010&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultCoordinateSystemAxis.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultCoordinateSystemAxis.java [UTF-8] Mon Feb 17 14:24:12 2014
@@ -748,7 +748,7 @@ public class DefaultCoordinateSystemAxis
      * </ul>
      *
      * @param  formatter The formatter to use.
-     * @return The WKT element name, which is {@code "AXIS"}.
+     * @return The WKT element name, which is {@code "Axis"}.
      */
     @Override
     protected String formatTo(final Formatter formatter) {

Modified: sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/BursaWolfParameters.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/BursaWolfParameters.java?rev=1569010&r1=1569009&r2=1569010&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/BursaWolfParameters.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/BursaWolfParameters.java [UTF-8] Mon Feb 17 14:24:12 2014
@@ -627,7 +627,7 @@ public class BursaWolfParameters extends
      * is WGS 84. For other targets, the element name will be derived from the datum name.
      *
      * @param  formatter The formatter to use.
-     * @return The WKT element name, usually {@code "TOWGS84"}.
+     * @return The WKT element name, usually {@code "ToWGS84"}.
      */
     @Override
     protected String formatTo(final Formatter formatter) {

Modified: sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultEllipsoid.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultEllipsoid.java?rev=1569010&r1=1569009&r2=1569010&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultEllipsoid.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultEllipsoid.java [UTF-8] Mon Feb 17 14:24:12 2014
@@ -756,7 +756,7 @@ public class DefaultEllipsoid extends Ab
      * Formats the inner part of a <cite>Well Known Text</cite> (WKT) element.
      *
      * @param  formatter The formatter to use.
-     * @return The WKT element name, which is {@code "SPHEROID"}.
+     * @return The WKT element name, which is {@code "Ellipsoid"} (WKT 2) or {@code "Spheroid"} (WKT 1).
      */
     @Override
     protected String formatTo(final Formatter formatter) {

Modified: sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultGeodeticDatum.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultGeodeticDatum.java?rev=1569010&r1=1569009&r2=1569010&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultGeodeticDatum.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultGeodeticDatum.java [UTF-8] Mon Feb 17 14:24:12 2014
@@ -502,7 +502,7 @@ public class DefaultGeodeticDatum extend
      * Formats the inner part of a <cite>Well Known Text</cite> (WKT) element.
      *
      * @param  formatter The formatter to use.
-     * @return The WKT element name, which is {@code "DATUM"}.
+     * @return The WKT element name, which is {@code "Datum"}.
      */
     @Override
     protected String formatTo(final Formatter formatter) {
@@ -512,12 +512,14 @@ public class DefaultGeodeticDatum extend
         formatter.newLine();
         formatter.append(ellipsoid instanceof FormattableObject ? (FormattableObject) ellipsoid :
                          DefaultEllipsoid.castOrCopy(ellipsoid));
-        if (bursaWolf != null) {
-            for (final BursaWolfParameters candidate : bursaWolf) {
-                if (candidate.isToWGS84()) {
-                    formatter.newLine();
-                    formatter.append(candidate);
-                    break;
+        if (formatter.getConvention().versionOfWKT() == 1) {
+            if (bursaWolf != null) {
+                for (final BursaWolfParameters candidate : bursaWolf) {
+                    if (candidate.isToWGS84()) {
+                        formatter.newLine();
+                        formatter.append(candidate);
+                        break;
+                    }
                 }
             }
         }

Modified: sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultPrimeMeridian.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultPrimeMeridian.java?rev=1569010&r1=1569009&r2=1569010&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultPrimeMeridian.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultPrimeMeridian.java [UTF-8] Mon Feb 17 14:24:12 2014
@@ -335,7 +335,7 @@ public class DefaultPrimeMeridian extend
      * Formats the inner part of a <cite>Well Known Text</cite> (WKT) element.
      *
      * @param  formatter The formatter to use.
-     * @return The WKT element name, which is {@code "PRIMEM"}.
+     * @return The WKT element name, which is {@code "PrimeMeridian"} (WKT 2) or {@code "PrimeM"} (WKT 1).
      */
     @Override
     protected String formatTo(final Formatter formatter) {

Modified: sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/datum/DefaultGeodeticDatumTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/datum/DefaultGeodeticDatumTest.java?rev=1569010&r1=1569009&r2=1569010&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/datum/DefaultGeodeticDatumTest.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/datum/DefaultGeodeticDatumTest.java [UTF-8] Mon Feb 17 14:24:12 2014
@@ -275,6 +275,7 @@ public final strictfp class DefaultGeode
                 "Datum[“World Geodetic System 1984”,\n" +
                 "  Ellipsoid[“WGS 84”, 6378137.0, 298.257223563, Id[“EPSG”, 7030, Citation[“OGP”]],\n" +
                 "    Remarks[“Defining parameters cited in EPSG database.”]],\n" +
+                "  Anchor[“Station coordinates changed by a few centimetres in 1994, 1997, 2002 and 2012.”],\n" +
                 "  Scope[“Satellite navigation.”],\n" +
                 "  Area[“World.”],\n" +
                 "  BBox[-90.00, -180.00, 90.00, 180.00],\n" +