sis-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From desruisse...@apache.org
Subject [sis] branch geoapi-4.0 updated: Moved 'GridResource' and 'Image' classes to org.apache.sis.internal.netcdf package. This allow us to restrict the scope of some Variable methods.
Date Mon, 18 Mar 2019 11:59:16 GMT
This is an automated email from the ASF dual-hosted git repository.

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


The following commit(s) were added to refs/heads/geoapi-4.0 by this push:
     new c9c9d89  Moved 'GridResource' and 'Image' classes to org.apache.sis.internal.netcdf
package. This allow us to restrict the scope of some Variable methods.
c9c9d89 is described below

commit c9c9d89bc859939fa3573f4f9798fd636910aefb
Author: Martin Desruisseaux <martin.desruisseaux@geomatys.com>
AuthorDate: Mon Mar 18 12:28:28 2019 +0100

    Moved 'GridResource' and 'Image' classes to org.apache.sis.internal.netcdf package.
    This allow us to restrict the scope of some Variable methods.
---
 .../Image.java => internal/netcdf/Raster.java}     |  9 +++---
 .../netcdf/RasterResource.java}                    | 36 ++++++++++++----------
 .../org/apache/sis/internal/netcdf/Variable.java   | 18 +++++------
 .../sis/internal/netcdf/ucar/VariableWrapper.java  |  2 +-
 .../org/apache/sis/storage/netcdf/NetcdfStore.java |  3 +-
 5 files changed, 35 insertions(+), 33 deletions(-)

diff --git a/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/Image.java b/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/Raster.java
similarity index 88%
rename from storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/Image.java
rename to storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/Raster.java
index 4190b49..a916d5b 100644
--- a/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/Image.java
+++ b/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/Raster.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.storage.netcdf;
+package org.apache.sis.internal.netcdf;
 
 import java.util.List;
 import java.awt.image.DataBuffer;
@@ -26,18 +26,17 @@ import org.apache.sis.coverage.grid.GridCoverage;
 import org.apache.sis.coverage.grid.GridGeometry;
 import org.apache.sis.coverage.grid.GridExtent;
 import org.apache.sis.coverage.grid.ImageRenderer;
-import org.apache.sis.internal.netcdf.Resources;
 
 
 /**
- * Data loaded from a {@link GridResource}.
+ * Data loaded from a {@link RasterResource}.
  *
  * @author  Martin Desruisseaux (IRD, Geomatys)
  * @version 1.0
  * @since   1.0
  * @module
  */
