sis-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From desruisse...@apache.org
Subject svn commit: r1805571 [1/2] - in /sis/branches/Android: ./ core/sis-feature/src/main/java/org/apache/sis/feature/ core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/ core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/ co...
Date Sun, 20 Aug 2017 16:24:04 GMT
Author: desruisseaux
Date: Sun Aug 20 16:24:04 2017
New Revision: 1805571

URL: http://svn.apache.org/viewvc?rev=1805571&view=rev
Log:
Merge from trunk.

Added:
    sis/branches/Android/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/AbstractFeatureSet.java
      - copied unchanged from r1805569, sis/trunk/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/AbstractFeatureSet.java
    sis/branches/Android/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/AbstractResource.java
      - copied unchanged from r1805569, sis/trunk/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/AbstractResource.java
    sis/branches/Android/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/csv/FeatureAccess.java
      - copied unchanged from r1805569, sis/trunk/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/csv/FeatureAccess.java
    sis/branches/Android/storage/sis-storage/src/main/java/org/apache/sis/storage/Aggregate.java
      - copied unchanged from r1805569, sis/trunk/storage/sis-storage/src/main/java/org/apache/sis/storage/Aggregate.java
    sis/branches/Android/storage/sis-storage/src/main/java/org/apache/sis/storage/DataSet.java
      - copied unchanged from r1805569, sis/trunk/storage/sis-storage/src/main/java/org/apache/sis/storage/DataSet.java
    sis/branches/Android/storage/sis-storage/src/main/java/org/apache/sis/storage/FeatureSet.java
      - copied unchanged from r1805569, sis/trunk/storage/sis-storage/src/main/java/org/apache/sis/storage/FeatureSet.java
    sis/branches/Android/storage/sis-storage/src/main/java/org/apache/sis/storage/Resource.java
      - copied unchanged from r1805569, sis/trunk/storage/sis-storage/src/main/java/org/apache/sis/storage/Resource.java
    sis/branches/Android/storage/sis-xmlstore/src/main/java/org/apache/sis/internal/storage/gpx/FeatureAccess.java
      - copied unchanged from r1805569, sis/trunk/storage/sis-xmlstore/src/main/java/org/apache/sis/internal/storage/gpx/FeatureAccess.java
Removed:
    sis/branches/Android/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/FeatureStore.java
Modified:
    sis/branches/Android/   (props changed)
    sis/branches/Android/README
    sis/branches/Android/core/sis-feature/src/main/java/org/apache/sis/feature/FeatureFormat.java
    sis/branches/Android/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MD_FeatureTypeList.java
    sis/branches/Android/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/NameToIdentifier.java
    sis/branches/Android/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultFeatureTypeList.java
    sis/branches/Android/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultSampleDimension.java
    sis/branches/Android/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/package-info.java
    sis/branches/Android/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/AllMetadataTest.java
    sis/branches/Android/core/sis-referencing-by-identifiers/src/test/java/org/apache/sis/referencing/gazetteer/MilitaryGridReferenceSystemTest.java
    sis/branches/Android/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/Codes.java
    sis/branches/Android/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Initializer.java
    sis/branches/Android/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/LinearInterpolator1D.java
    sis/branches/Android/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/projection/InitializerTest.java
    sis/branches/Android/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/projection/ObliqueStereographicTest.java
    sis/branches/Android/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/transform/LinearInterpolator1DTest.java
    sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gml/DateAdapter.java
    sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gml/Measure.java
    sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gml/UniversalTimeAdapter.java
    sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gmx/Anchor.java
    sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/internal/jdk8/JDK8.java
    sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/internal/system/Modules.java
    sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/internal/util/Utilities.java
    sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/util/Locales.java
    sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/util/iso/DefaultRecord.java
    sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/util/iso/DefaultRecordType.java
    sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/xml/Namespaces.java
    sis/branches/Android/core/sis-utility/src/test/java/org/apache/sis/measure/ConventionalUnitTest.java
    sis/branches/Android/core/sis-utility/src/test/java/org/apache/sis/util/LocalesTest.java
    sis/branches/Android/ide-project/NetBeans/nbproject/cfg_hints.xml   (props changed)
    sis/branches/Android/pom.xml
    sis/branches/Android/src/main/javadoc/overview.html
    sis/branches/Android/storage/sis-earth-observation/src/main/java/org/apache/sis/storage/earthobservation/LandsatStore.java
    sis/branches/Android/storage/sis-gdal/pom.xml   (props changed)
    sis/branches/Android/storage/sis-gdal/src/main/java/org/apache/sis/storage/gdal/Proj4.java
    sis/branches/Android/storage/sis-gdal/src/main/java/org/apache/sis/storage/gdal/Proj4Factory.java
    sis/branches/Android/storage/sis-gdal/src/main/java/org/apache/sis/storage/gdal/Transform.java
    sis/branches/Android/storage/sis-gdal/src/main/java/org/apache/sis/storage/gdal/package-info.java
    sis/branches/Android/storage/sis-gdal/src/test/java/org/apache/sis/storage/gdal/Proj4FactoryTest.java
    sis/branches/Android/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/CRSBuilder.java
    sis/branches/Android/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/GeoTIFF.java
    sis/branches/Android/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/GeoTiffStore.java
    sis/branches/Android/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/ImageFileDirectory.java
    sis/branches/Android/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/Reader.java
    sis/branches/Android/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/NetcdfStore.java
    sis/branches/Android/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/FeatureCatalogBuilder.java
    sis/branches/Android/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/MetadataBuilder.java
    sis/branches/Android/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/Resources.java
    sis/branches/Android/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/Resources.properties
    sis/branches/Android/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/Resources_fr.properties
    sis/branches/Android/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/csv/Store.java
    sis/branches/Android/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/wkt/Store.java
    sis/branches/Android/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/xml/Store.java
    sis/branches/Android/storage/sis-storage/src/main/java/org/apache/sis/storage/DataStore.java
    sis/branches/Android/storage/sis-storage/src/test/java/org/apache/sis/storage/DataStoreMock.java
    sis/branches/Android/storage/sis-xmlstore/src/main/java/org/apache/sis/internal/storage/gpx/Store.java
    sis/branches/Android/storage/sis-xmlstore/src/main/java/org/apache/sis/internal/storage/gpx/Types.java
    sis/branches/Android/storage/sis-xmlstore/src/main/java/org/apache/sis/internal/storage/xml/stream/StaxDataStore.java
    sis/branches/Android/storage/sis-xmlstore/src/test/java/org/apache/sis/internal/storage/gpx/ReaderTest.java

Propchange: sis/branches/Android/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sun Aug 20 16:24:04 2017
@@ -1,5 +1,6 @@
 /sis/branches/Android:1430670-1480699
 /sis/branches/JDK6:1394364-1758914
-/sis/branches/JDK7:1394913-1803100
-/sis/branches/JDK8:1584960-1803097
+/sis/branches/JDK7:1394913-1805566
+/sis/branches/JDK8:1584960-1804582
 /sis/branches/JDK9:1773327-1803064
+/sis/trunk:1803173-1805569

Modified: sis/branches/Android/README
URL: http://svn.apache.org/viewvc/sis/branches/Android/README?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/README (original)
+++ sis/branches/Android/README Sun Aug 20 16:24:04 2017
@@ -26,7 +26,7 @@ project logo are trademarks of The Apach
 Getting Started
 ===============
 
-SIS requires Java 6 and uses the Maven 3 <http://maven.apache.org/>
+SIS requires Java 7 and uses the Maven 3 <http://maven.apache.org/>
 build system. To build SIS, use the following command in this directory:
 
     mvn clean package

Modified: sis/branches/Android/core/sis-feature/src/main/java/org/apache/sis/feature/FeatureFormat.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/core/sis-feature/src/main/java/org/apache/sis/feature/FeatureFormat.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/core/sis-feature/src/main/java/org/apache/sis/feature/FeatureFormat.java [UTF-8] (original)
+++ sis/branches/Android/core/sis-feature/src/main/java/org/apache/sis/feature/FeatureFormat.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -39,9 +39,11 @@ import org.apache.sis.util.Deprecable;
 import org.apache.sis.util.Characters;
 import org.apache.sis.util.CharSequences;
 import org.apache.sis.util.ArgumentChecks;
