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());
+ }
}