-final class Image extends GridCoverage {
+final class Raster extends GridCoverage {
     /**
      * The sample values.
      */
@@ -51,7 +50,7 @@ final class Image extends GridCoverage {
     /**
      * Creates a new raster from the given resource.
      */
-    Image(final GridGeometry domain, final List<SampleDimension> range, final DataBuffer
data, final String label) {
+    Raster(final GridGeometry domain, final List<SampleDimension> range, final DataBuffer
data, final String label) {
         super(domain, range);
         this.data  = data;
         this.label = label;
diff --git a/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/GridResource.java
b/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/RasterResource.java
similarity index 94%
rename from storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/GridResource.java
rename to storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/RasterResource.java
index 9868ecc..fbbd463 100644
--- a/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/GridResource.java
+++ b/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/RasterResource.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.storage.netcdf;
+package org.apache.sis.internal.netcdf;
 
 import java.util.Map;
 import java.util.List;
@@ -26,19 +26,13 @@ import java.awt.image.DataBuffer;
 import org.opengis.util.GenericName;
 import org.opengis.referencing.operation.MathTransform1D;
 import org.opengis.referencing.operation.TransformException;
-import org.apache.sis.coverage.grid.GridGeometry;
-import org.apache.sis.internal.netcdf.Decoder;
-import org.apache.sis.internal.netcdf.DataType;
-import org.apache.sis.internal.netcdf.Variable;
-import org.apache.sis.internal.netcdf.Resources;
-import org.apache.sis.internal.netcdf.VariableRole;
 import org.apache.sis.internal.storage.AbstractGridResource;
 import org.apache.sis.internal.storage.ResourceOnFileSystem;
+import org.apache.sis.internal.raster.RasterFactory;
 import org.apache.sis.coverage.SampleDimension;
 import org.apache.sis.coverage.grid.GridCoverage;
+import org.apache.sis.coverage.grid.GridGeometry;
 import org.apache.sis.coverage.grid.GridDerivation;
-import org.apache.sis.internal.netcdf.Convention;
-import org.apache.sis.internal.raster.RasterFactory;
 import org.apache.sis.storage.DataStoreException;
 import org.apache.sis.storage.DataStoreContentException;
 import org.apache.sis.storage.DataStoreReferencingException;
@@ -64,7 +58,7 @@ import org.apache.sis.internal.util.UnmodifiableArrayList;
  * @since   1.0
  * @module
  */
-final class GridResource extends AbstractGridResource implements ResourceOnFileSystem {
+public final class RasterResource extends AbstractGridResource implements ResourceOnFileSystem
{
     /**
      * Words used in standard (preferred) or long (if no standard) variable names which suggest
      * that the variable is a component of a vector. Those words are used in heuristic rules
@@ -139,7 +133,7 @@ final class GridResource extends AbstractGridResource implements ResourceOnFileS
      * @param  grid     the grid geometry (size, CRS…) of the {@linkplain #data} cube.
      * @param  bands    the variables providing actual data. Shall contain at least one variable.
      */
-    private GridResource(final Decoder decoder, final String name, final GridGeometry grid,
final List<Variable> bands)
+    private RasterResource(final Decoder decoder, final String name, final GridGeometry grid,
final List<Variable> bands)
             throws IOException, DataStoreException
     {
         super(decoder.listeners);
@@ -152,11 +146,14 @@ final class GridResource extends AbstractGridResource implements ResourceOnFileS
     }
 
     /**
-     * Creates all grid resources from the given decoder.
+     * Creates all grid coverage resources from the given decoder.
      *
      * @param  decoder  the implementation used for decoding the netCDF file.
+     * @return all grid coverage resources.
+     * @throws IOException if an I/O operation was required and failed.
+     * @throws DataStoreException if a logical error occurred.
      */
-    static List<Resource> create(final Decoder decoder) throws IOException, DataStoreException
{
+    public static List<Resource> create(final Decoder decoder) throws IOException,
DataStoreException {
         final Variable[]     variables = decoder.getVariables().clone();        // Needs
a clone because may be modified.
         final List<Variable> siblings  = new ArrayList<>(4);
         final List<Resource> resources = new ArrayList<>();
@@ -229,7 +226,7 @@ final class GridResource extends AbstractGridResource implements ResourceOnFileS
                     }
                 }
             }
-            resources.add(new GridResource(decoder, name.trim(), grid, siblings));
+            resources.add(new RasterResource(decoder, name.trim(), grid, siblings));
             siblings.clear();
         }
         return resources;
@@ -245,6 +242,8 @@ final class GridResource extends AbstractGridResource implements ResourceOnFileS
 
     /**
      * Returns an object containing the grid size, the CRS and the conversion from grid indices
to CRS coordinates.
+     *
+     * @return extent of grid coordinates together with their mapping to "real world" coordinates.
      */
     @Override
     public GridGeometry getGridGeometry() {
@@ -253,6 +252,9 @@ final class GridResource extends AbstractGridResource implements ResourceOnFileS
 
     /**
      * Returns the ranges of sample values together with the conversion from samples to real
values.
+     *
+     * @return ranges of sample values together with their mapping to "real values".
+     * @throws DataStoreException if an error occurred while reading definitions from the
underlying data store.
      */
     @Override
     @SuppressWarnings("ReturnOfCollectionOrArrayField")
@@ -323,7 +325,7 @@ final class GridResource extends AbstractGridResource implements ResourceOnFileS
              * unsigned integer with a signed one).
              */
             if (range.isEmpty()) {
-                band.warning(GridResource.class, "getSampleDimensions", Resources.Keys.IllegalValueRange_4,
+                band.warning(RasterResource.class, "getSampleDimensions", Resources.Keys.IllegalValueRange_4,
                         band.getFilename(), band.getName(), range.getMinValue(), range.getMaxValue());
             } else {
                 String name = band.getDescription();
@@ -446,7 +448,7 @@ final class GridResource extends AbstractGridResource implements ResourceOnFileS
         if (imageBuffer == null) {
             throw new DataStoreContentException(Errors.format(Errors.Keys.UnsupportedType_1,
dataType.name()));
         }
-        return new Image(domain, UnmodifiableArrayList.wrap(selected), imageBuffer, first.getName());
+        return new Raster(domain, UnmodifiableArrayList.wrap(selected), imageBuffer, first.getName());
     }
 
     /**
@@ -464,7 +466,7 @@ final class GridResource extends AbstractGridResource implements ResourceOnFileS
      * Gets the paths to files used by this resource, or an empty array if unknown.
      */
     @Override
-    public Path[] getComponentFiles() throws DataStoreException {
+    public Path[] getComponentFiles() {
         return (location != null) ? new Path[] {location} : new Path[0];
     }
 }
diff --git a/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/Variable.java
b/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/Variable.java
index fb8f387..2d328cc 100644
--- a/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/Variable.java
+++ b/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/Variable.java
@@ -257,13 +257,13 @@ public abstract class Variable extends NamedElement {
      * {@link #getUnit()}, except for the fill/missing values. If {@code true}, then replacing
fill/missing values by
      * {@code NaN} is the only action needed for having converted values.
      *
-     * <p>This method is for detecting when {@link org.apache.sis.storage.netcdf.GridResource#getSampleDimensions()}
-     * should return sample dimensions for already converted values. But to be consistent
with {@code SampleDimension}
-     * contract, it requires fill/missing values to be replaced by NaN. This is done by {@link
#replaceNaN(Object)}.</p>
+     * <p>This method is for detecting when {@link RasterResource#getSampleDimensions()}
should return sample dimensions
+     * for already converted values. But to be consistent with {@code SampleDimension} contract,
it requires fill/missing
+     * values to be replaced by NaN. This is done by {@link #replaceNaN(Object)}.</p>
      *
      * @return whether this variable contains values in unit of measurement, ignoring fill
and missing values.
      */
-    public final boolean hasRealValues() {
+    final boolean hasRealValues() {
         final int n = getDataType().number;
         if (n == Numbers.FLOAT | n == Numbers.DOUBLE) {
             final Convention convention = decoder.convention();
@@ -846,7 +846,7 @@ public abstract class Variable extends NamedElement {
      *
      * @see Convention#validRange(Variable)
      */
-    public NumberRange<?> getRangeFallback() {
+    protected NumberRange<?> getRangeFallback() {
         final DataType dataType = getDataType();
         if (dataType.isInteger) {
             final int size = dataType.size() * Byte.SIZE;
@@ -900,7 +900,7 @@ public abstract class Variable extends NamedElement {
      * @see Convention#nodataValues(Variable)
      */
     @SuppressWarnings("ReturnOfCollectionOrArrayField")
-    public final Map<Number,Object> getNodataValues() {
+    final Map<Number,Object> getNodataValues() {
         if (nodataValues == null) {
             nodataValues = CollectionsExt.unmodifiableOrCopy(decoder.convention().nodataValues(this));
         }
@@ -987,7 +987,7 @@ public abstract class Variable extends NamedElement {
      * Maybe replaces fill values and missing values by {@code NaN} values in the given array.
      * This method does nothing if {@link #hasRealValues()} returns {@code false}.
      * The NaN values used by this method must be consistent with the NaN values declared
in
-     * the sample dimensions created by {@link org.apache.sis.storage.netcdf.GridResource}.
+     * the sample dimensions created by {@link RasterResource}.
      *
      * @param  array  the array in which to replace fill and missing values.
      */
@@ -995,7 +995,7 @@ public abstract class Variable extends NamedElement {
         if (hasRealValues()) {
             int ordinal = 0;
             for (final Number value : getNodataValues().keySet()) {
-                final float pad = MathFunctions.toNanFloat(ordinal++);      // Must be consistent
with GridResource.createSampleDimension(…).
+                final float pad = MathFunctions.toNanFloat(ordinal++);      // Must be consistent
with RasterResource.createSampleDimension(…).
                 if (array instanceof float[]) {
                     ArraysExt.replace((float[]) array, value.floatValue(), pad);
                 } else if (array instanceof double[]) {
@@ -1100,7 +1100,7 @@ public abstract class Variable extends NamedElement {
      * @param  key        one or {@link Resources.Keys} constants.
      * @param  arguments  values to be formatted in the {@link java.text.MessageFormat} pattern.
      */
-    public final void warning(final Class<?> caller, final String method, final short
key, final Object... arguments) {
+    protected final void warning(final Class<?> caller, final String method, final
short key, final Object... arguments) {
         warning(decoder.listeners, caller, method, null, null, key, arguments);
     }
 
diff --git a/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/ucar/VariableWrapper.java
b/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/ucar/VariableWrapper.java
index 7ef2cd1..0505744 100644
--- a/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/ucar/VariableWrapper.java
+++ b/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/ucar/VariableWrapper.java
@@ -369,7 +369,7 @@ final class VariableWrapper extends Variable {
      * if Apache SIS can not determine that range, that method is invoked.
      */
     @Override
-    public NumberRange<?> getRangeFallback() {
+    protected NumberRange<?> getRangeFallback() {
         if (variable instanceof EnhanceScaleMissing) {
             final EnhanceScaleMissing ev = (EnhanceScaleMissing) variable;
             if (ev.hasInvalidData()) {
diff --git a/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/NetcdfStore.java
b/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/NetcdfStore.java
index a893bb4..f67c977 100644
--- a/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/NetcdfStore.java
+++ b/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/NetcdfStore.java
@@ -32,6 +32,7 @@ import org.apache.sis.storage.UnsupportedStorageException;
 import org.apache.sis.storage.StorageConnector;
 import org.apache.sis.storage.Aggregate;
 import org.apache.sis.internal.netcdf.Decoder;
+import org.apache.sis.internal.netcdf.RasterResource;
 import org.apache.sis.internal.storage.URIDataStore;
 import org.apache.sis.internal.util.UnmodifiableArrayList;
 import org.apache.sis.internal.util.Strings;
@@ -200,7 +201,7 @@ public class NetcdfStore extends DataStore implements Aggregate {
     public synchronized Collection<Resource> components() throws DataStoreException
{
         if (components == null) try {
             Resource[] resources = decoder.getDiscreteSampling();
-            final List<Resource> grids = GridResource.create(decoder);
+            final List<Resource> grids = RasterResource.create(decoder);
             if (!grids.isEmpty()) {
                 grids.addAll(UnmodifiableArrayList.wrap(resources));
                 resources = grids.toArray(new Resource[grids.size()]);


Mime
View raw message