Author: desruisseaux
Date: Tue Aug  8 14:19:44 2017
New Revision: 1804427

URL: http://svn.apache.org/viewvc?rev=1804427&view=rev
Log:
Merge from JDK8 branch.

Modified:
    sis/branches/JDK7/   (props changed)
    
sis/branches/JDK7/core/sis-raster/src/main/java/org/apache/sis/image/PixelIterator.java
    
sis/branches/JDK7/core/sis-raster/src/main/java/org/apache/sis/image/WritablePixelIterator.java
    
sis/branches/JDK7/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/AbstractResource.java
    
sis/branches/JDK7/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/csv/Store.java
    
sis/branches/JDK7/storage/sis-storage/src/main/java/org/apache/sis/storage/FeatureSet.java

Propchange: sis/branches/JDK7/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Aug  8 14:19:44 2017
@@ -1,5 +1,5 @@
 /sis/branches/Android:1430670-1480699
 /sis/branches/JDK6:1394913-1508480
-/sis/branches/JDK8:1584960-1804404
+/sis/branches/JDK8:1584960-1804426
 /sis/branches/JDK9:1773327-1803064
 /sis/trunk:1394364-1508466,1519089-1519674

Modified: 
sis/branches/JDK7/core/sis-raster/src/main/java/org/apache/sis/image/PixelIterator.java
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-raster/src/main/java/org/apache/sis/image/PixelIterator.java?rev=1804427&r1=1804426&r2=1804427&view=diff
==============================================================================
--- 
sis/branches/JDK7/core/sis-raster/src/main/java/org/apache/sis/image/PixelIterator.java
 [UTF-8] (original)
+++ 
sis/branches/JDK7/core/sis-raster/src/main/java/org/apache/sis/image/PixelIterator.java
 [UTF-8] Tue Aug  8 14:19:44 2017
@@ -22,6 +22,8 @@ import java.awt.Dimension;
 import java.awt.Rectangle;
 import java.awt.image.Raster;
 import java.awt.image.RenderedImage;
+import java.awt.image.WritableRaster;
+import java.awt.image.WritableRenderedImage;
 import java.util.NoSuchElementException;
 import org.opengis.coverage.grid.SequenceType;
 import org.apache.sis.util.resources.Errors;
@@ -39,7 +41,7 @@ import static org.apache.sis.internal.jd
  * left to right). Iteration can be performed on a complete image or only a 
sub-region of it. Some optimized iterator
  * implementations exist for a few commonly used {@linkplain 
java.awt.image.SampleModel sample models}.
  *
- * <p>Usage example:</p>
+ * <div class="note"><b>Example:</b>
  * {@preformat java
  *     PixelIterator it = PixelIterator.create(image);
  *     double[] samples = null;
@@ -48,6 +50,7 @@ import static org.apache.sis.internal.jd
  *         // Perform computation here...
  *     }
  * }