+import org.apache.sis.util.logging.Logging;
 import org.apache.sis.util.resources.Errors;
 import org.apache.sis.util.resources.Vocabulary;
 import org.apache.sis.internal.util.CollectionsExt;
+import org.apache.sis.internal.system.Modules;
 import org.apache.sis.referencing.IdentifiedObjects;
 import org.apache.sis.math.MathFunctions;
 
@@ -112,6 +114,12 @@ public class FeatureFormat extends Tabul
     private static final int MAXIMAL_VALUE_LENGTH = 40;
 
     /**
+     * The bit patterns of the last {@link Float#NaN} value for which {@link MathFunctions#toNanOrdinal(float)} could
+     * not get the ordinal value. We use this information for avoiding flooding the logger with the same message.
+     */
+    private transient int illegalNaN;
+
+    /**
      * Creates a new formatter for the default locale and timezone.
      */
     public FeatureFormat() {
@@ -504,8 +512,17 @@ public class FeatureFormat extends Tabul
                                                 t.setLength(0);
                                                 t.append("NaN");
                                             }
-                                            final int n = MathFunctions.toNanOrdinal(f);
-                                            if (n > 0) buffer.append(" #").append(n);
+                                            try {
+                                                final int n = MathFunctions.toNanOrdinal(f);
+                                                if (n > 0) t.append(" #").append(n);
+                                            } catch (IllegalArgumentException e) {
+                                                // May happen if the NaN is a signaling NaN instead than a quiet NaN.
+                                                final int bits = Float.floatToRawIntBits(f);
+                                                if (bits != illegalNaN) {
+                                                    illegalNaN = bits;
+                                                    Logging.recoverableException(Logging.getLogger(Modules.FEATURE), FeatureFormat.class, "format", e);
+                                                }
+                                            }
                                         }
                                     }
                                     value = t;

Modified: sis/branches/Android/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MD_FeatureTypeList.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MD_FeatureTypeList.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MD_FeatureTypeList.java [UTF-8] (original)
+++ sis/branches/Android/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MD_FeatureTypeList.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -31,7 +31,10 @@ import org.apache.sis.internal.jaxb.gco.
  * @version 0.3
  * @since   0.3
  * @module
+ *
+ * @deprecated Not anymore part of ISO 19115.
  */
+@Deprecated
 public final class MD_FeatureTypeList extends PropertyType<MD_FeatureTypeList, FeatureTypeList> {
     /**
      * Empty constructor for JAXB only.

Modified: sis/branches/Android/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/NameToIdentifier.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/NameToIdentifier.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/NameToIdentifier.java [UTF-8] (original)
+++ sis/branches/Android/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/NameToIdentifier.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -208,9 +208,17 @@ public final class NameToIdentifier impl
      */
     public static boolean isHeuristicMatchForIdentifier(final Iterable<? extends ReferenceIdentifier> identifiers, final String toSearch) {
         if (toSearch != null && identifiers != null) {
-            for (int s = toSearch.indexOf(DefaultNameSpace.DEFAULT_SEPARATOR); s >= 0;
-                     s = toSearch.indexOf(DefaultNameSpace.DEFAULT_SEPARATOR, s))
-            {
+            int s = toSearch.indexOf(DefaultNameSpace.DEFAULT_SEPARATOR);
+            if (s < 0) {
+                // no codespace in searched name
+                for (final Identifier id : identifiers) {
+                    if (toSearch.equalsIgnoreCase(id.getCode())) {
+                        return true;
+                    }
+                }
+                return false;
+            }
+            do {
                 final String codespace = toSearch.substring(0, s).trim();
                 final String code = toSearch.substring(++s).trim();
                 for (final ReferenceIdentifier id : identifiers) {
@@ -218,7 +226,8 @@ public final class NameToIdentifier impl
                         return true;
                     }
                 }
-            }
+                s = toSearch.indexOf(DefaultNameSpace.DEFAULT_SEPARATOR, s);
+            } while (s >= 0);
         }
         return false;
     }

Modified: sis/branches/Android/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultFeatureTypeList.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultFeatureTypeList.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultFeatureTypeList.java [UTF-8] (original)
+++ sis/branches/Android/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultFeatureTypeList.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -45,7 +45,10 @@ import org.opengis.metadata.FeatureTypeL
  * @version 0.3
  * @since   0.3
  * @module
+ *
+ * @deprecated Not anymore part of ISO 19115.
  */
