You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sis.apache.org by de...@apache.org on 2013/05/20 11:42:35 UTC

svn commit: r1484407 - in /sis/branches/JDK7/storage/sis-netcdf/src: main/java/org/apache/sis/internal/netcdf/ main/java/org/apache/sis/internal/netcdf/impl/ test/java/org/apache/sis/internal/netcdf/

Author: desruisseaux
Date: Mon May 20 09:42:34 2013
New Revision: 1484407

URL: http://svn.apache.org/r1484407
Log:
Test Variable.getGridDimensionNames() and getGridEnvelope().

Modified:
    sis/branches/JDK7/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/Variable.java
    sis/branches/JDK7/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/impl/ChannelDecoder.java
    sis/branches/JDK7/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/impl/Dimension.java
    sis/branches/JDK7/storage/sis-netcdf/src/test/java/org/apache/sis/internal/netcdf/VariableTest.java

Modified: sis/branches/JDK7/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/Variable.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/Variable.java?rev=1484407&r1=1484406&r2=1484407&view=diff
==============================================================================
--- sis/branches/JDK7/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/Variable.java [UTF-8] (original)
+++ sis/branches/JDK7/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/Variable.java [UTF-8] Mon May 20 09:42:34 2013
@@ -87,7 +87,7 @@ public abstract class Variable {
         buffer.append(Classes.getShortName(getDataType()));
         final int[] shape = getGridEnvelope();
         for (int i=shape.length; --i>=0;) {
-            buffer.append('[').append(shape[i]).append(']');
+            buffer.append('[').append(shape[i] & 0xFFFFFFFFL).append(']');
         }
         return buffer.toString();
     }
@@ -144,7 +144,7 @@ public abstract class Variable {
     public final boolean isCoverage(final int minSpan) {
         int numVectors = 0; // Number of dimension having more than 1 value.
         for (final int length : getGridEnvelope()) {
-            if (length >= minSpan) {
+            if ((length & 0xFFFFFFFFL) >= minSpan) {
                 numVectors++;
             }
         }
@@ -203,7 +203,7 @@ public abstract class Variable {
                 .append(" : ").append(Classes.getShortName(getDataType()));
         final int[] shape = getGridEnvelope();
         for (int i=shape.length; --i>=0;) {
-            buffer.append('[').append(shape[i]).append(']');
+            buffer.append('[').append(shape[i] & 0xFFFFFFFFL).append(']');
         }
         return buffer.toString();
     }

Modified: sis/branches/JDK7/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/impl/ChannelDecoder.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/impl/ChannelDecoder.java?rev=1484407&r1=1484406&r2=1484407&view=diff
==============================================================================
--- sis/branches/JDK7/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/impl/ChannelDecoder.java [UTF-8] (original)
+++ sis/branches/JDK7/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/impl/ChannelDecoder.java [UTF-8] Mon May 20 09:42:34 2013
@@ -136,7 +136,7 @@ public final class ChannelDecoder extend
     private final boolean is64bits;
 
     /**
-     * Number of records as an unsigned integer, or {@value #STREAMING} if unlimited.
+     * Number of records as an unsigned integer, or {@value #STREAMING} if undetermined.
      */
     private final int numrecs;
 
@@ -425,7 +425,15 @@ public final class ChannelDecoder extend
     private Dimension[] readDimensions(final int nelems) throws IOException, DataStoreException {
         final Dimension[] dimensions = new Dimension[nelems];
         for (int i=0; i<nelems; i++) {
-            dimensions[i] = new Dimension(readName(), readInt());
+            final String name = readName();
+            int length = readInt();
+            if (length == 0) {
+                length = numrecs;
+                if (length == STREAMING) {
+                    throw new DataStoreException(Errors.format(Errors.Keys.MissingValueForProperty_1, "numrecs"));
+                }
+            }
+            dimensions[i] = new Dimension(name, length);
         }
         return dimensions;
     }

Modified: sis/branches/JDK7/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/impl/Dimension.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/impl/Dimension.java?rev=1484407&r1=1484406&r2=1484407&view=diff
==============================================================================
--- sis/branches/JDK7/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/impl/Dimension.java [UTF-8] (original)
+++ sis/branches/JDK7/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/impl/Dimension.java [UTF-8] Mon May 20 09:42:34 2013
@@ -38,7 +38,7 @@ final class Dimension {
     final String name;
 
     /**
-     * The number of grid cell value along that dimension.
+     * The number of grid cell value along that dimension, as an unsigned number.
      */
     final int length;
 
@@ -56,6 +56,6 @@ final class Dimension {
     @Debug
     @Override
     public String toString() {
-        return name + '[' + length + ']';
+        return name + '[' + (length & 0xFFFFFFFFL) + ']';
     }
 }

Modified: sis/branches/JDK7/storage/sis-netcdf/src/test/java/org/apache/sis/internal/netcdf/VariableTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/storage/sis-netcdf/src/test/java/org/apache/sis/internal/netcdf/VariableTest.java?rev=1484407&r1=1484406&r2=1484407&view=diff
==============================================================================
--- sis/branches/JDK7/storage/sis-netcdf/src/test/java/org/apache/sis/internal/netcdf/VariableTest.java (original)
+++ sis/branches/JDK7/storage/sis-netcdf/src/test/java/org/apache/sis/internal/netcdf/VariableTest.java Mon May 20 09:42:34 2013
@@ -50,8 +50,10 @@ public strictfp class VariableTest exten
      *   <li>{@link Variable#getName()}</li>
      *   <li>{@link Variable#getDescription()}</li>
      *   <li>{@link Variable#getDataType()}</li>
-     *   <li>{@link Variable#getGridEnvelope()}</li>
+     *   <li>{@link Variable#getGridEnvelope()} length</li>
+     *   <li>{@link Variable#isCoordinateSystemAxis()}</li>
      *   <li>{@link Variable#isCoverage(int)}</li>
+     *   <li>{@link Variable#isUnsigned()}</li>
      * </ul>
      *
      * @throws IOException If an error occurred while reading the NetCDF file.
@@ -106,9 +108,32 @@ public strictfp class VariableTest exten
             assertEquals("isCoordinateSystemAxis()", expected[propertyIndex++], variable.isCoordinateSystemAxis());
             assertEquals("isCoverage(2)",            expected[propertyIndex++], variable.isCoverage(2));
             assertEquals(0, propertyIndex % NUM_BASIC_PROPERTY_COLUMNS); // Sanity check for VariableTest itself.
+
+            // All variable in our current test dataset are unsigned.
+            assertFalse("isUnsigned()", variable.isUnsigned());
         }
         assertEquals("Expected more variables.",
                 expected.length / NUM_BASIC_PROPERTY_COLUMNS,
                 propertyIndex   / NUM_BASIC_PROPERTY_COLUMNS);
     }
+
+    /**
+     * Tests {@link Variable#getGridDimensionNames()} and {@link Variable#getGridEnvelope()}.
+     * Current implementation tests on the {@code "SST"} variable.
+     *
+     * @throws IOException If an error occurred while reading the NetCDF file.
+     */
+    @Test
+    public void testGridDimensions() throws IOException {
+        final Variable variable = selectDataset(NCEP).getVariables()[21];
+        assertEquals("SST", variable.getName());
+
+        assertArrayEquals("getGridDimensionNames()", new String[] {
+            "record", "lat", "lon"
+        }, variable.getGridDimensionNames());
+
+        assertArrayEquals("getGridEnvelope()", new int[] {
+            1, 73, 73
+        }, variable.getGridEnvelope());
+    }
 }