+ * </div>
  *
  * @author  Rémi Maréchal (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
@@ -195,88 +198,180 @@ public abstract class PixelIterator {
     }
 
     /**
-     * Creates an iterator for all pixels in the given raster.
-     *
-     * @param  data  the raster which contains the sample values on which to 
iterate.
-     * @return a new iterator traversing all pixels in the given raster, in 
arbitrary order.
-     */
-    public static PixelIterator create(Raster data) {
-        return create(data, null, null, null);
-    }
+     * Builds pixel iterators for specified region of interest, window size or 
iteration order.
+     * By default, the builder creates iterators for all pixels in the given 
raster or image,
+     * with unspecified iteration order. Users can invoke setter methods for 
specifying
+     * desired behavior for the iterators to create.
+     *
+     * <div class="note"><b>Example:</b>
+     * {@preformat java
+     *     PixelIterator iterator = new 
PixelIterator.Builder().setRegionOfInterest(new Rectangle(10, 10, 5, 
5).create(image);
+     * }
+     * </div>
+     */
+    public static class Builder {
+        /**
+         * The region where to perform the iteration, or {@code null} for 
iterating over all the domain.
+         */
+        private Rectangle subArea;
+
+        /**
+         * Size of the window to use in {@link 
PixelIterator#createWindow(TransferType)} method,
+         * or {@code null} if none.
+         */
+        private Dimension window;
+
+        /**
+         * The desired iteration order, or {@code null} for a default order.
+         */
+        private SequenceType order;
+
+        /**
+         * Creates a new iterator builder with no region of interest, no 
window size and default iterator order.
+         */
+        public Builder() {
+        }
 
-    /**
-     * Creates an iterator for all pixels in the given image.
-     *
-     * @param  data  the image which contains the sample values on which to 
iterate.
-     * @return a new iterator traversing all pixels in the given image, in 
arbitrary order.
-     */
-    public static PixelIterator create(RenderedImage data) {
-        return create(data, null, null, null);
-    }
+        /**
+         * Sets the region (in pixel coordinates) where to perform the 
iteration.
+         * By default, iterators will traverse all pixels in the given image 
or raster.
+         *
+         * @param  subArea  region where to iterator, or {@code null} for 
iterating over all image domain.
+         * @return {@code this} for method call chaining.
+         */
+        public Builder setRegionOfInterest(final Rectangle subArea) {
+            this.subArea = subArea;
+            return this;
+        }
 
-    /**
-     * Creates an iterator for the given region in the given raster.
-     * The {@code order} argument can have the following values:
-     *
-     * <table class="sis">
-     *   <caption>Supported iteration order</caption>
-     *   <tr><th>Value</th>                         <th>Iteration 
order</th></tr>
-     *   <tr><td>{@code null}</td>                  <td>Most efficient 
iteration order.</td></tr>
-     *   <tr><td>{@link SequenceType#LINEAR}</td>   <td>From left to right, 
then from top to bottom.</td></tr>
-     * </table>
-     *
-     * Any other {@code order} value will cause an {@link 
IllegalArgumentException} to be thrown.
-     * More iteration orders may be supported in future Apache SIS versions.
-     *
-     * @param  data     the raster which contains the sample values on which 
to iterate.
-     * @param  subArea  the raster region where to perform the iteration, or 
{@code null}
-     *                  for iterating over all the raster domain.
-     * @param  window   size of the window to use in {@link 
#createWindow(TransferType)} method, or {@code null} if none.
-     * @param  order    the desired iteration order, or {@code null} for a 
default order.
-     * @return a new iterator.
-     */
-    public static PixelIterator create(Raster data, Rectangle subArea, 
Dimension window, SequenceType order) {
-        ArgumentChecks.ensureNonNull("data", data);
+        /**
+         * Sets the size of the window to use in {@link 
PixelIterator#createWindow(TransferType)} method.
+         * By default, iterators do not create windows.
+         *
+         * @param  window  the window size, or {@code null} if no window will 
be created.
+         * @return {@code this} for method call chaining.
+         */
+        public Builder setWindowSize(final Dimension window) {
+            this.window = window;
+            return this;
+        }
 
-        // TODO: check here for cases that we can optimize (after we ported 
corresponding implementations).
+        /**
+         * Sets the desired iteration order.
+         * The {@code order} argument can have the following values:
+         *
+         * <table class="sis">
+         *   <caption>Supported iteration order</caption>
+         *   <tr><th>Value</th>                         <th>Iteration 
order</th>                                <th>Supported on</th></tr>
+         *   <tr><td>{@code null}</td>                  <td>Most efficient 
iteration order.</td>                <td>Image and raster</td></tr>
+         *   <tr><td>{@link SequenceType#LINEAR}</td>   <td>From left to 
right, then from top to bottom.</td>   <td>Raster only</td></tr>
+         * </table>
+         *
+         * Any other {@code order} value will cause an {@link 
IllegalArgumentException} to be thrown.
+         * More iteration orders may be supported in future Apache SIS 
versions.
+         *
+         * @param  order  the desired iteration order, or {@code null} for a 
default order.
+         * @return {@code this} for method call chaining.
+         */
+        public Builder setIteratorOrder(final SequenceType order) {
+            if (order == null || order.equals(SequenceType.LINEAR)) {
+                this.order = order;
+            } else {
+                throw new 
IllegalArgumentException(Errors.format(Errors.Keys.UnsupportedType_1, order));
+            }
+            return this;
+        }
 
-        if (order == null || order.equals(SequenceType.LINEAR)) {
+        /**
+         * Creates a read-only iterator for the given raster.
+         *
+         * @param  data  the raster which contains the sample values on which 
to iterate.
+         * @return a new iterator traversing pixels in the given raster.
+         */
+        public PixelIterator create(final Raster data) {
+            ArgumentChecks.ensureNonNull("data", data);
+            // TODO: check here for cases that we can optimize (after we 
ported corresponding implementations).
             return new DefaultIterator(data, null, subArea, window);
-        } else {
-            throw new 
IllegalArgumentException(Errors.format(Errors.Keys.UnsupportedType_1, order));
+        }
+
+        /**
+         * Creates a read-only iterator for the given image.
+         *
+         * @param  data  the image which contains the sample values on which 
to iterate.
+         * @return a new iterator traversing pixels in the given image.
+         */
+        public PixelIterator create(final RenderedImage data) {
+            ArgumentChecks.ensureNonNull("data", data);
+            if (order != null) {
+                throw new 
IllegalStateException(Errors.format(Errors.Keys.UnsupportedType_1, order));
+            }
+            // TODO: check here for cases that we can optimize (after we 
ported corresponding implementations).
+            return new DefaultIterator(data, null, subArea, window);
+        }
+
+        /**
+         * Creates a read/write iterator for the given raster.
+         *
+         * @param  data  the raster which contains the sample values on which 
to iterate.
+         * @return a new iterator traversing pixels in the given raster.
+         */
+        public WritablePixelIterator createWritable(final WritableRaster data) 
{
+            ArgumentChecks.ensureNonNull("data", data);
+            return createWritable(data, data);
+        }
+
+        /**
+         * Creates a read/write iterator for the given image.
+         *
+         * @param  data  the image which contains the sample values on which 
to iterate.
+         * @return a new iterator traversing pixels in the given image.
+         */
+        public WritablePixelIterator createWritable(final 
WritableRenderedImage data) {
+            ArgumentChecks.ensureNonNull("data", data);
+            return createWritable(data, data);
+        }
+
+        /**
+         * Creates an iterator which will read and write in two different 
rasters.
+         *
+         * @param  input    the raster which contains the sample values to 
read.
+         * @param  output   the raster where to write the sample values. Can 
be the same than {@code input}.
+         * @return a new writable iterator.
+         */
+        public WritablePixelIterator createWritable(final Raster input, final 
WritableRaster output) {
+            ArgumentChecks.ensureNonNull("input",  input);
+            ArgumentChecks.ensureNonNull("output", output);
+            // TODO: check here for cases that we can optimize (after we 
ported corresponding implementations).
+            return new DefaultIterator(input, output, subArea, window);
+        }
+
+        /**
+         * Creates an iterator which will read and write in two different 
images.
+         *
+         * @param  input    the image which contains the sample values to read.
+         * @param  output   the image where to write the sample values. Can be 
the same than {@code input}.
+         * @return a new writable iterator.
+         */
+        public WritablePixelIterator createWritable(final RenderedImage input, 
final WritableRenderedImage output) {
+            ArgumentChecks.ensureNonNull("input",  input);
+            ArgumentChecks.ensureNonNull("output", output);
+            if (order != null) {
+                throw new 
IllegalStateException(Errors.format(Errors.Keys.UnsupportedType_1, order));
+            }
+            // TODO: check here for cases that we can optimize (after we 
ported corresponding implementations).
+            return new DefaultIterator(input, output, subArea, window);
         }
     }
 
     /**
-     * Creates an iterator for the given region in the given image.
-     * The {@code order} argument can have the following values:
-     *
-     * <table class="sis">
-     *   <caption>Supported iteration order</caption>
-     *   <tr><th>Value</th>                         <th>Iteration 
order</th></tr>
-     *   <tr><td>{@code null}</td>                  <td>Most efficient 
iteration order.</td></tr>
-     * </table>
-     *
-     * Any other {@code order} value will cause an {@link 
IllegalArgumentException} to be thrown.
-     * More iteration orders may be supported in future Apache SIS versions.
+     * Creates an iterator for all pixels in the given image.
+     * This is a convenience method for {@code new Builder().create(data)}.
      *
-     * @param  data     the image which contains the sample values on which to 
iterate.
-     * @param  subArea  the image region where to perform the iteration, or 
{@code null}
-     *                  for iterating over all the image domain.
-     * @param  window   size of the window to use in {@link 
#createWindow(TransferType)} method, or {@code null} if none.
-     * @param  order    the desired iteration order, or {@code null} for a 
default order.
-     * @return a new iterator.
+     * @param  data  the image which contains the sample values on which to 
iterate.
+     * @return a new iterator traversing all pixels in the given image, in 
arbitrary order.
      */
