From commits-return-3450-apmail-sis-commits-archive=sis.apache.org@sis.apache.org Wed Jan 15 22:02:55 2014 Return-Path: X-Original-To: apmail-sis-commits-archive@www.apache.org Delivered-To: apmail-sis-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 1ACEC1056E for ; Wed, 15 Jan 2014 22:02:55 +0000 (UTC) Received: (qmail 58798 invoked by uid 500); 15 Jan 2014 22:02:29 -0000 Delivered-To: apmail-sis-commits-archive@sis.apache.org Received: (qmail 58652 invoked by uid 500); 15 Jan 2014 22:02:24 -0000 Mailing-List: contact commits-help@sis.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: sis-dev@sis.apache.org Delivered-To: mailing list commits@sis.apache.org Received: (qmail 58502 invoked by uid 99); 15 Jan 2014 22:02:20 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 15 Jan 2014 22:02:20 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 15 Jan 2014 22:02:13 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 0CA4723889FD; Wed, 15 Jan 2014 22:01:51 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: svn commit: r1558583 [3/3] - in /sis/branches/JDK6: ./ core/sis-referencing/src/main/java/org/apache/sis/geometry/ core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/ core/sis-referencing/src/main/java/org/apache/sis/referencing/ co... Date: Wed, 15 Jan 2014 22:01:48 -0000 To: commits@sis.apache.org From: desruisseaux@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20140115220151.0CA4723889FD@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Modified: sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/CoordinateSystemsTest.java URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/CoordinateSystemsTest.java?rev=1558583&r1=1558582&r2=1558583&view=diff ============================================================================== --- sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/CoordinateSystemsTest.java [UTF-8] (original) +++ sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/CoordinateSystemsTest.java [UTF-8] Wed Jan 15 22:01:46 2014 @@ -21,13 +21,14 @@ import org.opengis.referencing.operation import org.opengis.referencing.cs.AxisDirection; import org.opengis.referencing.cs.CoordinateSystem; import org.apache.sis.referencing.operation.matrix.Matrices; -import org.apache.sis.internal.referencing.AxisDirections; +import org.apache.sis.measure.Angle; +import org.apache.sis.measure.ElevationAngle; import org.apache.sis.test.DependsOnMethod; import org.apache.sis.test.DependsOn; import org.apache.sis.test.TestCase; import org.junit.Test; -import static java.lang.StrictMath.*; +import static java.lang.Double.NaN; import static java.util.Collections.singletonMap; import static org.opengis.referencing.IdentifiedObject.NAME_KEY; import static org.apache.sis.referencing.cs.CoordinateSystems.*; @@ -42,12 +43,15 @@ import static org.apache.sis.test.Assert * @version 0.4 * @module */ -@DependsOn(DirectionAlongMeridianTest.class) +@DependsOn({ + org.apache.sis.internal.referencing.AxisDirectionsTest.class, + DirectionAlongMeridianTest.class +}) public final strictfp class CoordinateSystemsTest extends TestCase { /** * Tolerance threshold for strict floating point comparisons. */ - static final double STRICT = 0; + private static final double STRICT = 0; /** * Tests {@link CoordinateSystems#parseAxisDirection(String)}. @@ -72,63 +76,33 @@ public final strictfp class CoordinateSy } /** - * Tests the {@link CoordinateSystems#getCompassAngle(AxisDirection, AxisDirection)} method. - */ - @Test - public void testGetCompassAngle() { - final AxisDirection[] compass = new AxisDirection[] { - AxisDirection.NORTH, - AxisDirection.NORTH_NORTH_EAST, - AxisDirection.NORTH_EAST, - AxisDirection.EAST_NORTH_EAST, - AxisDirection.EAST, - AxisDirection.EAST_SOUTH_EAST, - AxisDirection.SOUTH_EAST, - AxisDirection.SOUTH_SOUTH_EAST, - AxisDirection.SOUTH, - AxisDirection.SOUTH_SOUTH_WEST, - AxisDirection.SOUTH_WEST, - AxisDirection.WEST_SOUTH_WEST, - AxisDirection.WEST, - AxisDirection.WEST_NORTH_WEST, - AxisDirection.NORTH_WEST, - AxisDirection.NORTH_NORTH_WEST - }; - assertEquals(compass.length, COMPASS_DIRECTION_COUNT); - final int base = AxisDirection.NORTH.ordinal(); - final int h = compass.length / 2; - for (int i=0; i= h) io -= COMPASS_DIRECTION_COUNT; - if (i > h) in -= COMPASS_DIRECTION_COUNT; - assertEquals(message, base + i, direction.ordinal()); - assertEquals(message, base + io, opposite.ordinal()); - assertEquals(message, 0, getCompassAngle(direction, direction)); - assertEquals(message, h, abs(getCompassAngle(direction, opposite))); - assertEquals(message, in, getCompassAngle(direction, AxisDirection.NORTH)); - } - } - - /** * Tests {@link CoordinateSystems#angle(AxisDirection, AxisDirection)}. */ @Test - @DependsOnMethod("testGetCompassAngle") public void testAngle() { - assertEquals( 0, angle(AxisDirection.EAST, AxisDirection.EAST), STRICT); - assertEquals( +90, angle(AxisDirection.EAST, AxisDirection.NORTH), STRICT); - assertEquals( -90, angle(AxisDirection.NORTH, AxisDirection.EAST), STRICT); - assertEquals( +90, angle(AxisDirection.WEST, AxisDirection.SOUTH), STRICT); - assertEquals( -90, angle(AxisDirection.SOUTH, AxisDirection.WEST), STRICT); - assertEquals( -180, angle(AxisDirection.NORTH, AxisDirection.SOUTH), STRICT); - assertEquals( 180, angle(AxisDirection.SOUTH, AxisDirection.NORTH), STRICT); - assertEquals( 45, angle(AxisDirection.NORTH_EAST, AxisDirection.NORTH), STRICT); - assertEquals( 22.5, angle(AxisDirection.NORTH_NORTH_EAST, AxisDirection.NORTH), STRICT); - assertEquals(-22.5, angle(AxisDirection.NORTH_NORTH_WEST, AxisDirection.NORTH), STRICT); - assertEquals( 45, angle(AxisDirection.SOUTH, AxisDirection.SOUTH_EAST), STRICT); + assertAngleEquals(false, 0, AxisDirection.EAST, AxisDirection.EAST); + assertAngleEquals(false, 90, AxisDirection.EAST, AxisDirection.NORTH); + assertAngleEquals(false, 90, AxisDirection.WEST, AxisDirection.SOUTH); + assertAngleEquals(false, 180, AxisDirection.SOUTH, AxisDirection.NORTH); + assertAngleEquals(false, 180, AxisDirection.WEST, AxisDirection.EAST); + assertAngleEquals(false, 45, AxisDirection.NORTH_EAST, AxisDirection.NORTH); + assertAngleEquals(false, 22.5, AxisDirection.NORTH_NORTH_EAST, AxisDirection.NORTH); + assertAngleEquals(false, 45, AxisDirection.SOUTH, AxisDirection.SOUTH_EAST); + assertAngleEquals(false, NaN, AxisDirection.NORTH, AxisDirection.FUTURE); + assertAngleEquals(true, 90, AxisDirection.SOUTH, AxisDirection.UP); + assertAngleEquals(true, -90, AxisDirection.SOUTH, AxisDirection.DOWN); + assertAngleEquals(false, 0, AxisDirection.UP, AxisDirection.UP); + assertAngleEquals(false, 0, AxisDirection.DOWN, AxisDirection.DOWN); + assertAngleEquals(false, 180, AxisDirection.DOWN, AxisDirection.UP); + assertAngleEquals(false, NaN, AxisDirection.DOWN, AxisDirection.FUTURE); + assertAngleEquals(false, 180, AxisDirection.DISPLAY_DOWN, AxisDirection.DISPLAY_UP); + assertAngleEquals(false, -90, AxisDirection.DISPLAY_RIGHT, AxisDirection.DISPLAY_DOWN); + assertAngleEquals(false, NaN, AxisDirection.DISPLAY_UP, AxisDirection.DOWN); + assertAngleEquals(false, NaN, AxisDirection.PAST, AxisDirection.FUTURE); // Not spatial directions. + assertAngleEquals(false, 90, AxisDirection.GEOCENTRIC_X, AxisDirection.GEOCENTRIC_Y); + assertAngleEquals(false, 90, AxisDirection.GEOCENTRIC_Y, AxisDirection.GEOCENTRIC_Z); + assertAngleEquals(false, 0, AxisDirection.GEOCENTRIC_Y, AxisDirection.GEOCENTRIC_Y); + assertAngleEquals(false, NaN, AxisDirection.GEOCENTRIC_Z, AxisDirection.UP); } /** @@ -137,28 +111,50 @@ public final strictfp class CoordinateSy @Test @DependsOnMethod({"testParseAxisDirection", "testAngle"}) public void testAngleAlongMeridians() { - compareAngle( 90.0, "West", "South"); - compareAngle(-90.0, "South", "West"); - compareAngle( 45.0, "South", "South-East"); - compareAngle(-22.5, "North-North-West", "North"); - compareAngle(-22.5, "North_North_West", "North"); - compareAngle(-22.5, "North North West", "North"); - compareAngle( 90.0, "North along 90 deg East", "North along 0 deg"); - compareAngle( 90.0, "South along 180 deg", "South along 90 deg West"); - compareAngle( 90, "North along 90°E", "North along 0°"); - compareAngle( 135, "North along 90°E", "North along 45°W"); - compareAngle( -135, "North along 45°W", "North along 90°E"); + assertAngleEquals(false, 90.0, "West", "South"); + assertAngleEquals(false, -90.0, "South", "West"); + assertAngleEquals(false, 45.0, "South", "South-East"); + assertAngleEquals(true, 90.0, "West", "Up"); + assertAngleEquals(true, -90.0, "West", "Down"); + assertAngleEquals(false, -22.5, "North-North-West", "North"); + assertAngleEquals(false, -22.5, "North_North_West", "North"); + assertAngleEquals(false, -22.5, "North North West", "North"); + assertAngleEquals(false, 90.0, "North along 90 deg East", "North along 0 deg"); + assertAngleEquals(false, 90.0, "South along 180 deg", "South along 90 deg West"); + assertAngleEquals(false, 90.0, "North along 90°E", "North along 0°"); + assertAngleEquals(false, 135.0, "North along 90°E", "North along 45°W"); + assertAngleEquals(false, -135.0, "North along 45°W", "North along 90°E"); + assertAngleEquals(true, 90.0, "North along 45°W", "Up"); + assertAngleEquals(true, -90.0, "North along 45°W", "Down"); } /** - * Compare the angle between the specified directions. - */ - private static void compareAngle(final double expected, final String source, final String target) { + * Asserts that the angle between the parsed directions is equals to the given value. + * This method tests also the angle by interchanging the axis directions. + */ + private static void assertAngleEquals(final boolean isElevation, final double expected, + final String source, final String target) + { final AxisDirection dir1 = parseAxisDirection(source); final AxisDirection dir2 = parseAxisDirection(target); assertNotNull(source, dir1); assertNotNull(target, dir2); - assertEquals(expected, angle(dir1, dir2), STRICT); + assertAngleEquals(isElevation, expected, dir1, dir2); + } + + /** + * Asserts that the angle between the given directions is equals to the given value. + * This method tests also the angle by interchanging the given directions. + */ + private static void assertAngleEquals(final boolean isElevation, final double expected, + final AxisDirection source, final AxisDirection target) + { + final Angle forward = angle(source, target); + final Angle inverse = angle(target, source); + assertEquals(isElevation, forward instanceof ElevationAngle); + assertEquals(isElevation, inverse instanceof ElevationAngle); + assertEquals(+expected, (forward != null) ? forward.degrees() : Double.NaN, STRICT); + assertEquals(-expected, (inverse != null) ? inverse.degrees() : Double.NaN, STRICT); } /** Modified: sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/DefaultCartesianCSTest.java URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/DefaultCartesianCSTest.java?rev=1558583&r1=1558582&r2=1558583&view=diff ============================================================================== --- sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/DefaultCartesianCSTest.java [UTF-8] (original) +++ sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/DefaultCartesianCSTest.java [UTF-8] Wed Jan 15 22:01:46 2014 @@ -38,7 +38,7 @@ import static org.apache.sis.test.TestUt * @version 0.4 * @module */ -@DependsOn(DefaultCoordinateSystemAxisTest.class) +@DependsOn(AbstractCSTest.class) public final strictfp class DefaultCartesianCSTest extends XMLTestCase { /** * An XML file in this package containing a Cartesian coordinate system definition. Modified: sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/DefaultEllipsoidalCSTest.java URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/DefaultEllipsoidalCSTest.java?rev=1558583&r1=1558582&r2=1558583&view=diff ============================================================================== --- sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/DefaultEllipsoidalCSTest.java [UTF-8] (original) +++ sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/DefaultEllipsoidalCSTest.java [UTF-8] Wed Jan 15 22:01:46 2014 @@ -36,7 +36,7 @@ import static org.apache.sis.test.TestUt * @version 0.4 * @module */ -@DependsOn(DefaultCoordinateSystemAxisTest.class) +@DependsOn(AbstractCSTest.class) public final strictfp class DefaultEllipsoidalCSTest extends XMLTestCase { /** * An XML file in this package containing an ellipsoidal coordinate system definition. Modified: sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/DirectionAlongMeridianTest.java URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/DirectionAlongMeridianTest.java?rev=1558583&r1=1558582&r2=1558583&view=diff ============================================================================== --- sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/DirectionAlongMeridianTest.java [UTF-8] (original) +++ sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/DirectionAlongMeridianTest.java [UTF-8] Wed Jan 15 22:01:46 2014 @@ -35,9 +35,9 @@ import static org.junit.Assert.*; @DependsOn(org.apache.sis.internal.referencing.AxisDirectionsTest.class) public final strictfp class DirectionAlongMeridianTest extends TestCase { /** - * For floating point comparisons. + * Tolerance threshold for strict floating point comparisons. */ - private static final double EPS = 1E-10; + private static final double STRICT = 0; /** * Tests the {@link DirectionAlongMeridian#parse(AxisDirection)} method. @@ -99,8 +99,8 @@ public final strictfp class DirectionAlo private static void assertOrdered(final String dir1, final String dir2) { final DirectionAlongMeridian m1 = DirectionAlongMeridian.parse(dir1); final DirectionAlongMeridian m2 = DirectionAlongMeridian.parse(dir2); - assertEquals(+90, m1.getAngle(m2), EPS); - assertEquals(-90, m2.getAngle(m1), EPS); + assertEquals(+90, m1.angle(m2), STRICT); + assertEquals(-90, m2.angle(m1), STRICT); assertEquals( -1, m1.compareTo(m2)); assertEquals( +1, m2.compareTo(m1)); assertFalse (m1.equals(m2)); Modified: sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/test/suite/ReferencingTestSuite.java URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/test/suite/ReferencingTestSuite.java?rev=1558583&r1=1558582&r2=1558583&view=diff ============================================================================== --- sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/test/suite/ReferencingTestSuite.java [UTF-8] (original) +++ sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/test/suite/ReferencingTestSuite.java [UTF-8] Wed Jan 15 22:01:46 2014 @@ -63,12 +63,17 @@ import org.junit.BeforeClass; org.apache.sis.referencing.datum.DefaultGeodeticDatumTest.class, org.apache.sis.referencing.cs.DirectionAlongMeridianTest.class, org.apache.sis.referencing.cs.DefaultCoordinateSystemAxisTest.class, + org.apache.sis.referencing.cs.NormalizerTest.class, + org.apache.sis.referencing.cs.AbstractCSTest.class, org.apache.sis.referencing.cs.DefaultCartesianCSTest.class, org.apache.sis.referencing.cs.DefaultEllipsoidalCSTest.class, + org.apache.sis.referencing.cs.DefaultCompoundCSTest.class, org.apache.sis.referencing.cs.CoordinateSystemsTest.class, + org.apache.sis.referencing.crs.AbstractCRSTest.class, org.apache.sis.referencing.crs.DefaultGeodeticCRSTest.class, org.apache.sis.referencing.StandardDefinitionsTest.class, org.apache.sis.referencing.GeodeticObjectsTest.class, + org.apache.sis.referencing.CRSTest.class, org.apache.sis.geometry.AbstractDirectPositionTest.class, org.apache.sis.geometry.GeneralDirectPositionTest.class, Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/util/UnmodifiableArrayList.java URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/util/UnmodifiableArrayList.java?rev=1558583&r1=1558582&r2=1558583&view=diff ============================================================================== --- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/util/UnmodifiableArrayList.java [UTF-8] (original) +++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/util/UnmodifiableArrayList.java [UTF-8] Wed Jan 15 22:01:46 2014 @@ -18,6 +18,8 @@ package org.apache.sis.internal.util; import java.io.Serializable; import java.util.AbstractList; +import java.util.Arrays; +import java.lang.reflect.Array; import org.apache.sis.util.ArgumentChecks; import org.apache.sis.util.collection.CheckedContainer; @@ -69,7 +71,7 @@ public class UnmodifiableArrayList ex /** * The wrapped array. */ - private final E[] array; + final E[] array; /** * Creates a new instance wrapping the given array. A direct reference to the given array is @@ -167,6 +169,8 @@ public class UnmodifiableArrayList ex /** * Returns the list size. + * + * @return The size of this list. */ @Override public int size() { @@ -192,6 +196,9 @@ public class UnmodifiableArrayList ex /** * Returns the element at the specified index. + * + * @param index The index of the element to get. + * @return The element at the given index. */ @Override public E get(final int index) { @@ -355,11 +362,21 @@ public class UnmodifiableArrayList ex ArgumentChecks.ensureValidIndex(size, index); return super.get(index + lower); } + + /** + * Returns a copy of the backing array section viewed by this sublist. + */ + @Override + public E[] toArray() { + return Arrays.copyOfRange(array, lower, lower + size); + } } /** * Returns a copy of the backing array. Note that the array type is {@code E[]} rather than {@code Object[]}. * This is not what {@code ArrayList} does, but is not forbidden by {@link List#toArray()} javadoc neither. + * + * @return A copy of the wrapped array. */ @Override public E[] toArray() { @@ -367,6 +384,35 @@ public class UnmodifiableArrayList ex } /** + * Copies the backing array in the given one if the list fits in the given array. + * If the list does not fit in the given array, returns the collection in a new array. + * + * @param The type of array element. + * @param dest The array where to copy the elements if the list can fits in the array. + * @return The given array, or a newly created array if this list is larger than the given array. + */ + @Override + @SuppressWarnings("unchecked") + public T[] toArray(T[] dest) { + final int size = size(); + if (dest.length != size) { + if (dest.length < size) { + /* + * We are cheating here since the array component may not be assignable to T. + * But if this assumption is wrong, then the call to System.arraycopy(…) later + * will thrown an ArrayStoreException, which is the exception type required by + * the Collection.toArray(T[]) javadoc. + */ + dest = (T[]) Array.newInstance(dest.getClass().getComponentType(), size); + } else { + dest[size] = null; // Required by Collection.toArray(T[]) javadoc. + } + } + System.arraycopy(array, lower(), dest, 0, size); + return dest; + } + + /** * Compares this list with the given object for equality. * * @param object The object to compare with this list. Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/measure/Angle.java URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/measure/Angle.java?rev=1558583&r1=1558582&r2=1558583&view=diff ============================================================================== --- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/measure/Angle.java [UTF-8] (original) +++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/measure/Angle.java [UTF-8] Wed Jan 15 22:01:46 2014 @@ -30,9 +30,20 @@ import static org.apache.sis.math.MathFu /** - * An angle in decimal degrees. An angle is the amount of rotation needed to bring one line or - * plane into coincidence with another, generally measured in degrees, sexagesimal degrees or - * grads. + * An angle in decimal degrees. An angle is the amount of rotation needed to bring one line or plane + * into coincidence with another. Various kind of angles are used in geographic information systems, + * some of them having a specialized class in Apache SIS: + * + *
    + *
  • {@linkplain Latitude} is an angle ranging from 0° at the equator to 90° at the poles.
  • + *
  • {@linkplain Longitude} is an angle measured east-west from a prime meridian (usually Greenwich, but not necessarily).
  • + *
  • Azimuth is a direction given by an angle between 0° and 360° measured clockwise from North.
  • + *
  • Bearing is a direction given by an angle between 0° and 90° in a quadrant defined by a cardinal direction.
  • + *
  • Bearing is also sometime used in navigation for an angle relative to the vessel forward direction.
  • + *
  • Deflection angle is the angle between a line and the prolongation of a preceding line.
  • + *
  • Interior angle is an angle measured between two lines of sight.
  • + *
  • {@linkplain ElevationAngle Elevation angle} is the angular height from the horizontal plane to an object above the horizon.
  • + *
* * {@section Formatting angles} * The recommended way to format angles is to instantiate an {@link AngleFormat} once, then to Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/measure/AngleFormat.java URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/measure/AngleFormat.java?rev=1558583&r1=1558582&r2=1558583&view=diff ============================================================================== --- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/measure/AngleFormat.java [UTF-8] (original) +++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/measure/AngleFormat.java [UTF-8] Wed Jan 15 22:01:46 2014 @@ -195,7 +195,7 @@ public class AngleFormat extends Format private static final int[] SYMBOLS = {'D', 'M', 'S', '#', '?'}; /** - * Defines constants that are used as attribute keys in the iterator returned from + * Constants that are used as attribute keys in the iterator returned from * {@link AngleFormat#formatToCharacterIterator(Object)}. * * @author Martin Desruisseaux (Geomatys) Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/measure/Latitude.java URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/measure/Latitude.java?rev=1558583&r1=1558582&r2=1558583&view=diff ============================================================================== --- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/measure/Latitude.java [UTF-8] (original) +++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/measure/Latitude.java [UTF-8] Wed Jan 15 22:01:46 2014 @@ -20,6 +20,27 @@ package org.apache.sis.measure; /** * A latitude angle in decimal degrees. * Positive latitudes are North, while negative latitudes are South. + * The latitude symbol is the Greek lower-case letter phi (φ). + * + *

Because the Earth is not a perfect sphere, there is small differences in the latitude values of a point + * depending on how the latitude is defined:

+ * + *
    + *
  • Geodetic latitude is the angle between the equatorial plane and a line perpendicular + * to the {@linkplain org.apache.sis.referencing.datum.DefaultEllipsoid ellipsoid} surface.
  • + *
  • Geocentric latitude is the angle between the equatorial plane and a line going from + * the Earth center. It differs from geodetic latitude by less than 11 angular minutes.
  • + *
  • Astronomical latitude is the angle between the equatorial plane and a line given + * by the direction of a plumb line (the "true vertical").
  • + *
  • Above list is not exhaustive. There is also geomagnetic latitude, etc.
  • + *
+ * + * The kind of latitude is unspecified by this {@code Latitude} class, and rather depends on the context: + * the latitude is geodetic if the coordinate reference system is + * {@linkplain org.apache.sis.referencing.crs.DefaultGeographicCRS geographic}, + * or geocentric if the coordinate reference system is + * {@linkplain org.apache.sis.referencing.crs.DefaultGeocentricCRS geocentric}. + * If the context is unknown, then geodetic latitude can usually be assumed. * * {@section Immutability and thread safety} * This final class is immutable and thus inherently thread-safe. Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/measure/Longitude.java URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/measure/Longitude.java?rev=1558583&r1=1558582&r2=1558583&view=diff ============================================================================== --- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/measure/Longitude.java [UTF-8] (original) +++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/measure/Longitude.java [UTF-8] Wed Jan 15 22:01:46 2014 @@ -20,6 +20,12 @@ package org.apache.sis.measure; /** * A longitude angle in decimal degrees. * Positive longitudes are East, while negative longitudes are West. + * The longitude symbol is the Greek lower-case letter lambda (λ). + * + *

Longitudes are not necessarily relative to the Greenwich meridian. The + * {@linkplain org.apache.sis.referencing.datum.DefaultPrimeMeridian prime meridian} + * depends on the context, typically specified through the geodetic datum of a + * {@linkplain org.apache.sis.referencing.crs.DefaultGeographicCRS geographic CRS}.

* * {@section Immutability and thread safety} * This final class is immutable and thus inherently thread-safe. @@ -74,7 +80,7 @@ public final class Longitude extends Ang * * @param string A string to be converted to a {@code Longitude}. * @throws NumberFormatException if the string does not contain a parsable angle, - * or represents a latitude angle. + * or represents a longitude angle. * * @see AngleFormat#parse(String) */ Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/measure/RangeFormat.java URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/measure/RangeFormat.java?rev=1558583&r1=1558582&r2=1558583&view=diff ============================================================================== --- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/measure/RangeFormat.java [UTF-8] (original) +++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/measure/RangeFormat.java [UTF-8] Wed Jan 15 22:01:46 2014 @@ -123,7 +123,7 @@ public class RangeFormat extends Format private static final int UNIT_FIELD = 2; /** - * Defines constants that are used as attribute keys in the iterator returned from + * Constants that are used as attribute keys in the iterator returned from * {@link RangeFormat#formatToCharacterIterator(Object)}. * * @author Martin Desruisseaux (Geomatys) Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java?rev=1558583&r1=1558582&r2=1558583&view=diff ============================================================================== --- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java [UTF-8] (original) +++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java [UTF-8] Wed Jan 15 22:01:46 2014 @@ -371,6 +371,11 @@ public final class Errors extends Indexe public static final short MismatchedMatrixSize_4 = 60; /** + * No authority was specified for code “{0}”. The expected syntax is “AUTHORITY:CODE”. + */ + public static final short MissingAuthority_1 = 135; + + /** * This operation requires the “{0}” module. */ public static final short MissingRequiredModule_1 = 61; @@ -416,6 +421,11 @@ public final class Errors extends Indexe public static final short NoConvergenceForPoints_2 = 69; /** + * No code “{2}” from authority “{0}” found for object of type ‘{1}’. + */ + public static final short NoSuchAuthorityCode_3 = 137; + + /** * Element “{0}” has not been found. */ public static final short NoSuchElement_1 = 70; @@ -631,6 +641,11 @@ public final class Errors extends Indexe public static final short UnexpectedFileFormat_2 = 111; /** + * Authority “{0}” is unknown. + */ + public static final short UnknownAuthority_1 = 136; + + /** * Axis direction “{0}” is unknown. */ public static final short UnknownAxisDirection_1 = 112; Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties?rev=1558583&r1=1558582&r2=1558583&view=diff ============================================================================== --- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties [ISO-8859-1] (original) +++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties [ISO-8859-1] Wed Jan 15 22:01:46 2014 @@ -85,6 +85,7 @@ MismatchedCRS = The MismatchedDimension_2 = Mismatched object dimensions: {0}D and {1}D. MismatchedDimension_3 = Argument \u2018{0}\u2019 has {2} dimension{2,choice,1#|2#s}, while {1} was expected. MismatchedMatrixSize_4 = Mismatched matrix sizes: expected {0}\u00d7{1} but got {2}\u00d7{3}. +MissingAuthority_1 = No authority was specified for code \u201c{0}\u201d. The expected syntax is \u201cAUTHORITY:CODE\u201d. MissingRequiredModule_1 = This operation requires the \u201c{0}\u201d module. MissingSchemeInURI = Missing scheme in URI. MissingValueForOption_1 = Missing value for option \u201c{0}\u201d. @@ -116,6 +117,7 @@ NotAPrimitiveWrapper_1 = Clas NotASkewSymmetricMatrix = Matrix is not skew-symmetric. NotAUnicodeIdentifier_1 = Text \u201c{0}\u201d is not a Unicode identifier. NotComparableClass_1 = Class \u2018{0}\u2019 is not a comparable. +NoSuchAuthorityCode_3 = No code \u201c{2}\u201d from authority \u201c{0}\u201d found for object of type \u2018{1}\u2019. NoSuchElement_1 = Element \u201c{0}\u201d has not been found. NoSuchProperty_2 = No property named \u201c{0}\u201d has been found in \u201c{1}\u201d. NoUnit = No unit of measurement has been specified. @@ -138,6 +140,7 @@ UnexpectedChange_1 = Unex UnexpectedEndOfFile_1 = Unexpected end of file while reading \u201c{0}\u201d. UnexpectedEndOfString_1 = More characters were expected at the end of \u201c{0}\u201d. UnexpectedFileFormat_2 = File \u201c{1}\u201d seems to be encoded in an other format than {0}. +UnknownAuthority_1 = Authority \u201c{0}\u201d is unknown. UnknownAxisDirection_1 = Axis direction \u201c{0}\u201d is unknown. UnknownCommand_1 = Command \u201c{0}\u201d is not recognized. UnknownEnumValue_1 = Unknown enumeration value: {0}. Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties?rev=1558583&r1=1558582&r2=1558583&view=diff ============================================================================== --- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties [ISO-8859-1] (original) +++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties [ISO-8859-1] Wed Jan 15 22:01:46 2014 @@ -75,6 +75,7 @@ MismatchedCRS = Le s MismatchedDimension_2 = Les dimensions des objets ({0}D et {1}D) ne concordent pas. MismatchedDimension_3 = L\u2019argument \u2018{0}\u2019 a {2} dimension{2,choice,1#|2#s}, alors qu\u2019on en attendait {1}. MismatchedMatrixSize_4 = Une matrice de taille de {0}\u00d7{1} \u00e9tait attendue mais la matrice donn\u00e9es est de taille {2}\u00d7{3}. +MissingAuthority_1 = Aucune autorit\u00e9 n\u2019a \u00e9t\u00e9 sp\u00e9cifi\u00e9e pour le code \u201c{0}\u201d. Le format attendu est \u201cAUTORIT\u00c9:CODE\u201d. MissingRequiredModule_1 = Cette op\u00e9ration requiert le module \u201c{0}\u201d. MissingSchemeInURI = Il manque le sch\u00e9ma d\u2019URI. MissingValueForOption_1 = Aucune valeur n\u2019a \u00e9t\u00e9 d\u00e9finie pour l\u2019option \u201c{0}\u201d. @@ -106,6 +107,7 @@ NotAPrimitiveWrapper_1 = La c NotASkewSymmetricMatrix = La matrice n\u2019est pas antisym\u00e9trique. NotAUnicodeIdentifier_1 = Le texte \u201c{0}\u201d n\u2019est pas un identifiant Unicode. NotComparableClass_1 = La classe \u2018{0}\u2019 n\u2019est pas comparable. +NoSuchAuthorityCode_3 = Aucun code \u201c{2}\u201d de l\u2019autorit\u00e9 \u201c{0}\u201d n\u2019a \u00e9t\u00e9 trouv\u00e9 pour un objet de type \u2018{1}\u2019. NoSuchElement_1 = L\u2019\u00e9lement \u201c{0}\u201d n\u2019a pas \u00e9t\u00e9 trouv\u00e9. NoSuchProperty_2 = Aucune propri\u00e9t\u00e9 nomm\u00e9e \u201c{0}\u201d n\u2019a \u00e9t\u00e9 trouv\u00e9e dans \u201c{1}\u201d. NoUnit = Aucune unit\u00e9 de mesure n\u2019a \u00e9t\u00e9 sp\u00e9cifi\u00e9e. @@ -127,6 +129,7 @@ UnexpectedChange_1 = Chan UnexpectedEndOfFile_1 = Fin de fichier inattendue lors de la lecture de \u201c{0}\u201d. UnexpectedEndOfString_1 = D\u2019autres caract\u00e8res \u00e9taient attendus \u00e0 la fin du texte \u201c{0}\u201d. UnexpectedFileFormat_2 = Le fichier \u201c{1}\u201d semble \u00eatre encod\u00e9 dans un autre format que {0}. +UnknownAuthority_1 = L\u2019autorit\u00e9 \u201c{0}\u201d n\u2019est pas reconnue. UnknownAxisDirection_1 = La direction d\u2019axe \u201c{0}\u201d n\u2019est pas reconnue. UnknownCommand_1 = La commande \u201c{0}\u201d n\u2019est pas reconnue. UnknownEnumValue_1 = Valeur d\u2019\u00e9num\u00e9ration inconnue: {0}. Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.java URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.java?rev=1558583&r1=1558582&r2=1558583&view=diff ============================================================================== --- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.java [UTF-8] (original) +++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.java [UTF-8] Wed Jan 15 22:01:46 2014 @@ -345,6 +345,11 @@ public final class Vocabulary extends In public static final short UnavailableContent = 57; /** + * Unnamed + */ + public static final short Unnamed = 65; + + /** * Untitled */ public static final short Untitled = 58; Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.properties URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.properties?rev=1558583&r1=1558582&r2=1558583&view=diff ============================================================================== --- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.properties [ISO-8859-1] (original) +++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.properties [ISO-8859-1] Wed Jan 15 22:01:46 2014 @@ -71,6 +71,7 @@ Time_1 = {0} time Timezone = Timezone TruncatedJulian = Truncated Julian Type = Type +Unnamed = Unnamed Untitled = Untitled UnavailableContent = Unavailable content. UserHome = User home directory Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary_fr.properties URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary_fr.properties?rev=1558583&r1=1558582&r2=1558583&view=diff ============================================================================== --- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary_fr.properties [ISO-8859-1] (original) +++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary_fr.properties [ISO-8859-1] Wed Jan 15 22:01:46 2014 @@ -71,6 +71,7 @@ Time_1 = Heure {0} Timezone = Fuseau horaire TruncatedJulian = Julien tronqu\u00e9 Type = Type +Unnamed = Sans nom Untitled = Sans titre UnavailableContent = Contenu non-disponible. UserHome = R\u00e9pertoire de l'utilisateur Modified: sis/branches/JDK6/core/sis-utility/src/test/java/org/apache/sis/util/CharSequencesTest.java URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/test/java/org/apache/sis/util/CharSequencesTest.java?rev=1558583&r1=1558582&r2=1558583&view=diff ============================================================================== --- sis/branches/JDK6/core/sis-utility/src/test/java/org/apache/sis/util/CharSequencesTest.java [UTF-8] (original) +++ sis/branches/JDK6/core/sis-utility/src/test/java/org/apache/sis/util/CharSequencesTest.java [UTF-8] Wed Jan 15 22:01:46 2014 @@ -327,21 +327,24 @@ public final strictfp class CharSequence @Test public void testIsAcronymForWords() { /* - * Following should be accepted as acronyms... + * Following shall be accepted as acronyms... */ assertTrue(isAcronymForWords("OGC", "Open Geospatial Consortium")); assertTrue(isAcronymForWords("O.G.C.", "Open Geospatial Consortium")); assertTrue(isAcronymForWords("OpGeoCon", "Open Geospatial Consortium")); assertTrue(isAcronymForWords("Open Geospatial Consortium", "Open Geospatial Consortium")); assertTrue(isAcronymForWords("ogc", "Open Geospatial Consortium")); + assertTrue(isAcronymForWords("E", "EAST")); + assertTrue(isAcronymForWords("ENE", "EAST_NORTH_EAST")); /* - * Following should be rejected... + * Following shall be rejected... */ assertFalse(isAcronymForWords("ORC", "Open Geospatial Consortium")); assertFalse(isAcronymForWords("O.C.G.", "Open Geospatial Consortium")); assertFalse(isAcronymForWords("OGC2", "Open Geospatial Consortium")); assertFalse(isAcronymForWords("OG", "Open Geospatial Consortium")); assertFalse(isAcronymForWords("GC", "Open Geospatial Consortium")); + assertFalse(isAcronymForWords("ENE", "NORTH_EAST")); /* * Following are mapping of EPSG table names from MS-Access to ANSI SQL. * All those items must be recognized as acroynms - this is requred by DirectEpsgFactory. @@ -369,7 +372,7 @@ public final strictfp class CharSequence assertTrue(isAcronymForWords("deprecation", "[Deprecation]")); assertFalse(isAcronymForWords(null, "[Deprecation]")); /* - * It is important the the following is not recognized as an acronym, + * It is important the following is not recognized as an acronym, * otherwise it leads to a confusion in DirectEpsgFactory. */ assertFalse(isAcronymForWords("coordoperation", "[Coordinate_Operation Method]"));