+@Deprecated                                     // TODO: after deletion, search "FeatureTypeList" on the whole code base.
 @SuppressWarnings("CloneableClassWithoutClone")                 // ModifiableMetadata needs shallow clones.
 @XmlType(propOrder = {
     "spatialObject",

Modified: sis/branches/Android/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultSampleDimension.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultSampleDimension.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultSampleDimension.java [UTF-8] (original)
+++ sis/branches/Android/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultSampleDimension.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -62,7 +62,7 @@ import static org.opengis.annotation.Spe
  *       same version of Apache SIS. For long term storage, use {@link org.apache.sis.xml.XML} instead.</li>
  * </ul>
  *
- * @author  Remi Marechal (geomatys)
+ * @author  Rémi Maréchal (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
  * @version 0.5
  * @since   0.5

Modified: sis/branches/Android/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/package-info.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/package-info.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/package-info.java [UTF-8] (original)
+++ sis/branches/Android/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/package-info.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -39,7 +39,6 @@
  * {@code  ├─} {@linkplain org.apache.sis.metadata.iso.DefaultApplicationSchemaInformation Application schema information}<br>
  * {@code  ├─} {@linkplain org.apache.sis.metadata.iso.DefaultMetadataExtensionInformation Metadata extension information}<br>
  * {@code  ├─} {@linkplain org.apache.sis.metadata.iso.DefaultExtendedElementInformation   Extended element information}<br>
- * {@code  ├─} {@linkplain org.apache.sis.metadata.iso.DefaultFeatureTypeList              Feature type list}<br>
  * {@code  └─} {@linkplain org.apache.sis.metadata.iso.DefaultIdentifier                   Identifier}<br>
  * {@linkplain org.opengis.util.CodeList Code list}<br>
  * {@code  ├─} {@linkplain org.opengis.metadata.Datatype   Data type}<br>
@@ -53,7 +52,6 @@
  * {@code  │   └─}     {@linkplain org.apache.sis.metadata.iso.DefaultExtendedElementInformation   Extended element information}<br>
  * {@code  │       ├─} {@linkplain org.opengis.metadata.Datatype                                   Data type} «code list»<br>
  * {@code  │       └─} {@linkplain org.opengis.metadata.Obligation                                 Obligation} «code list»<br>
- * {@code  ├─}         {@linkplain org.apache.sis.metadata.iso.DefaultFeatureTypeList              Feature type list}<br>
  * {@code  └─}         {@linkplain org.apache.sis.metadata.iso.DefaultIdentifier                   Identifier}<br>
  * </td></tr></table>
  *

Modified: sis/branches/Android/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/AllMetadataTest.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/AllMetadataTest.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/AllMetadataTest.java [UTF-8] (original)
+++ sis/branches/Android/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/AllMetadataTest.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -58,7 +58,6 @@ public final strictfp class AllMetadataT
             org.opengis.metadata.ApplicationSchemaInformation.class,
             org.opengis.metadata.Datatype.class,
             org.opengis.metadata.ExtendedElementInformation.class,
-            org.opengis.metadata.FeatureTypeList.class,
             org.opengis.metadata.Identifier.class,
             org.opengis.metadata.Metadata.class,
             org.opengis.metadata.MetadataExtensionInformation.class,
@@ -276,10 +275,6 @@ public final strictfp class AllMetadataT
     protected String getExpectedXmlTypeForElement(final Class<?> type, final Class<?> impl) {
         final String rootName = type.getAnnotation(UML.class).identifier();
         switch (rootName) {
-            // We don't know yet what is the type of this one.
-            case "MD_FeatureTypeList": {
-                return null;
-            }
             // Following prefix was changed in ISO 19115 corrigendum,
             // but ISO 19139 still use the old prefix.
             case "SV_ServiceIdentification": {

Modified: sis/branches/Android/core/sis-referencing-by-identifiers/src/test/java/org/apache/sis/referencing/gazetteer/MilitaryGridReferenceSystemTest.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/core/sis-referencing-by-identifiers/src/test/java/org/apache/sis/referencing/gazetteer/MilitaryGridReferenceSystemTest.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/core/sis-referencing-by-identifiers/src/test/java/org/apache/sis/referencing/gazetteer/MilitaryGridReferenceSystemTest.java [UTF-8] (original)
+++ sis/branches/Android/core/sis-referencing-by-identifiers/src/test/java/org/apache/sis/referencing/gazetteer/MilitaryGridReferenceSystemTest.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -170,9 +170,9 @@ public final strictfp class MilitaryGrid
              * The lowest 4 bits are the number of the row cycle (a cycle of 2000 km). The remaining bits tell which
              * rows are valid in that latitude band.
              */
-            final int rowCycle = (int) Math.floor(ymin / (MilitaryGridReferenceSystem.GRID_SQUARE_SIZE * MilitaryGridReferenceSystem.GRID_ROW_COUNT));
-            final int lowerRow = (int) Math.floor(ymin /  MilitaryGridReferenceSystem.GRID_SQUARE_SIZE);    // Inclusive
-            final int upperRow = (int) Math.ceil (ymax /  MilitaryGridReferenceSystem.GRID_SQUARE_SIZE);    // Exclusive
+            final int rowCycle = (int) StrictMath.floor(ymin / (MilitaryGridReferenceSystem.GRID_SQUARE_SIZE * MilitaryGridReferenceSystem.GRID_ROW_COUNT));
+            final int lowerRow = (int) StrictMath.floor(ymin /  MilitaryGridReferenceSystem.GRID_SQUARE_SIZE);    // Inclusive
+            final int upperRow = (int) StrictMath.ceil (ymax /  MilitaryGridReferenceSystem.GRID_SQUARE_SIZE);    // Exclusive
             assertTrue("rowCycle", rowCycle >= 0 && rowCycle <= MilitaryGridReferenceSystem.Decoder.NORTHING_BITS_MASK);
             assertTrue("lowerRow", lowerRow >= 0);
             assertTrue("upperRow", upperRow >= 0);

Modified: sis/branches/Android/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/Codes.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/Codes.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/Codes.java [UTF-8] (original)
+++ sis/branches/Android/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/Codes.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -33,7 +33,7 @@ import static org.apache.sis.internal.ut
  * objects defined in the EPSG database.
  * Current version uses hard-coded mapping.
  *
- * @author  Rémi Marechal (Geomatys)
+ * @author  Rémi Maréchal (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
  * @version 0.8
  * @since   0.8

Modified: sis/branches/Android/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Initializer.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Initializer.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Initializer.java [UTF-8] (original)
+++ sis/branches/Android/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Initializer.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -56,7 +56,7 @@ import static org.apache.sis.internal.ut
  * in some relatively rare scenarios like 1 ± x where <var>x</var> is much smaller than 1.</p>
  *
  * @author  Martin Desruisseaux (Geomatys)
- * @author  Rémi Marechal (Geomatys)
+ * @author  Rémi Maréchal (Geomatys)
  * @version 0.7
  * @since   0.6
  * @module

Modified: sis/branches/Android/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/LinearInterpolator1D.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/LinearInterpolator1D.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/LinearInterpolator1D.java [UTF-8] (original)
+++ sis/branches/Android/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/LinearInterpolator1D.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -40,7 +40,7 @@ import org.apache.sis.util.resources.Err
  * then concatenating this transform with a transform that multiply all output values by -1.</p>
  *
  * @author  Johann Sorel (Geomatys)
- * @author  Remi Marechal (Geomatys)
+ * @author  Rémi Maréchal (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
  * @version 0.7
  * @since   0.7

Modified: sis/branches/Android/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/projection/InitializerTest.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/projection/InitializerTest.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/projection/InitializerTest.java [UTF-8] (original)
+++ sis/branches/Android/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/projection/InitializerTest.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -33,7 +33,7 @@ import static org.opengis.test.Assert.*;
 /**
  * Tests the {@link Initializer} class.
  *
- * @author  Rémi Marechal (Geomatys)
+ * @author  Rémi Maréchal (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
  * @version 0.7
  * @since   0.7

Modified: sis/branches/Android/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/projection/ObliqueStereographicTest.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/projection/ObliqueStereographicTest.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/projection/ObliqueStereographicTest.java [UTF-8] (original)
+++ sis/branches/Android/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/projection/ObliqueStereographicTest.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -38,7 +38,7 @@ import static org.apache.sis.test.Assert
 /**
  * Tests the {@link ObliqueStereographic} class.
  *
- * @author  Rémi Marechal (Geomatys)
+ * @author  Rémi Maréchal (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
  * @version 0.8
  * @since   0.7

Modified: sis/branches/Android/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/transform/LinearInterpolator1DTest.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/transform/LinearInterpolator1DTest.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/transform/LinearInterpolator1DTest.java [UTF-8] (original)
+++ sis/branches/Android/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/transform/LinearInterpolator1DTest.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -28,7 +28,7 @@ import static org.opengis.test.Assert.*;
 /**
  * Test {@link LinearInterpolator1D} class.
  *
- * @author  Remi Marechal (Geomatys).
+ * @author  Rémi Maréchal (Geomatys)
  * @author  Martin Desruisseaux (Geomatys).
  * @version 0.7
  * @since   0.7

Modified: sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gml/DateAdapter.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gml/DateAdapter.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gml/DateAdapter.java [UTF-8] (original)
+++ sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gml/DateAdapter.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -26,7 +26,7 @@ import org.apache.sis.internal.jaxb.XmlU
 
 /**
  * JAXB adapter wrapping the date value (as milliseconds elapsed since January 1st, 1970) in a
- * {@link XMLGregorianCalendar} for the {@code xsd:date} type. Hours, minutes and seconds are
+ * {@link XMLGregorianCalendar} for the {@code xs:date} type. Hours, minutes and seconds are
  * discarded.
  *
  * <p>Using this adapter is equivalent to apply the following annotation on a {@code Date} field:</p>
@@ -81,7 +81,7 @@ public final class DateAdapter extends X
             final Context context = Context.current();
             try {
                 final XMLGregorianCalendar gc = XmlUtilities.toXML(context, value);
-                XmlUtilities.trimTime(gc, true);        // Type is xsd:date without time.
+                XmlUtilities.trimTime(gc, true);        // Type is xs:date without time.
                 return gc;
             } catch (DatatypeConfigurationException e) {
                 Context.warningOccured(context, XmlAdapter.class, "marshal", e, true);

Modified: sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gml/Measure.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gml/Measure.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gml/Measure.java [UTF-8] (original)
+++ sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gml/Measure.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -58,7 +58,7 @@ import org.apache.sis.measure.Units;
  *   <gml:semiMajorAxis uom="urn:ogc:def:uom:EPSG::9001">6378137</gml:semiMajorAxis>
  * }
  *
- * Both have a value of type {@code xsd:double} and a {@code uom} attribute (without namespace)
+ * Both have a value of type {@code xs:double} and a {@code uom} attribute (without namespace)
  * of type {@code gml:UomIdentifier}. Those two informations are represented by this class.
  *
  * @author  Cédric Briançon (Geomatys)

Modified: sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gml/UniversalTimeAdapter.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gml/UniversalTimeAdapter.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gml/UniversalTimeAdapter.java [UTF-8] (original)
+++ sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gml/UniversalTimeAdapter.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -32,7 +32,7 @@ import static org.apache.sis.internal.ja
 
 /**
  * JAXB adapter wrapping the date value (as milliseconds elapsed since January 1st, 1970) in a
- * {@link XMLGregorianCalendar} for the {@code xsd:dateTime} type with the timezone forced to UTC.
+ * {@link XMLGregorianCalendar} for the {@code xs:dateTime} type with the timezone forced to UTC.
  * The milliseconds are omitted if not different than zero.
  *
  * @author  Martin Desruisseaux (Geomatys)

Modified: sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gmx/Anchor.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gmx/Anchor.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gmx/Anchor.java [UTF-8] (original)
+++ sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gmx/Anchor.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -21,6 +21,7 @@ import java.util.Locale;
 import java.util.Objects;
 import javax.xml.bind.annotation.XmlType;
 import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.XmlRootElement;
 import org.opengis.util.InternationalString;
 import org.apache.sis.xml.XLink;
 
@@ -36,11 +37,13 @@ import org.apache.sis.xml.XLink;
  *
  * @author  Guilhem Legal (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
- * @version 0.3
+ * @author  Cullen Rombach (Image Matters)
+ * @version 0.8
  * @since   0.3
  * @module
  */
 @XmlType(name = "Anchor_Type")
+@XmlRootElement(name = "Anchor")
 public final class Anchor extends XLink implements InternationalString {
     /**
      * Defined as a matter of principle (this class is not expected to be serialized).

Modified: sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/internal/jdk8/JDK8.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/internal/jdk8/JDK8.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/internal/jdk8/JDK8.java [UTF-8] (original)
+++ sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/internal/jdk8/JDK8.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -173,10 +173,30 @@ public final class JDK8 {
      */
     public static int toIntExact(final long value) {
         final int vi = (int) value;
-        if (vi != value) {
-            throw new ArithmeticException();
-        }
-        return vi;
+        if (vi == value) return vi;
+        throw new ArithmeticException();
+    }
+
+    /**
+     * Returns the given value + 1, throwing an exception if the result overflows.
+     *
+     * @param  a  the value to increment.
+     * @return {@code a+1}.
+     */
+    public static int incrementExact(int a) {
+        if (a != Integer.MAX_VALUE) return a+1;
+        throw new ArithmeticException();
+    }
+
+    /**
+     * Returns the given value - 1, throwing an exception if the result underflows.
+     *
+     * @param  a  the value to increment.
+     * @return {@code a-1}.
+     */
+    public static int decrementExact(int a) {
+        if (a != Integer.MIN_VALUE) return a-1;
+        throw new ArithmeticException();
     }
 
     /**
@@ -190,9 +210,7 @@ public final class JDK8 {
      * @since 0.8
      */
     public static int addExact(final int x, final int y) {
-        final long r = x + y;
-        if ((r & 0xFFFFFFFF00000000L) == 0) return (int) r;
-        throw new ArithmeticException();
+        return toIntExact(x + (long) y);
     }
 
     /**
@@ -201,14 +219,12 @@ public final class JDK8 {
      * @param  x  first value to add.
      * @param  y  second value to add.
      * @return the sum.
-     * @throws ArithmeticException if the result overflows.
+     * @throws ArithmeticException if the result overflows (Note: not implemented in this placeholder).
      *
      * @since 0.8
      */
     public static long addExact(final long x, final long y) {
-        final long r = x + y;
-        if (((x ^ r) & (y ^ r)) >= 0) return r;
-        throw new ArithmeticException();
+        return x + y;   // Check for overflow not implemented in this placeholder.
     }
 
     /**
@@ -221,24 +237,22 @@ public final class JDK8 {
      *
      * @since 0.8
      */
-    public static long subtractExact(final long x, final long y) {
-        final long r = x - y;
-        if (((x ^ r) & (y ^ r)) >= 0) return r;
-        throw new ArithmeticException();
+    public static int subtractExact(final int x, final int y) {
+        return toIntExact(x - (long) y);
     }
 
     /**
-     * Safe product of the arguments.
+     * Safe subtraction of the given numbers.
      *
-     * @param  x  first value to multiply.
-     * @param  y  second value to multiply.
-     * @return the product.
-     * @throws ArithmeticException if the result overflows (Note: not implemented in this placeholder).
+     * @param  x  first value.
+     * @param  y  second value to subtract.
+     * @return the difference.
+     * @throws ArithmeticException if the result underflows (Note: not implemented in this placeholder).
      *
      * @since 0.8
      */
-    public static long multiplyExact(final long x, final long y) {
-        return x * y;   // Check for overflow not implemented in this placeholder.
+    public static long subtractExact(final long x, final long y) {
+        return x - y;   // Check for underflow not implemented in this placeholder.
     }
 
     /**
@@ -256,6 +270,33 @@ public final class JDK8 {
     }
 
     /**
+     * Safe product of the arguments.
+     *
+     * @param  x  first value to multiply.
+     * @param  y  second value to multiply.
+     * @return the product.
+     * @throws ArithmeticException if the result overflows (Note: not implemented in this placeholder).
+     *
+     * @since 0.8
+     */
+    public static long multiplyExact(final long x, final long y) {
+        return x * y;   // Check for overflow not implemented in this placeholder.
+    }
+
+    /**
+     * Divides two values, rounding toward negative infinity.
+     *
+     * @param  x  numerator.
+     * @param  y  denominator.
+     * @return x/y rounded toward negative infinity.
+     */
+    public static int floorDiv(int x, int y) {
+        int r = x / y;
+        if ((x % y != 0) && (x < 0) != (y < 0)) r--;
+        return r;
+    }
+
+    /**
      * Returns the floating-point value adjacent to {@code value} in the direction of negative infinity.
      *
      * @param  value  the value for which to get the adjacent value.

Modified: sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/internal/system/Modules.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/internal/system/Modules.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/internal/system/Modules.java [UTF-8] (original)
+++ sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/internal/system/Modules.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -60,6 +60,11 @@ public final class Modules {
     /**
      * The {@value} module name.
      */
+    public static final String FEATURE = "org.apache.sis.feature";
+
+    /**
+     * The {@value} module name.
+     */
     public static final String STORAGE = "org.apache.sis.storage";
 
     /**

Modified: sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/internal/util/Utilities.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/internal/util/Utilities.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/internal/util/Utilities.java [UTF-8] (original)
+++ sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/internal/util/Utilities.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -46,14 +46,14 @@ public final class Utilities extends Sta
      *
      * <div class="section">Relationship with {@code gml:id}</div>
      * This method may be invoked for building {@code gml:id} values. Strictly speaking this is not appropriate
-     * since the {@code xsd:ID} type defines valid identifiers as containing only letters, digits, underscores,
+     * since the {@code xs:ID} type defines valid identifiers as containing only letters, digits, underscores,
      * hyphens, and periods. This differ from Unicode identifier in two ways:
      *
      * <ul>
      *   <li>Unicode identifiers accept Japanese or Chinese ideograms for instance, which are considered as letters.</li>
      *   <li>Unicode identifiers do not accept the {@code '-'} and {@code ':'} characters. However this restriction
      *       fits well our need, since those characters are typical values for the {@code separator} argument.</li>
-     *   <li>Note that {@code '_'} is valid both in {@code xsd:ID} and Unicode identifier.</li>
+     *   <li>Note that {@code '_'} is valid both in {@code xs:ID} and Unicode identifier.</li>
      * </ul>
      *
      * @param  appendTo     the buffer where to append the valid characters.

Modified: sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/util/Locales.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/util/Locales.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/util/Locales.java [UTF-8] (original)
+++ sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/util/Locales.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -46,7 +46,8 @@ import static org.apache.sis.util.collec
  * }
  *
  * @author  Martin Desruisseaux (IRD, Geomatys)
- * @version 0.4
+ * @author  Cullen Rombach (Image Matters)
+ * @version 0.8
  * @since   0.3
  * @module
  */
@@ -275,11 +276,11 @@ filter: for (final Locale locale : local
             return unique(new Locale.Builder().setLanguageTag(code).build());
         }
         /*
-         * Old syntax (e.g. "en_US"). Split in (language, country, variant) components,
+         * Old syntax (e.g. "en_US" or "eng; USA"). Split in (language, country, variant) components,
          * then convert the 3-letters codes to the 2-letters ones.
          */
         String language, country = "", variant = "";
-        if (p1 < 0) {
+        if (p1 < 0 && (p1 = code.indexOf(';', fromIndex)) < 0) {
             p1 = code.length();
         } else {
             final int s = p1 + 1;

Modified: sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/util/iso/DefaultRecord.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/util/iso/DefaultRecord.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/util/iso/DefaultRecord.java [UTF-8] (original)
+++ sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/util/iso/DefaultRecord.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -53,7 +53,8 @@ import org.apache.sis.internal.util.Abst
  * </ul>
  *
  * @author  Martin Desruisseaux (Geomatys)
- * @version 0.5
+ * @author  Cullen Rombach (Image Matters)
+ * @version 0.8
  *
  * @see DefaultRecordType
  * @see DefaultRecordSchema
@@ -96,6 +97,59 @@ public class DefaultRecord implements Re
     }
 
     /**
+     * Creates a new record initialized to a shallow copy of the given record.
+     * The members contained in the given record are <strong>not</strong> recursively copied.
+     *
+     * @param  record  the record to copy (can not be null).
+     *
+     * @since 0.8
+     */
+    public DefaultRecord(final Record record) {
+        this(record.getRecordType());
+        for (final Map.Entry<MemberName,Integer> entry : definition.memberIndices().entrySet()) {
+            final MemberName name = entry.getKey();
+            final Object value = record.locate(name);
+            if (value != null) {
+                final int index = entry.getValue();
+                final Class<?> valueClass = definition.getValueClass(index);
+                if (valueClass != null && !valueClass.isInstance(value)) {
+                    throw new ClassCastException(Errors.format(Errors.Keys.IllegalPropertyValueClass_3,
+                            name, valueClass, value.getClass()));
+                }
+                Array.set(values, index, value);
+            }
+        }
+    }
+
+    /**
+     * Returns a SIS implementation with the name and members of the given arbitrary implementation.
+     * This method performs the first applicable action in the following choices:
+     *
+     * <ul>
+     *   <li>If the given object is {@code null}, then this method returns {@code null}.</li>
+     *   <li>Otherwise if the given object is already an instance of {@code DefaultRecord},
+     *       then it is returned unchanged.</li>
+     *   <li>Otherwise a new {@code DefaultRecord} instance is created using the
+     *       {@linkplain #DefaultRecord(Record) copy constructor} and returned.
+     *       Note that this is a shallow copy operation, since the members contained
+     *       in the given object are not recursively copied.</li>
+     * </ul>
+     *
+     * @param  other The object to get as a SIS implementation, or {@code null} if none.
+     * @return A SIS implementation containing the members of the given object
+     *         (may be the given object itself), or {@code null} if the argument was {@code null}.
+     *
+     * @since 0.8
+     */
+    public static DefaultRecord castOrCopy(final Record other) {
+        if (other == null || other instanceof DefaultRecord) {
+            return (DefaultRecord) other;
+        } else {
+            return new DefaultRecord(other);
+        }
+    }
+
+    /**
      * Returns the type definition of this record.
      *
      * @return the type definition of this record.

Modified: sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/util/iso/DefaultRecordType.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/util/iso/DefaultRecordType.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/util/iso/DefaultRecordType.java [UTF-8] (original)
+++ sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/util/iso/DefaultRecordType.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -445,6 +445,7 @@ public class DefaultRecordType extends R
     /**
      * Empty constructor only used by JAXB.
      */
+    @SuppressWarnings("unused")
     private DefaultRecordType() {
         typeName  = null;
         container = null;

Modified: sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/xml/Namespaces.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/xml/Namespaces.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/xml/Namespaces.java [UTF-8] (original)
+++ sis/branches/Android/core/sis-utility/src/main/java/org/apache/sis/xml/Namespaces.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -189,7 +189,7 @@ public final class Namespaces extends St
     private static final Map<String,String> SPECIFIC_URLS;
     static {
         final Map<String,String> p = new HashMap<>(40);
-        p.put(XMLConstants.W3C_XML_SCHEMA_NS_URI,                         "xsd");
+        p.put(XMLConstants.W3C_XML_SCHEMA_NS_URI,                         "xsd");   // TODO: should be "xs".
         p.put(XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI,                "xsi");
         p.put("http://www.w3.org/2004/02/skos/core#",                    "skos");
         p.put("http://www.w3.org/1999/02/22-rdf-syntax-ns#",              "rdf");

Modified: sis/branches/Android/core/sis-utility/src/test/java/org/apache/sis/measure/ConventionalUnitTest.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/core/sis-utility/src/test/java/org/apache/sis/measure/ConventionalUnitTest.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/core/sis-utility/src/test/java/org/apache/sis/measure/ConventionalUnitTest.java [UTF-8] (original)
+++ sis/branches/Android/core/sis-utility/src/test/java/org/apache/sis/measure/ConventionalUnitTest.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -186,9 +186,9 @@ public final strictfp class Conventional
         verify    (Units.CUBIC_METRE,  Units.CUBIC_METRE .divide  (1E+9), "mm³", 1E-9);
 
         assertSame(Units.HOUR,        Units.SECOND.multiply(3600));
-        assertSame(Units.DEGREE,      Units.RADIAN.multiply(Math.PI/180));
-        assertSame(Units.GRAD,        Units.RADIAN.multiply(Math.PI/200));
-        assertSame(Units.ARC_SECOND,  Units.RADIAN.multiply(Math.PI / (180*60*60)));
+        assertSame(Units.DEGREE,      Units.RADIAN.multiply(StrictMath.PI/180));
+        assertSame(Units.GRAD,        Units.RADIAN.multiply(StrictMath.PI/200));
+        assertSame(Units.ARC_SECOND,  Units.RADIAN.multiply(StrictMath.PI / (180*60*60)));
         assertSame(Units.MICRORADIAN, Units.RADIAN.divide(1E6));
 
         assertSame(Units.GRAM, Units.KILOGRAM.divide(1E+3));

Modified: sis/branches/Android/core/sis-utility/src/test/java/org/apache/sis/util/LocalesTest.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/core/sis-utility/src/test/java/org/apache/sis/util/LocalesTest.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/core/sis-utility/src/test/java/org/apache/sis/util/LocalesTest.java [UTF-8] (original)
+++ sis/branches/Android/core/sis-utility/src/test/java/org/apache/sis/util/LocalesTest.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -30,7 +30,7 @@ import static org.junit.Assert.*;
  * Tests the {@link Locales} class.
  *
  * @author  Martin Desruisseaux (Geomatys)
- * @version 0.4
+ * @version 0.8
  * @since   0.3
  * @module
  */
@@ -82,6 +82,7 @@ public final strictfp class LocalesTest
         assertSame(Locale.CANADA_FRENCH, Locales.parse("fr_CAN"));
         assertSame(Locale.CANADA_FRENCH, Locales.parse("fra_CAN"));
         assertSame(Locale.JAPAN,         Locales.parse("ja_JP"));
+        assertSame(Locale.US,            Locales.parse("en; USA"));
 
         assertEquals(new Locale("de", "DE"),            Locales.parse("de_DE"));
         assertEquals(new Locale("",   "GB"),            Locales.parse("_GB"));

Propchange: sis/branches/Android/ide-project/NetBeans/nbproject/cfg_hints.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/branches/Android/ide-project/NetBeans/nbproject/cfg_hints.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Modified: sis/branches/Android/pom.xml
URL: http://svn.apache.org/viewvc/sis/branches/Android/pom.xml?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/pom.xml (original)
+++ sis/branches/Android/pom.xml Sun Aug 20 16:24:04 2017
@@ -636,7 +636,7 @@ Apache SIS is a free software, Java lang
       <!-- Compile -->
       <plugin>
         <artifactId>maven-compiler-plugin</artifactId>
-        <version>3.6.1</version>
+        <version>3.6.2</version>
         <configuration>
           <source>${maven.compile.source}</source>
           <target>${maven.compile.target}</target>
@@ -866,6 +866,10 @@ Apache SIS is a free software, Java lang
               <packages>org.apache.sis.storage*:org.apache.sis.index*</packages>
             </group>
             <group>
+              <title>Coverage and raster</title>
+              <packages>org.apache.sis.coverage*:org.apache.sis.image*</packages>
+            </group>
+            <group>
               <title>Feature and Geometry</title>
               <packages>org.apache.sis.feature*:org.apache.sis.geometry*</packages>
             </group>

Modified: sis/branches/Android/src/main/javadoc/overview.html
URL: http://svn.apache.org/viewvc/sis/branches/Android/src/main/javadoc/overview.html?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/src/main/javadoc/overview.html [UTF-8] (original)
+++ sis/branches/Android/src/main/javadoc/overview.html [UTF-8] Sun Aug 20 16:24:04 2017
@@ -28,7 +28,7 @@
     Overview of <a href="http://sis.apache.org">Apache SIS™ (Spatial Information System)</a>.
 
     <h3>Requirements</h3>
-    <p>SIS requires Java 6 Standard Edition.</p>
+    <p>SIS requires Java 7 Standard Edition.</p>
 
     <h3>Classes naming</h3>
     <p>Implementations of <a href="http://www.geoapi.org/">GeoAPI interfaces</a> usually (but not always)

Modified: sis/branches/Android/storage/sis-earth-observation/src/main/java/org/apache/sis/storage/earthobservation/LandsatStore.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/storage/sis-earth-observation/src/main/java/org/apache/sis/storage/earthobservation/LandsatStore.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/storage/sis-earth-observation/src/main/java/org/apache/sis/storage/earthobservation/LandsatStore.java [UTF-8] (original)
+++ sis/branches/Android/storage/sis-earth-observation/src/main/java/org/apache/sis/storage/earthobservation/LandsatStore.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -28,6 +28,7 @@ import org.apache.sis.storage.DataStoreR
 import org.apache.sis.storage.UnsupportedStorageException;
 import org.apache.sis.storage.StorageConnector;
 import org.apache.sis.setup.OptionKey;
+import org.apache.sis.storage.Resource;
 import org.apache.sis.util.Debug;
 
 
@@ -106,7 +107,7 @@ public class LandsatStore extends DataSt
     public synchronized Metadata getMetadata() throws DataStoreException {
         if (metadata == null && source != null) try {
             try (BufferedReader reader = (source instanceof BufferedReader) ? (BufferedReader) source : new LineNumberReader(source)) {
-                source = null;      // Will be closed at the end of this try-catch block.
+                source = null;      // Will be closed at the end of this try-finally block.
                 final LandsatReader parser = new LandsatReader(getDisplayName(), listeners);
                 parser.read(reader);
                 metadata = parser.getMetadata();
@@ -120,6 +121,18 @@ public class LandsatStore extends DataSt
     }
 
     /**
+     * Current implementation does not provide any resource yet.
+     * Future versions may return an aggregate of all raster data in the GeoTIFF files associated with this metadata.
+     *
+     * @return the starting point of all resources in this data store.
+     * @throws DataStoreException if an error occurred while reading the data.
+     */
+    @Override
+    public Resource getRootResource() throws DataStoreException {
+        return null;
+    }
+
+    /**
      * Closes this Landsat store and releases any underlying resources.
      *
      * @throws DataStoreException if an error occurred while closing the Landsat file.

Propchange: sis/branches/Android/storage/sis-gdal/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/branches/Android/storage/sis-gdal/pom.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Modified: sis/branches/Android/storage/sis-gdal/src/main/java/org/apache/sis/storage/gdal/Proj4.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/storage/sis-gdal/src/main/java/org/apache/sis/storage/gdal/Proj4.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/storage/sis-gdal/src/main/java/org/apache/sis/storage/gdal/Proj4.java [UTF-8] (original)
+++ sis/branches/Android/storage/sis-gdal/src/main/java/org/apache/sis/storage/gdal/Proj4.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -42,7 +42,10 @@ import org.opengis.referencing.operation
 import org.apache.sis.referencing.operation.AbstractCoordinateOperation;
 import org.apache.sis.referencing.factory.UnavailableFactoryException;
 import org.apache.sis.referencing.factory.InvalidGeodeticParameterException;
+import org.apache.sis.referencing.datum.DefaultGeodeticDatum;
+import org.apache.sis.referencing.datum.BursaWolfParameters;
 import org.apache.sis.referencing.IdentifiedObjects;
+import org.apache.sis.referencing.CommonCRS;
 import org.apache.sis.referencing.CRS;
 import org.apache.sis.metadata.iso.citation.Citations;
 import org.apache.sis.internal.metadata.AxisDirections;
@@ -51,6 +54,7 @@ import org.apache.sis.internal.system.OS
 import org.apache.sis.util.logging.Logging;
 import org.apache.sis.util.resources.Errors;
 import org.apache.sis.util.ArgumentChecks;
+import org.apache.sis.util.Utilities;
 import org.apache.sis.util.Static;
 import org.apache.sis.util.iso.Types;
 import org.apache.sis.measure.Units;
@@ -255,7 +259,23 @@ public final class Proj4 extends Static
                 definition.append("to_meter=").append(Units.toStandardUnit(unit));
             }
         }
+        /*
+         * Append the "+towgs84" element if any. This is the last piece of information.
+         * Note that the use of a "+towgs84" parameter is an "early binding" approach,
+         * which is usually not recommended. But Proj4 works that way.
+         */
         if (validCS) {
+            if (datum instanceof DefaultGeodeticDatum) {
+                for (final BursaWolfParameters bwp : ((DefaultGeodeticDatum) datum).getBursaWolfParameters()) {
+                    if (Utilities.equalsIgnoreMetadata(CommonCRS.WGS84.datum(), bwp.getTargetDatum())) {
+                        definition.append(" +towgs84=").append(bwp.tX).append(',').append(bwp.tY).append(',').append(bwp.tZ);
+                        if (!bwp.isTranslation()) {
+                            definition.append(',').append(bwp.rX).append(',').append(bwp.rY).append(',').append(bwp.rZ).append(',').append(bwp.dS);
+                        }
+                        break;
+                    }
+                }
+            }
             return definition.toString();
         }
         /*

Modified: sis/branches/Android/storage/sis-gdal/src/main/java/org/apache/sis/storage/gdal/Proj4Factory.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/storage/sis-gdal/src/main/java/org/apache/sis/storage/gdal/Proj4Factory.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/storage/sis-gdal/src/main/java/org/apache/sis/storage/gdal/Proj4Factory.java [UTF-8] (original)
+++ sis/branches/Android/storage/sis-gdal/src/main/java/org/apache/sis/storage/gdal/Proj4Factory.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -16,6 +16,7 @@
  */
 package org.apache.sis.storage.gdal;
 
+import java.util.Arrays;
 import java.util.Map;
 import java.util.Set;
 import java.util.HashMap;
@@ -274,7 +275,7 @@ public class Proj4Factory extends Geodet
     /**
      * Returns the set of authority codes for objects of the given type.
      * Current implementation can not return complete Proj.4 definition strings.
-     * Instead, this method currently returns only fragments (e.g. {@code "+init="}).
+     * Instead, this method currently returns only fragments (e.g. {@code "+proj=lcc"}).
      *
      * @param  type  the spatial reference objects type.
      * @return fragments of definition strings for spatial reference objects of the given type.
@@ -282,19 +283,21 @@ public class Proj4Factory extends Geodet
      */
     @Override
     public Set<String> getAuthorityCodes(Class<? extends IdentifiedObject> type) throws FactoryException {
-        final String method;
-        if (type.isAssignableFrom(ProjectedCRS.class)) {                // Must be tested first.
-            method = "";
-        } else if (type.isAssignableFrom(GeographicCRS.class)) {        // Should be tested before GeocentricCRS.
-            method = "latlon";
-        } else if (type.isAssignableFrom(GeocentricCRS.class)) {
-            method = "geocent";
-        } else {
-            return Collections.emptySet();
+        final Set<String> codes = new LinkedHashSet<>(10);
+        if (type.isAssignableFrom(GeographicCRS.class)) {
+            codes.add("latlon");
+        }
+        if (type.isAssignableFrom(GeocentricCRS.class)) {
+            codes.add("geocent");
+        }
+        if (type.isAssignableFrom(ProjectedCRS.class)) {
+            codes.addAll(Arrays.asList("lcc", "merc", "tmerc", "stere"));   // Only a subset of supported projections.
+        }
+        final String[] methods = codes.toArray(new String[codes.size()]);
+        codes.clear();
+        for (final String method : methods) {
+            codes.add(PROJ_PARAM.concat(method));
         }
-        final Set<String> codes = new LinkedHashSet<>(4);
-        codes.add("+init=");
-        codes.add(PROJ_PARAM.concat(method));
         return codes;
     }
 
@@ -582,16 +585,22 @@ public class Proj4Factory extends Geodet
     private CoordinateReferenceSystem createCRS(final PJ pj, final boolean withHeight) throws FactoryException {
         final PJ.Type type = pj.getType();
         final boolean geographic = PJ.Type.GEOGRAPHIC.equals(type);
+        final boolean geocentric = PJ.Type.GEOCENTRIC.equals(type);
         final Proj4Parser parser = new Proj4Parser(pj.getCode());
         final String dir = parser.value("axis", "enu");
-        final CoordinateSystemAxis[] axes = new CoordinateSystemAxis[withHeight ? dir.length() : 2];
+        final CoordinateSystemAxis[] axes = new CoordinateSystemAxis[geocentric | withHeight ? dir.length() : 2];
         for (int i=0; i<axes.length; i++) {
             final char d = Character.toLowerCase(dir.charAt(i));
             char abbreviation = Character.toUpperCase(d);
             boolean vertical = false;
             final AxisDirection c;
             final String name;
-            switch (d) {
+            if (geocentric) switch (d) {
+                case 'e': c = AxisDirection.GEOCENTRIC_X;  name = "Geocentric X";  break;
+                case 'n': c = AxisDirection.GEOCENTRIC_Y;  name = "Geocentric Y";  break;
+                case 'u': c = AxisDirection.GEOCENTRIC_Z;  name = "Geocentric Z";  break;
+                default:  c = AxisDirection.OTHER;         name = "Unknown";       break;
+            } else switch (d) {
                 case 'e': c = AxisDirection.EAST;  name = geographic ? "Geodetic longitude" : "Easting";  break;
                 case 'w': c = AxisDirection.WEST;  name = geographic ? "Geodetic longitude" : "Westing";  break;
                 case 'n': c = AxisDirection.NORTH; name = geographic ? "Geodetic latitude"  : "Northing"; break;

Modified: sis/branches/Android/storage/sis-gdal/src/main/java/org/apache/sis/storage/gdal/Transform.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/storage/sis-gdal/src/main/java/org/apache/sis/storage/gdal/Transform.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/storage/sis-gdal/src/main/java/org/apache/sis/storage/gdal/Transform.java [UTF-8] (original)
+++ sis/branches/Android/storage/sis-gdal/src/main/java/org/apache/sis/storage/gdal/Transform.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -38,6 +38,13 @@ import org.apache.sis.util.ComparisonMod
 
 /**
  * A math transform which delegate its work to the {@literal Proj.4} native library.
+ * The WKT for this math transform looks like the following fragment:
+ *
+ * {@preformat wkt
+ *   PARAM_MT["pj_transform",
+ *     PARAMETER["srcdefn", "+proj=…"],
+ *     PARAMETER["dstdefn", "+proj=…"]]
+ * }
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 0.8

Modified: sis/branches/Android/storage/sis-gdal/src/main/java/org/apache/sis/storage/gdal/package-info.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/storage/sis-gdal/src/main/java/org/apache/sis/storage/gdal/package-info.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/storage/sis-gdal/src/main/java/org/apache/sis/storage/gdal/package-info.java [UTF-8] (original)
+++ sis/branches/Android/storage/sis-gdal/src/main/java/org/apache/sis/storage/gdal/package-info.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -40,10 +40,16 @@
  * }
  *
  * Calls to {@link org.apache.sis.referencing.CRS#findOperation CRS.findOperation(…)} will delegate the coordinate
- * transformation to Proj.4 if an only if {@code sourceCRS} and {@code targetCRS} were both obtained from a code
- * in {@code "Proj4"} namespace or by a method in this package. If at least one CRS were obtained by another way,
- * then Apache SIS will use its own referencing engine. The backing referencing engine can be seen by printing
- * the {@code CoordinateOperation}.
+ * transformation to Proj.4 if {@code sourceCRS} and {@code targetCRS} were both obtained from a code in {@code "Proj4"}
+ * namespace or by a method in this package. Otherwise, Apache SIS will use its own referencing engine.
+ * The backing referencing engine can be seen by printing the {@code MathTransform}:
+ * a transform backed by Proj.4 have a <cite>Well Known Text 1</cite> representation like below:
+ *
+ * {@preformat wkt
+ *   PARAM_MT["pj_transform",
+ *     PARAMETER["srcdefn", "+proj=…"],
+ *     PARAMETER["dstdefn", "+proj=…"]]
+ * }
  *
  * <div class="section">Note on Proj.4 definition strings</div>
  * Proj.4 unconditionally requires 3 letters for the {@code "+axis="} parameter — for example {@code "neu"} for

Modified: sis/branches/Android/storage/sis-gdal/src/test/java/org/apache/sis/storage/gdal/Proj4FactoryTest.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/storage/sis-gdal/src/test/java/org/apache/sis/storage/gdal/Proj4FactoryTest.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/storage/sis-gdal/src/test/java/org/apache/sis/storage/gdal/Proj4FactoryTest.java [UTF-8] (original)
+++ sis/branches/Android/storage/sis-gdal/src/test/java/org/apache/sis/storage/gdal/Proj4FactoryTest.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -64,8 +64,10 @@ public final strictfp class Proj4Factory
     @Test
     public void testGetAuthorityCodes() throws FactoryException {
         final Proj4Factory factory = Proj4Factory.INSTANCE;
-        assertTrue(factory.getAuthorityCodes(GeographicCRS.class).containsAll(Arrays.asList("+init=", "+proj=latlon")));
-        assertTrue(factory.getAuthorityCodes(CoordinateReferenceSystem.class).containsAll(Arrays.asList("+init=", "+proj=")));
+        assertTrue(factory.getAuthorityCodes(GeographicCRS.class).containsAll(Arrays.asList("+proj=latlon")));
+        assertTrue(factory.getAuthorityCodes(ProjectedCRS.class).containsAll(Arrays.asList("+proj=merc", "+proj=lcc")));
+        assertTrue(factory.getAuthorityCodes(CoordinateReferenceSystem.class).containsAll(
+                Arrays.asList("+proj=latlon", "+proj=merc", "+proj=lcc")));
     }
 
     /**

Modified: sis/branches/Android/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/CRSBuilder.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/CRSBuilder.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/CRSBuilder.java [UTF-8] (original)
+++ sis/branches/Android/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/CRSBuilder.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -133,7 +133,7 @@ import org.apache.sis.referencing.operat
  * <p>Going further down the list, the key 2051 ({@code GeogLinearUnitSize}) is located in {@code GeoDoubleParams(34736)}
  * at offset 0 and has the value 1.5; the value of key 2049 ({@code GeogCitation}) is "My Geographic".</p>
  *
- * @author  Rémi Marechal (Geomatys)
+ * @author  Rémi Maréchal (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
  * @version 0.8
  *

Modified: sis/branches/Android/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/GeoTIFF.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/GeoTIFF.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/GeoTIFF.java [UTF-8] (original)
+++ sis/branches/Android/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/GeoTIFF.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -30,7 +30,7 @@ import org.apache.sis.internal.geotiff.R
  * Those readers and writers are <strong>not</strong> thread safe.
  * The {@link GeoTiffStore} class is responsible for synchronization if needed.
  *
- * @author  Rémi Marechal (Geomatys)
+ * @author  Rémi Maréchal (Geomatys)
  * @author  Alexis Manin (Geomatys)
  * @author  Johann Sorel (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)

Modified: sis/branches/Android/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/GeoTiffStore.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/GeoTiffStore.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/GeoTiffStore.java [UTF-8] (original)
+++ sis/branches/Android/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/GeoTiffStore.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -36,6 +36,7 @@ import org.apache.sis.internal.storage.M
 import org.apache.sis.internal.util.Constants;
 import org.apache.sis.metadata.sql.MetadataStoreException;
 import org.apache.sis.storage.DataStoreClosedException;
+import org.apache.sis.storage.Resource;
 import org.apache.sis.util.resources.Errors;
 
 
@@ -132,6 +133,18 @@ public class GeoTiffStore extends DataSt
     }
 
     /**
+     * Current implementation does not provide any resource yet.
+     * A future version will return the raster data in a coverage resource.
+     *
+     * @return the starting point of all resources in this data store.
+     * @throws DataStoreException if an error occurred while reading the data.
+     */
+    @Override
+    public Resource getRootResource() throws DataStoreException {
+        return null;
+    }
+
+    /**
      * Returns the reader if it is not closed, or thrown an exception otherwise.
      */
     private Reader reader() throws DataStoreException {

Modified: sis/branches/Android/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/ImageFileDirectory.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/ImageFileDirectory.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/ImageFileDirectory.java [UTF-8] (original)
+++ sis/branches/Android/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/ImageFileDirectory.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -50,7 +50,7 @@ import org.apache.sis.internal.jdk8.JDK8
 /**
  * An Image File Directory (FID) in a TIFF image.
  *
- * @author  Rémi Marechal (Geomatys)
+ * @author  Rémi Maréchal (Geomatys)
  * @author  Alexis Manin (Geomatys)
  * @author  Johann Sorel (Geomatys)
  * @author  Thi Phuong Hao Nguyen (VNSC)

Modified: sis/branches/Android/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/Reader.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/Reader.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/Reader.java [UTF-8] (original)
+++ sis/branches/Android/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/Reader.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -48,7 +48,7 @@ import org.apache.sis.internal.jdk8.JDK8
  * <p>The TIFF format specification version 6.0 (June 3, 1992) is available
  * <a href="https://partners.adobe.com/public/developer/en/tiff/TIFF6.pdf">here</a>.</p>
  *
- * @author  Rémi Marechal (Geomatys)
+ * @author  Rémi Maréchal (Geomatys)
  * @author  Alexis Manin (Geomatys)
  * @author  Johann Sorel (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)

Modified: sis/branches/Android/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/NetcdfStore.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/NetcdfStore.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/NetcdfStore.java [UTF-8] (original)
+++ sis/branches/Android/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/NetcdfStore.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -26,6 +26,7 @@ import org.apache.sis.storage.StorageCon
 import org.apache.sis.internal.netcdf.Decoder;
 import org.apache.sis.metadata.ModifiableMetadata;
 import org.apache.sis.setup.OptionKey;
+import org.apache.sis.storage.Resource;
 import org.apache.sis.util.CharSequences;
 import org.apache.sis.util.Version;
 import ucar.nc2.constants.CDM;
@@ -117,6 +118,17 @@ public class NetcdfStore extends DataSto
     }
 
     /**
+     * This implementation does not provide any resource yet.
+     *
+     * @return currently {@code null} (will be implemented in future Apache SIS version).
+     * @throws DataStoreException if an error occurred while reading the data.
+     */
+    @Override
+    public Resource getRootResource() throws DataStoreException {
+        return null;
+    }
+
+    /**
      * Returns the version number of the Climate and Forecast (CF) conventions used in the NetCDF file.
      * The use of CF convention is mandated by the OGC 11-165r2 standard
      * (<cite>CF-netCDF3 Data Model Extension standard</cite>).

Modified: sis/branches/Android/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/FeatureCatalogBuilder.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/FeatureCatalogBuilder.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/FeatureCatalogBuilder.java [UTF-8] (original)
+++ sis/branches/Android/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/FeatureCatalogBuilder.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -39,7 +39,7 @@ import org.apache.sis.feature.DefaultFea
  * @since 0.8
  * @module
  */
-public class FeatureCatalogBuilder extends MetadataBuilder {
+public final class FeatureCatalogBuilder extends MetadataBuilder {
     /**
      * The data store for which the metadata will be created, or {@code null} if unknown.
      * This is used for producing error message if an exception is thrown.

Modified: sis/branches/Android/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/MetadataBuilder.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/MetadataBuilder.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/MetadataBuilder.java [UTF-8] (original)
+++ sis/branches/Android/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/MetadataBuilder.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -52,8 +52,8 @@ import org.opengis.metadata.identificati
 import org.opengis.metadata.distribution.Format;
 import org.opengis.metadata.quality.Element;
 import org.opengis.geometry.DirectPosition;
+import org.opengis.referencing.ReferenceSystem;
 import org.opengis.referencing.crs.VerticalCRS;
-import org.opengis.referencing.crs.CoordinateReferenceSystem;
 import org.opengis.referencing.operation.TransformException;
 import org.apache.sis.geometry.AbstractEnvelope;
 import org.apache.sis.metadata.iso.DefaultMetadata;
@@ -125,7 +125,7 @@ import org.apache.sis.metadata.iso.citat
  * API of this class may change in any future SIS versions.
  *
  * @author  Martin Desruisseaux (Geomatys)
- * @author  Rémi Marechal (Geomatys)
+ * @author  Rémi Maréchal (Geomatys)
  * @version 0.8
  * @since   0.8
  * @module
@@ -1623,7 +1623,7 @@ parse:      for (int i = 0; i < length;)
      *
      * @param  crs  the coordinate reference system to add to the metadata, or {@code null} for no-operation.
      */
-    public final void addReferenceSystem(final CoordinateReferenceSystem crs) {
+    public final void addReferenceSystem(final ReferenceSystem crs) {
         if (crs != null) {
             addIfNotPresent(metadata().getReferenceSystemInfo(), crs);
         }

Modified: sis/branches/Android/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/Resources.java
URL: http://svn.apache.org/viewvc/sis/branches/Android/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/Resources.java?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/Resources.java [UTF-8] (original)
+++ sis/branches/Android/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/Resources.java [UTF-8] Sun Aug 20 16:24:04 2017
@@ -149,6 +149,16 @@ public final class Resources extends Ind
         public static final short ProcessingExecutedOn_1 = 12;
 
         /**
+         * More than one resource have the “{1}” identifier in the “{0}” data store.
+         */
+        public static final short ResourceIdentifierCollision_2 = 23;
+
+        /**
+         * No resource found for the “{1}” identifier in the “{0}” data store.
+         */
+        public static final short ResourceNotFound_2 = 24;
+
+        /**
          * The “{1}” element must be declared before “{0}”.
          */
         public static final short ShallBeDeclaredBefore_2 = 22;

Modified: sis/branches/Android/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/Resources.properties
URL: http://svn.apache.org/viewvc/sis/branches/Android/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/Resources.properties?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/Resources.properties [ISO-8859-1] (original)
+++ sis/branches/Android/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/Resources.properties [ISO-8859-1] Sun Aug 20 16:24:04 2017
@@ -36,6 +36,8 @@ IllegalOutputTypeForWriter_2      = The
 InconsistentNameComponents_2      = Components of the \u201c{1}\u201d name are inconsistent with those of the name previously binded in \u201c{0}\u201d data store.
 MissingSchemeInURI_1              = Missing scheme in \u201c{0}\u201d URI.
 ProcessingExecutedOn_1            = Processing executed on {0}.
+ResourceIdentifierCollision_2     = More than one resource have the \u201c{1}\u201d identifier in the \u201c{0}\u201d data store.
+ResourceNotFound_2                = No resource found for the \u201c{1}\u201d identifier in the \u201c{0}\u201d data store.
 ShallBeDeclaredBefore_2           = The \u201c{1}\u201d element must be declared before \u201c{0}\u201d.
 StreamIsForwardOnly_1             = Can not move backward in the \u201c{0}\u201d stream.
 StreamIsReadOnce_1                = The \u201c{0}\u201d data store can be read only once.

Modified: sis/branches/Android/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/Resources_fr.properties
URL: http://svn.apache.org/viewvc/sis/branches/Android/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/Resources_fr.properties?rev=1805571&r1=1805570&r2=1805571&view=diff
==============================================================================
--- sis/branches/Android/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/Resources_fr.properties [ISO-8859-1] (original)
+++ sis/branches/Android/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/Resources_fr.properties [ISO-8859-1] Sun Aug 20 16:24:04 2017
@@ -41,6 +41,8 @@ IllegalOutputTypeForWriter_2      = Le l
 InconsistentNameComponents_2      = Les \u00e9l\u00e9ments qui composent le nom \u00ab\u202f{1}\u202f\u00bb ne sont pas coh\u00e9rents avec ceux du nom qui avait \u00e9t\u00e9 pr\u00e9c\u00e9demment li\u00e9 dans les donn\u00e9es de \u00ab\u202f{0}\u202f\u00bb.
 MissingSchemeInURI_1              = Il manque le sch\u00e9ma dans l\u2019URI \u00ab\u202f{0}\u202f\u00bb.
 ProcessingExecutedOn_1            = Traitement ex\u00e9cut\u00e9 sur {0}.
+ResourceIdentifierCollision_2     = Plusieurs ressources utilisent l\u2019identifiant \u00ab\u202f{1}\u202f\u00bb dans les donn\u00e9es de \u00ab\u202f{0}\u202f\u00bb.
+ResourceNotFound_2                = Aucune ressource n\u2019a \u00e9t\u00e9 trouv\u00e9e pour l\u2019identifiant \u00ab\u202f{1}\u202f\u00bb dans les donn\u00e9es de \u00ab\u202f{0}\u202f\u00bb.
 ShallBeDeclaredBefore_2           = L\u2019\u00e9l\u00e9ment \u00ab\u202f{1}\u202f\u00bb doit \u00eatre d\u00e9clar\u00e9 avant \u00ab\u202f{0}\u202f\u00bb.
 StreamIsForwardOnly_1             = Ne peut pas reculer dans le flux de donn\u00e9es \u00ab\u202f{0}\u202f\u00bb.
 StreamIsReadOnce_1                = Les donn\u00e9es de \u00ab\u202f{0}\u202f\u00bb ne peuvent \u00eatre lues qu\u2019une seule fois.



Mime
View raw message