-    public static PixelIterator create(RenderedImage data, Rectangle subArea, 
Dimension window, SequenceType order) {
-        ArgumentChecks.ensureNonNull("data", data);
-
-        // TODO: check here for cases that we can optimize (after we ported 
corresponding implementations).
-
-        if (order == null) {
-            return new DefaultIterator(data, null, subArea, window);
-        } else {
-            throw new 
IllegalArgumentException(Errors.format(Errors.Keys.UnsupportedType_1, order));
-        }
+    public static PixelIterator create(final RenderedImage data) {
+        return new Builder().create(data);
     }
 
     /**

Modified: 
sis/branches/JDK7/core/sis-raster/src/main/java/org/apache/sis/image/WritablePixelIterator.java
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-raster/src/main/java/org/apache/sis/image/WritablePixelIterator.java?rev=1804427&r1=1804426&r2=1804427&view=diff
==============================================================================
--- 
sis/branches/JDK7/core/sis-raster/src/main/java/org/apache/sis/image/WritablePixelIterator.java
 [UTF-8] (original)
+++ 
sis/branches/JDK7/core/sis-raster/src/main/java/org/apache/sis/image/WritablePixelIterator.java
 [UTF-8] Tue Aug  8 14:19:44 2017
@@ -23,10 +23,7 @@ import java.awt.image.Raster;
 import java.awt.image.RenderedImage;
 import java.awt.image.WritableRaster;
 import java.awt.image.WritableRenderedImage;
-import org.opengis.coverage.grid.SequenceType;
 import org.apache.sis.internal.raster.Resources;
-import org.apache.sis.util.resources.Errors;
-import org.apache.sis.util.ArgumentChecks;
 
 
 /**
@@ -84,10 +81,19 @@ public abstract class WritablePixelItera
      *                  for iterating over all the raster domain.
      * @param  window   size of the window to use in {@link 
#createWindow(TransferType)} method, or {@code null} if none.
      */
-    WritablePixelIterator(Raster input, WritableRaster output, Rectangle 
subArea, Dimension window) {
+    WritablePixelIterator(final Raster input, final WritableRaster output,
+                          final Rectangle subArea, final Dimension window)
+    {
         super(input, subArea, window);
         destRaster  = output;
         destination = null;
+        if (output != null) {
+            if (!input.getSampleModel().equals(output.getSampleModel())) {
+                throw new 
IllegalArgumentException(Resources.format(Resources.Keys.MismatchedSampleModel));
+            } else if (!input.getBounds().equals(output.getBounds())) {
+                throw new 
IllegalArgumentException(Resources.format(Resources.Keys.MismatchedImageLocation));
+            }
+        }
     }
 
     /**
@@ -99,123 +105,40 @@ public abstract class WritablePixelItera
      *                  for iterating over all the image domain.
      * @param  window   size of the window to use in {@link 
#createWindow(TransferType)} method, or {@code null} if none.
      */
-    WritablePixelIterator(RenderedImage input, WritableRenderedImage output, 
Rectangle subArea, Dimension window) {
+    WritablePixelIterator(final RenderedImage input, final 
WritableRenderedImage output,
+                          final Rectangle subArea, final Dimension window)
+    {
         super(input, subArea, window);
         destRaster  = null;
         destination = output;
-    }
-
-    /**
-     * Creates an iterator for all pixels in the given raster.
-     *
-     * @param  data  the raster which contains the sample values on which to 
iterate.
-     * @return a new iterator traversing all pixels in the given raster, in 
arbitrary order.
-     */
-    public static WritablePixelIterator create(WritableRaster data) {
-        return create(data, null, null, null, null);
+        if (output != null) {
+            if (!input.getSampleModel().equals(output.getSampleModel())) {
+                throw new 
IllegalArgumentException(Resources.format(Resources.Keys.MismatchedSampleModel));
+            } else if (input.getMinX()   != output.getMinX()  ||
+                       input.getMinY()   != output.getMinY()  ||
+                       input.getWidth()  != output.getWidth() ||
+                       input.getHeight() != output.getHeight())
+            {
+                throw new 
IllegalArgumentException(Resources.format(Resources.Keys.MismatchedImageLocation));
+            } else if (input.getMinTileX()   != output.getMinTileX()  ||
+                       input.getMinTileY()   != output.getMinTileY()  ||
+                       input.getTileWidth()  != output.getTileWidth() ||
+                       input.getTileHeight() != output.getTileHeight())
+            {
+                throw new 
IllegalArgumentException(Resources.format(Resources.Keys.MismatchedTileGrid));
+            }
+        }
     }
 
     /**
      * Creates an iterator for all pixels in the given image.
+     * This is a convenience method for {@code new 
Builder().createWritable(data)}.
      *
      * @param  data  the image which contains the sample values on which to 
iterate.
      * @return a new iterator traversing all pixels in the given image, in 
arbitrary order.
      */
     public static WritablePixelIterator create(WritableRenderedImage data) {
-        return create(data, null, null, null, null);
-    }
-
-    /**
-     * Creates an iterator for the given region in the given rasters.
-     * The {@code order} argument can have the following values:
-     *
-     * <table class="sis">
-     *   <caption>Supported iteration order</caption>
-     *   <tr><th>Value</th>                         <th>Iteration 
order</th></tr>
-     *   <tr><td>{@code null}</td>                  <td>Most efficient 
iteration order.</td></tr>
-     *   <tr><td>{@link SequenceType#LINEAR}</td>   <td>From left to right, 
then from top to bottom.</td></tr>
-     * </table>
-     *
-     * Any other {@code order} value will cause an {@link 
IllegalArgumentException} to be thrown.
-     * More iteration orders may be supported in future Apache SIS versions.
-     *
-     * @param  input    the raster which contains the sample values to read.
-     * @param  output   the raster where to write the sample values. Can be 
the same than {@code input}.
-     * @param  subArea  the raster region where to perform the iteration, or 
{@code null}
-     *                  for iterating over all the raster domain.
-     * @param  window   size of the window to use in {@link 
#createWindow(TransferType)} method, or {@code null} if none.
-     * @param  order    the desired iteration order, or {@code null} for a 
default order.
-     * @return a new writable iterator.
-     */
-    public static WritablePixelIterator create(Raster input, WritableRaster 
output,
-            Rectangle subArea, Dimension window, SequenceType order)
-    {
-        ArgumentChecks.ensureNonNull("input",  input);
-        ArgumentChecks.ensureNonNull("output", output);
-        if (!input.getSampleModel().equals(output.getSampleModel())) {
-            throw new 
IllegalArgumentException(Resources.format(Resources.Keys.MismatchedSampleModel));
-        } else if (!input.getBounds().equals(output.getBounds())) {
-            throw new 
IllegalArgumentException(Resources.format(Resources.Keys.MismatchedImageLocation));
-        }
-
-        // TODO: check here for cases that we can optimize (after we ported 
corresponding implementations).
-
-        if (order == null || order.equals(SequenceType.LINEAR)) {
-            return new DefaultIterator(input, output, subArea, window);
-        } else {
-            throw new 
IllegalArgumentException(Errors.format(Errors.Keys.UnsupportedType_1, order));
-        }
-    }
-
-    /**
-     * Creates an iterator for the given region in the given image.
-     * The {@code order} argument can have the following values:
-     *
-     * <table class="sis">
-     *   <caption>Supported iteration order</caption>
-     *   <tr><th>Value</th>                         <th>Iteration 
order</th></tr>
-     *   <tr><td>{@code null}</td>                  <td>Most efficient 
iteration order.</td></tr>
-     * </table>
-     *
-     * Any other {@code order} value will cause an {@link 
IllegalArgumentException} to be thrown.
-     * More iteration orders may be supported in future Apache SIS versions.
-     *
-     * @param  input    the image which contains the sample values to read.
-     * @param  output   the image where to write the sample values. Can be the 
same than {@code input}.
-     * @param  subArea  the image region where to perform the iteration, or 
{@code null}
-     *                  for iterating over all the image domain.
-     * @param  window   size of the window to use in {@link 
#createWindow(TransferType)} method, or {@code null} if none.
-     * @param  order    the desired iteration order, or {@code null} for a 
default order.
-     * @return a new iterator.
-     */
-    public static WritablePixelIterator create(RenderedImage input, 
WritableRenderedImage output,
-            Rectangle subArea, Dimension window, SequenceType order)
-    {
-        ArgumentChecks.ensureNonNull("input",  input);
-        ArgumentChecks.ensureNonNull("output", output);
-        if (!input.getSampleModel().equals(output.getSampleModel())) {
-            throw new 
IllegalArgumentException(Resources.format(Resources.Keys.MismatchedSampleModel));
-        } else if (input.getMinX()   != output.getMinX()  ||
-                   input.getMinY()   != output.getMinY()  ||
-                   input.getWidth()  != output.getWidth() ||
-                   input.getHeight() != output.getHeight())
-        {
-            throw new 
IllegalArgumentException(Resources.format(Resources.Keys.MismatchedImageLocation));
-        } else if (input.getMinTileX()   != output.getMinTileX()  ||
-                   input.getMinTileY()   != output.getMinTileY()  ||
-                   input.getTileWidth()  != output.getTileWidth() ||
-                   input.getTileHeight() != output.getTileHeight())
-        {
-            throw new 
IllegalArgumentException(Resources.format(Resources.Keys.MismatchedTileGrid));
-        }
-
-        // TODO: check here for cases that we can optimize (after we ported 
corresponding implementations).
-
-        if (order == null) {
-            return new DefaultIterator(input, output, subArea, window);
-        } else {
-            throw new 
IllegalArgumentException(Errors.format(Errors.Keys.UnsupportedType_1, order));
-        }
+        return new Builder().createWritable(data);
     }
 
     /**

Modified: 
sis/branches/JDK7/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/AbstractResource.java
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK7/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/AbstractResource.java?rev=1804427&r1=1804426&r2=1804427&view=diff
==============================================================================
--- 
sis/branches/JDK7/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/AbstractResource.java
 [UTF-8] (original)
+++ 
sis/branches/JDK7/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/AbstractResource.java
 [UTF-8] Tue Aug  8 14:19:44 2017
@@ -19,6 +19,7 @@ package org.apache.sis.internal.storage;
 import org.opengis.geometry.Envelope;
 import org.opengis.metadata.Metadata;
 import org.opengis.metadata.extent.Extent;
+import org.opengis.metadata.extent.GeographicExtent;
 import org.opengis.metadata.extent.GeographicBoundingBox;
 import org.opengis.metadata.identification.Identification;
 import org.apache.sis.storage.Resource;
@@ -26,7 +27,6 @@ import org.apache.sis.storage.DataStore;
 import org.apache.sis.storage.DataStoreException;
 import org.apache.sis.geometry.GeneralEnvelope;
 import org.apache.sis.util.logging.WarningListeners;
-import org.opengis.metadata.extent.GeographicExtent;
 
 
 /**

Modified: 
sis/branches/JDK7/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/csv/Store.java
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK7/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/csv/Store.java?rev=1804427&r1=1804426&r2=1804427&view=diff
==============================================================================
--- 
sis/branches/JDK7/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/csv/Store.java
 [UTF-8] (original)
+++ 
sis/branches/JDK7/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/csv/Store.java
 [UTF-8] Tue Aug  8 14:19:44 2017
@@ -50,6 +50,7 @@ import org.apache.sis.internal.storage.R
 import org.apache.sis.geometry.GeneralEnvelope;
 import org.apache.sis.metadata.iso.DefaultMetadata;
 import org.apache.sis.metadata.sql.MetadataStoreException;
+import org.apache.sis.storage.Resource;
 import org.apache.sis.storage.DataStore;
 import org.apache.sis.storage.DataStoreException;
 import org.apache.sis.storage.DataStoreContentException;
@@ -66,7 +67,6 @@ import org.apache.sis.internal.jdk8.Inst
 import org.apache.sis.internal.jdk8.DateTimeException;
 import org.apache.sis.internal.jdk8.Stream;
 import org.apache.sis.internal.jdk8.StreamSupport;
-import org.apache.sis.storage.Resource;
 import org.opengis.feature.Feature;
 import org.opengis.feature.FeatureType;
 import org.opengis.feature.PropertyType;

Modified: 
sis/branches/JDK7/storage/sis-storage/src/main/java/org/apache/sis/storage/FeatureSet.java
URL: 
http://svn.apache.org/viewvc/sis/branches/JDK7/storage/sis-storage/src/main/java/org/apache/sis/storage/FeatureSet.java?rev=1804427&r1=1804426&r2=1804427&view=diff
==============================================================================
--- 
sis/branches/JDK7/storage/sis-storage/src/main/java/org/apache/sis/storage/FeatureSet.java
 [UTF-8] (original)
+++ 
sis/branches/JDK7/storage/sis-storage/src/main/java/org/apache/sis/storage/FeatureSet.java
 [UTF-8] Tue Aug  8 14:19:44 2017
@@ -16,11 +16,10 @@
  */
 package org.apache.sis.storage;
 
-import org.opengis.feature.Feature;
-import org.opengis.feature.FeatureType;
-
 // Branch-dependent imports
 import org.apache.sis.internal.jdk8.Stream;
+import org.opengis.feature.Feature;
+import org.opengis.feature.FeatureType;
 
 
 /**


Reply via email to