sis-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From desruisse...@apache.org
Subject svn commit: r1544697 - in /sis/branches/JDK7/core: sis-referencing/src/main/java/org/apache/sis/referencing/cs/ sis-utility/src/main/java/org/apache/sis/util/ sis-utility/src/main/java/org/apache/sis/util/resources/ sis-utility/src/test/java/org/apache...
Date Fri, 22 Nov 2013 22:17:09 GMT
Author: desruisseaux
Date: Fri Nov 22 22:17:08 2013
New Revision: 1544697

URL: http://svn.apache.org/r1544697
Log:
Partial port of AbstractCS.

Added:
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/AbstractCS.java   (with props)
    sis/branches/JDK7/core/sis-utility/src/test/java/org/apache/sis/util/ArgumentChecksTest.java   (with props)
Modified:
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/ArgumentChecks.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties
    sis/branches/JDK7/core/sis-utility/src/test/java/org/apache/sis/test/suite/UtilityTestSuite.java

Added: sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/AbstractCS.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/AbstractCS.java?rev=1544697&view=auto
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/AbstractCS.java (added)
+++ sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/AbstractCS.java [UTF-8] Fri Nov 22 22:17:08 2013
@@ -0,0 +1,295 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sis.referencing.cs;
+
+import java.util.Map;
+import java.util.Arrays;
+import javax.measure.unit.SI;
+import javax.measure.unit.Unit;
+import javax.measure.unit.NonSI;
+import javax.xml.bind.annotation.XmlElement;
+import org.opengis.util.GenericName;
+import org.opengis.util.InternationalString;
+import org.opengis.referencing.ReferenceIdentifier;
+import org.opengis.referencing.cs.AxisDirection;
+import org.opengis.referencing.cs.CoordinateSystem;
+import org.opengis.referencing.cs.CoordinateSystemAxis;
+import org.apache.sis.referencing.AbstractIdentifiedObject;
+import org.apache.sis.internal.referencing.AxisDirections;
+import org.apache.sis.io.wkt.Formatter;
+import org.apache.sis.util.Immutable;
+import org.apache.sis.util.ComparisonMode;
+import org.apache.sis.util.resources.Errors;
+
+import static org.apache.sis.util.ArgumentChecks.*;
+import static org.apache.sis.util.Utilities.deepEquals;
+
+
+/**
+ * The set of {@linkplain DefaultCoordinateSystemAxis coordinate system axes} that spans a given coordinate space.
+ * The type of the coordinate system implies the set of mathematical rules for calculating geometric properties
+ * like angles, distances and surfaces.
+ *
+ * <p>This class is conceptually <cite>abstract</cite>, even if it is technically possible to instantiate it.
+ * Typical applications should create instances of the most specific subclass with {@code Default} prefix instead.
+ * An exception to this rule may occurs when it is not possible to identify the exact type. For example it is not
+ * possible to infer the exact coordinate system from <cite>Well Known Text</cite> (WKT) version 1 in some cases
+ * (e.g. in a {@code LOCAL_CS} element). In such exceptional situation, a plain {@code AbstractCS} object may be
+ * instantiated.</p>
+ *
+ * @author  Martin Desruisseaux (IRD, Geomatys)
+ * @since   0.4 (derived from geotk-2.0)
+ * @version 0.4
+ * @module
+ *
+ * @see DefaultCoordinateSystemAxis
+ * @see org.apache.sis.referencing.crs.AbstractCRS
+ */
+@Immutable
+public class AbstractCS extends AbstractIdentifiedObject implements CoordinateSystem {
+    /**
+     * Serial number for inter-operability with different versions.
+     */
+    private static final long serialVersionUID = 6757665252533744744L;
+
+    /**
+     * The sequence of axes for this coordinate system.
+     */
+    @XmlElement(name = "axis")
+    private final CoordinateSystemAxis[] axes;
+
+    /**
+     * Constructs a coordinate system from a set of properties and a sequence of axes.
+     * The properties map is given unchanged to the
+     * {@linkplain AbstractIdentifiedObject#AbstractIdentifiedObject(Map) super-class constructor}.
+     * The following table is a reminder of main (not all) properties:
+     *
+     * <table class="sis">
+     *   <tr>
+     *     <th>Property name</th>
+     *     <th>Value type</th>
+     *     <th>Returned by</th>
+     *   </tr>
+     *   <tr>
+     *     <td>{@value org.opengis.referencing.IdentifiedObject#NAME_KEY}</td>
+     *     <td>{@link ReferenceIdentifier} or {@link String}</td>
+     *     <td>{@link #getName()}</td>
+     *   </tr>
+     *   <tr>
+     *     <td>{@value org.opengis.referencing.IdentifiedObject#ALIAS_KEY}</td>
+     *     <td>{@link GenericName} or {@link CharSequence} (optionally as array)</td>
+     *     <td>{@link #getAlias()}</td>
+     *   </tr>
+     *   <tr>
+     *     <td>{@value org.opengis.referencing.IdentifiedObject#IDENTIFIERS_KEY}</td>
+     *     <td>{@link ReferenceIdentifier} (optionally as array)</td>
+     *     <td>{@link #getIdentifiers()}</td>
+     *   </tr>
+     *   <tr>
+     *     <td>{@value org.opengis.referencing.IdentifiedObject#REMARKS_KEY}</td>
+     *     <td>{@link InternationalString} or {@link String}</td>
+     *     <td>{@link #getRemarks()}</td>
+     *   </tr>
+     * </table>
+     *
+     * @param properties The properties to be given to the identified object.
+     * @param axes       The sequence of axes.
+     */
+    public AbstractCS(final Map<String,?> properties, CoordinateSystemAxis... axes) {
+        super(properties);
+        ensureNonNull("axes", axes);
+        this.axes = axes = axes.clone();
+        for (int i=0; i<axes.length; i++) {
+            final CoordinateSystemAxis axis = axes[i];
+            ensureNonNullElement("axes", i, axis);
+            final ReferenceIdentifier name = axis.getName();
+            ensureNonNullElement("axes[#].name", i, name);
+            final AxisDirection direction = axis.getDirection();
+            ensureNonNullElement("axes[#].direction", i, direction);
+            /*
+             * Ensures that axis direction and units are compatible with the
+             * coordinate system to be created. For example CartesianCS will
+             * accepts only linear or dimensionless units.
+             */
+            if (!isCompatibleDirection(direction)) {
+                throw new IllegalArgumentException(Errors.format(
+                        Errors.Keys.IllegalAxisDirection_2, getClass(), direction));
+            }
+            final Unit<?> unit = axis.getUnit();
+            ensureNonNullElement("axes[#].unit", i, unit);
+            if (!isCompatibleUnit(direction, unit)) {
+                throw new IllegalArgumentException(Errors.format(
+                        Errors.Keys.IllegalUnitFor_2, name, unit));
+            }
+            /*
+             * Ensures there is no axis along the same direction
+             * (e.g. two North axes, or an East and a West axis).
+             */
+            final AxisDirection dir = AxisDirections.absolute(direction);
+            if (!dir.equals(AxisDirection.OTHER)) {
+                for (int j=i; --j>=0;) {
+                    final AxisDirection other = axes[j].getDirection();
+                    if (dir.equals(AxisDirections.absolute(other))) {
+                        throw new IllegalArgumentException(Errors.format(
+                                Errors.Keys.ColinearAxisDirections_2, direction, other));
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Creates a new coordinate system with the same values than the specified one.
+     * This copy constructor provides a way to convert an arbitrary implementation into a SIS one
+     * or a user-defined one (as a subclass), usually in order to leverage some implementation-specific API.
+     *
+     * <p>This constructor performs a shallow copy, i.e. the properties are not cloned.</p>
+     *
+     * @param cs The coordinate system to copy.
+     *
+     * @see #castOrCopy(CoordinateSystem)
+     */
+    protected AbstractCS(final CoordinateSystem cs) {
+        super(cs);
+        if (cs instanceof AbstractCS) {
+            axes = ((AbstractCS) cs).axes;
+        } else {
+            axes = new CoordinateSystemAxis[cs.getDimension()];
+            for (int i=0; i<axes.length; i++) {
+                axes[i] = cs.getAxis(i);
+            }
+        }
+    }
+
+    /**
+     * Returns {@code true} if the specified axis direction is allowed for this coordinate system.
+     * This method is invoked at construction time for checking argument validity. The default implementation
+     * returns {@code true} for all axis directions. Subclasses will override this method in order to put more
+     * restrictions on allowed axis directions.
+     *
+     * <p><b>Note for implementors:</b> since this method is invoked at construction time, it shall not depends
+     * on this object's state. This method is not in public API for that reason.</p>
+     *
+     * @param  direction The direction to test for compatibility.
+     * @return {@code true} if the given direction is compatible with this coordinate system.
+     */
+    boolean isCompatibleDirection(final AxisDirection direction) {
+        return true;
+    }
+
+    /**
+     * Returns {@code true} is the specified unit is legal for the specified axis direction.
+     * This method is invoked at construction time for checking units compatibility. The default implementation
+     * returns {@code true} in all cases. Subclasses can override this method and check for compatibility with
+     * {@linkplain SI#METRE metre} or {@linkplain NonSI#DEGREE_ANGLE degree} units.
+     *
+     * <p><b>Note for implementors:</b> since this method is invoked at construction time, it shall not depends
+     * on this object's state. This method is not in public API for that reason.</p>
+     *
+     * @param  direction The direction of the axis having the given unit.
+     * @param  unit The unit to test for compatibility.
+     * @return {@code true} if the given unit is compatible with this coordinate system.
+     */
+    boolean isCompatibleUnit(final AxisDirection direction, final Unit<?> unit) {
+        return true;
+    }
+
+    /**
+     * Returns the number of dimensions of this coordinate system.
+     * This is the number of axes.
+     *
+     * @return The number of dimensions of this coordinate system.
+     */
+    @Override
+    public int getDimension() {
+        return axes.length;
+    }
+
+    /**
+     * Returns the axis for this coordinate system at the specified dimension.
+     *
+     * @param  dimension The zero based index of axis.
+     * @return The axis at the specified dimension.
+     * @throws IndexOutOfBoundsException if {@code dimension} is out of bounds.
+     */
+    @Override
+    public CoordinateSystemAxis getAxis(final int dimension) throws IndexOutOfBoundsException {
+        return axes[dimension];
+    }
+
+    /**
+     * Compares the specified object with this coordinate system for equality.
+     *
+     * @param  object The object to compare to {@code this}.
+     * @param  mode {@link ComparisonMode#STRICT STRICT} for performing a strict comparison, or
+     *         {@link ComparisonMode#IGNORE_METADATA IGNORE_METADATA} for comparing only properties
+     *         relevant to transformations.
+     * @return {@code true} if both objects are equal.
+     */
+    @Override
+    public boolean equals(final Object object, final ComparisonMode mode) {
+        if (object == this) {
+            return true; // Slight optimization.
+        }
+        if (!(object instanceof CoordinateSystem && super.equals(object, mode))) {
+            return false;
+        }
+        switch (mode) {
+            case STRICT: {
+                return Arrays.equals(axes, ((AbstractCS) object).axes);
+            }
+            default: {
+                final CoordinateSystem that = (CoordinateSystem) object;
+                final int dimension = getDimension();
+                if (dimension != that.getDimension()) {
+                    return false;
+                }
+                for (int i=0; i<dimension; i++) {
+                    if (!deepEquals(getAxis(i), that.getAxis(i), mode)) {
+                        return false;
+                    }
+                }
+                return true;
+            }
+        }
+    }
+
+    /**
+     * Computes a hash value consistent with the given comparison mode.
+     *
+     * @return The hash code value for the given comparison mode.
+     */
+    @Override
+    public int hashCode(final ComparisonMode mode) throws IllegalArgumentException {
+        return Arrays.hashCode(axes) + 31*super.hashCode(mode);
+    }
+
+    /**
+     * Formats the inner part of a <cite>Well Known Text</cite> (WKT) element.
+     * Note that WKT version 1 does not define any keyword for coordinate system.
+     *
+     * @param  formatter The formatter to use.
+     * @return The WKT element name.
+     */
+    @Override
+    protected String formatTo(final Formatter formatter) {
+        for (final CoordinateSystemAxis axe : axes) {
+            formatter.append(axe);
+        }
+        return super.formatTo(formatter);
+    }
+}

Propchange: sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/AbstractCS.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/AbstractCS.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain;charset=UTF-8

Modified: sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/ArgumentChecks.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/ArgumentChecks.java?rev=1544697&r1=1544696&r2=1544697&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/ArgumentChecks.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/ArgumentChecks.java [UTF-8] Fri Nov 22 22:17:08 2013
@@ -109,7 +109,16 @@ public final class ArgumentChecks extend
     /**
      * Makes sure that an array element is non-null. If {@code element} is null, then a
      * {@link NullArgumentException} is thrown with a localized message containing the
-     * given name and index.
+     * given name and index. The name and index are formatted as below:
+     *
+     * <ul>
+     *   <li>If the {@code name} contains the {@code "[#]"} sequence of characters, then the {@code '#'} character
+     *       is replaced by the {@code index} value. For example if {@code name} is {@code "axes[#].unit"} and the
+     *       index is 2, then the formatted message will contain {@code "axes[2].unit"}.</li>
+     *   <li>If the {@code name} does not contain the {@code "[#]"} sequence of characters, then {@code index} value
+     *       is appended between square brackets. For example if {@code name} is {@code "axes"} and the index is 2,
+     *       then the formatted message will contain {@code "axes[2]"}.</li>
+     * </ul>
      *
      * @param  name    The name of the argument to be checked. Used only if an exception is thrown.
      * @param  index   The Index of the element to check in an array or a list. Used only if an exception is thrown.
@@ -120,8 +129,15 @@ public final class ArgumentChecks extend
             throws NullArgumentException
     {
         if (element == null) {
-            throw new NullArgumentException(Errors.format(
-                    Errors.Keys.NullArgument_1, name + '[' + index + ']'));
+            final StringBuilder buffer = new StringBuilder(name);
+            final int s = name.indexOf("[#]");
+            if (s >= 0) {
+                buffer.setLength(s + 1);
+                buffer.append(index).append(name, s + 2, name.length());
+            } else {
+                buffer.append('[').append(index).append(']');
+            }
+            throw new NullArgumentException(Errors.format(Errors.Keys.NullArgument_1, buffer.toString()));
         }
     }
 

Modified: sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java?rev=1544697&r1=1544696&r2=1544697&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java [UTF-8] Fri Nov 22 22:17:08 2013
@@ -226,6 +226,11 @@ public final class Errors extends Indexe
         public static final int IllegalArgumentValue_2 = 14;
 
         /**
+         * Coordinate system of class ‘{0}’ can not have axis in the {1} direction.
+         */
+        public static final int IllegalAxisDirection_2 = 128;
+
+        /**
          * Illegal bits pattern: {0}.
          */
         public static final int IllegalBitsPattern_1 = 16;
@@ -276,6 +281,16 @@ public final class Errors extends Indexe
         public static final int IllegalUnicodeCodePoint_2 = 112;
 
         /**
+         * Unit of measurement “{1}” is not valid for “{0}” values.
+         */
+        public static final int IllegalUnitFor_2 = 129;
+
+        /**
+         * Incompatible coordinate system types.
+         */
+        public static final int IncompatibleCoordinateSystemTypes = 130;
+
+        /**
          * Property “{0}” has an incompatible value.
          */
         public static final int IncompatiblePropertyValue_1 = 86;
@@ -466,6 +481,11 @@ public final class Errors extends Indexe
         public static final int NonInvertibleTransform = 83;
 
         /**
+         * Unit conversion from “{0}” to “{1}” is non-linear.
+         */
+        public static final int NonLinearUnitConversion_2 = 131;
+
+        /**
          * “{0}” is not a linear unit.
          */
         public static final int NonLinearUnit_1 = 47;

Modified: sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties?rev=1544697&r1=1544696&r2=1544697&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties [ISO-8859-1] (original)
+++ sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties [ISO-8859-1] Fri Nov 22 22:17:08 2013
@@ -24,132 +24,136 @@
 # programmatic parameters do not have to be last in the formatted text, since each localized message
 # can reorder the parameters as they want.
 #
-CanNotAddToExclusiveSet_2       = No element can be added to this set because properties \u2018{0}\u2019 and \u2018{1}\u2019 are mutually exclusive.
-CanNotConnectTo_1               = Can not connect to \u201c{0}\u201d.
-CanNotConvertFromType_2         = Can not convert from type \u2018{0}\u2019 to type \u2018{1}\u2019.
-CanNotConvertValue_2            = Can not convert value \u201c{0}\u201d to type \u2018{1}\u2019.
-CanNotComputeDerivative         = Can not compute the derivative.
-CanNotInstantiate_1             = Can not instantiate an object of type \u2018{0}\u2019.
-CanNotMapAxisToDirection_2      = Can not map an axis from \u201c{0}\u201d to direction \u201c{1}\u201d.
-CanNotOpen_1                    = Can not open \u201c{0}\u201d.
-CanNotParseFile_2               = Can not parse \u201c{1}\u201d as a file in the {0} format.
-CanNotRead_1                    = Can not read \u201c{0}\u201d.
-CanNotRepresentInFormat_2       = Can not represent \u201c{1}\u201d in the {0} format.
-CanNotSetPropertyValue_1        = Can not set a value for property \u201c{0}\u201d.
-ClassNotFinal_1                 = Class \u2018{0}\u2019 is not final.
-CloneNotSupported_1             = Can not clone an object of type \u2018{0}\u2019.
-ColinearAxisDirections_2        = Axis directions {0} and {1} are colinear.
-DeadThread_1                    = Thread \u201c{0}\u201d is dead.
-DuplicatedElement_1             = Element \u201c{0}\u201d is duplicated.
-DuplicatedIdentifier_1          = Identifier \u201c{0}\u201d is duplicated.
-DuplicatedOption_1              = Option \u201c{0}\u201d is duplicated.
-ElementAlreadyPresent_1         = Element \u201c{0}\u201d is already present.
-EmptyArgument_1                 = Argument \u2018{0}\u2019 shall not be empty.
-EmptyDictionary                 = The dictionary shall contain at least one entry.
-EmptyEnvelope2D                 = Envelope must be at least two-dimensional and non-empty.
-EmptyProperty_1                 = Property named \u201c{0}\u201d shall not be empty.
-ExcessiveArgumentSize_3         = Argument \u2018{0}\u2019 shall not contain more than {1} elements. A number of {2} is excessive.
-ExcessiveListSize_2             = A size of {1} elements is excessive for the \u201c{0}\u201d list.
-ForbiddenAttribute_2            = Attribute \u201c{0}\u201d is not allowed for an object of type \u2018{1}\u2019.
-IllegalArgumentClass_2          = Argument \u2018{0}\u2019 can not be an instance of \u2018{1}\u2019.
-IllegalArgumentClass_3          = Argument \u2018{0}\u2019 can not be an instance of \u2018{2}\u2019. Expected an instance of \u2018{1}\u2019 or derived type.
-IllegalArgumentField_4          = Argument \u2018{0}\u2019 can not take the \u201c{1}\u201d value, because the \u2018{2}\u2019 field can not take the \u201c{3}\u201d value.
-IllegalArgumentValue_2          = Argument \u2018{0}\u2019 can not take the \u201c{1}\u201d value.
-IllegalOptionValue_2            = Option \u2018{0}\u2019 can not take the \u201c{1}\u201d value.
-IllegalBitsPattern_1            = Illegal bits pattern: {0}.
-IllegalClass_2                  = Class \u2018{1}\u2019 is illegal. It must be \u2018{0}\u2019 or a derived class.
-IllegalFormatPatternForClass_2  = The \u201c{1}\u201d pattern can not be applied to formating of objects of type \u2018{0}\u2019.
-IllegalLanguageCode_1           = The \u201c{0}\u201d language is not recognized.
-IllegalMemberType_2             = Member \u201c{0}\u201d can not be associated to type \u201c{1}\u201d.
-IllegalOrdinateRange_3          = The [{0} \u2026 {1}] range of ordinate values is not valid for the \u201c{2}\u201d axis.
-IllegalPropertyClass_2          = Property \u2018{0}\u2019 does not accept instances of \u2018{1}\u2019.
-IllegalRange_2                  = Range [{0} \u2026 {1}] is not valid.
-IllegalUnicodeCodePoint_2       = Value {1} for \u201c{0}\u201d is not a valid Unicode code point.
-IncompatiblePropertyValue_1     = Property \u201c{0}\u201d has an incompatible value.
-IncompatibleUnits_2             = Units \u201c{0}\u201d and \u201c{1}\u201d are incompatible.
-InconsistentAttribute_2         = Value \u201c{1}\u201d of attribute \u2018{0}\u2019 is inconsistent with other attributes.
-InconsistentTableColumns        = Inconsistent table columns.
-IdentifierAlreadyBound_1        = Identifier \u201c{0}\u201d is already associated to another object.
-IndexOutOfBounds_1              = Index {0} is out of bounds.
-IndicesOutOfBounds_2            = Indices ({0}, {1}) are out of bounds.
-InfiniteArgumentValue_1         = Argument \u2018{0}\u2019 can not take an infinite value.
-InfiniteRecursivity             = Infinite recursivity.
-InsufficientArgumentSize_3      = Argument \u2018{0}\u2019 shall contain at least {1} elements. A number of {2} is insufficient.
-KeyCollision_1                  = A different value is already associated to the \u201c{0}\u201d key.
-MandatoryAttribute_2            = Attribute \u201c{0}\u201d is mandatory for an object of type \u2018{1}\u2019.
-MismatchedArrayLengths          = Mismatched array lengths.
-MismatchedCRS                   = The coordinate reference system must be the same for all objects.
-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}.
-MissingRequiredModule_1         = This operation requires the \u201c{0}\u201d module.
-MissingSchemeInURI              = Missing scheme in URI.
-MissingValueForOption_1         = Missing value for option \u201c{0}\u201d.
-MissingValueForProperty_1       = Missing value for property \u201c{0}\u201d.
-MissingValueInColumn_1          = Missing value in the \u201c{0}\u201d column.
-MutuallyExclusiveOptions_2      = Options \u201c{0}\u201d and \u201c{1}\u201d are mutually exclusive.
-NegativeArgument_2              = Argument \u2018{0}\u2019 shall not be negative. The given value was {1}.
-NegativeArrayLength_1           = Can not create a \u201c{0}\u201d array of negative length.
-NoConvergenceForPoints_2        = No convergence for points {0} and {1}.
-NodeChildOfItself_1             = Node \u201c{0}\u201d can not be a child of itself.
-NodeHasAnotherParent_1          = Node \u201c{0}\u201d already has another parent.
-NodeHasNoParent_1               = Node \u201c{0}\u201d has no parent.
-NodeIsLeaf_1                    = Node \u201c{0}\u201d is a leaf.
-NodeNotFound_1                  = No \u201c{0}\u201d node found.
-NonEquilibratedParenthesis_2    = Missing a \u2018{1}\u2019 parenthesis in \u201c{0}\u201d.
-NonInvertibleConversion         = Conversion is not invertible.
-NonInvertibleMatrix_2           = Non invertible {0}\u00d7{1} matrix.
-NonInvertibleTransform          = Transform is not invertible.
-NonAngularUnit_1                = \u201c{0}\u201d is not an angular unit.
-NonLinearUnit_1                 = \u201c{0}\u201d is not a linear unit.
-NonScaleUnit_1                  = \u201c{0}\u201d is not a scale unit.
-NonTemporalUnit_1               = \u201c{0}\u201d is not a time unit.
-NonUniformScale                 = Scale is not uniform.
-NotAnAffineTransform            = Transform is not affine.
-NotANumber_1                    = Argument \u2018{0}\u2019 shall not be NaN (Not-a-Number).
-NotAPrimitiveWrapper_1          = Class \u2018{0}\u2019 is not a primitive type wrapper.
-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.
-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.
-NullArgument_1                  = Argument \u2018{0}\u2019 shall not be null.
+CanNotAddToExclusiveSet_2         = No element can be added to this set because properties \u2018{0}\u2019 and \u2018{1}\u2019 are mutually exclusive.
+CanNotConnectTo_1                 = Can not connect to \u201c{0}\u201d.
+CanNotConvertFromType_2           = Can not convert from type \u2018{0}\u2019 to type \u2018{1}\u2019.
+CanNotConvertValue_2              = Can not convert value \u201c{0}\u201d to type \u2018{1}\u2019.
+CanNotComputeDerivative           = Can not compute the derivative.
+CanNotInstantiate_1               = Can not instantiate an object of type \u2018{0}\u2019.
+CanNotMapAxisToDirection_2        = Can not map an axis from \u201c{0}\u201d to direction \u201c{1}\u201d.
+CanNotOpen_1                      = Can not open \u201c{0}\u201d.
+CanNotParseFile_2                 = Can not parse \u201c{1}\u201d as a file in the {0} format.
+CanNotRead_1                      = Can not read \u201c{0}\u201d.
+CanNotRepresentInFormat_2         = Can not represent \u201c{1}\u201d in the {0} format.
+CanNotSetPropertyValue_1          = Can not set a value for property \u201c{0}\u201d.
+ClassNotFinal_1                   = Class \u2018{0}\u2019 is not final.
+CloneNotSupported_1               = Can not clone an object of type \u2018{0}\u2019.
+ColinearAxisDirections_2          = Axis directions {0} and {1} are colinear.
+DeadThread_1                      = Thread \u201c{0}\u201d is dead.
+DuplicatedElement_1               = Element \u201c{0}\u201d is duplicated.
+DuplicatedIdentifier_1            = Identifier \u201c{0}\u201d is duplicated.
+DuplicatedOption_1                = Option \u201c{0}\u201d is duplicated.
+ElementAlreadyPresent_1           = Element \u201c{0}\u201d is already present.
+EmptyArgument_1                   = Argument \u2018{0}\u2019 shall not be empty.
+EmptyDictionary                   = The dictionary shall contain at least one entry.
+EmptyEnvelope2D                   = Envelope must be at least two-dimensional and non-empty.
+EmptyProperty_1                   = Property named \u201c{0}\u201d shall not be empty.
+ExcessiveArgumentSize_3           = Argument \u2018{0}\u2019 shall not contain more than {1} elements. A number of {2} is excessive.
+ExcessiveListSize_2               = A size of {1} elements is excessive for the \u201c{0}\u201d list.
+ForbiddenAttribute_2              = Attribute \u201c{0}\u201d is not allowed for an object of type \u2018{1}\u2019.
+IllegalArgumentClass_2            = Argument \u2018{0}\u2019 can not be an instance of \u2018{1}\u2019.
+IllegalArgumentClass_3            = Argument \u2018{0}\u2019 can not be an instance of \u2018{2}\u2019. Expected an instance of \u2018{1}\u2019 or derived type.
+IllegalArgumentField_4            = Argument \u2018{0}\u2019 can not take the \u201c{1}\u201d value, because the \u2018{2}\u2019 field can not take the \u201c{3}\u201d value.
+IllegalArgumentValue_2            = Argument \u2018{0}\u2019 can not take the \u201c{1}\u201d value.
+IllegalAxisDirection_2            = Coordinate system of class \u2018{0}\u2019 can not have axis in the {1} direction.
+IllegalOptionValue_2              = Option \u2018{0}\u2019 can not take the \u201c{1}\u201d value.
+IllegalBitsPattern_1              = Illegal bits pattern: {0}.
+IllegalClass_2                    = Class \u2018{1}\u2019 is illegal. It must be \u2018{0}\u2019 or a derived class.
+IllegalFormatPatternForClass_2    = The \u201c{1}\u201d pattern can not be applied to formating of objects of type \u2018{0}\u2019.
+IllegalLanguageCode_1             = The \u201c{0}\u201d language is not recognized.
+IllegalMemberType_2               = Member \u201c{0}\u201d can not be associated to type \u201c{1}\u201d.
+IllegalOrdinateRange_3            = The [{0} \u2026 {1}] range of ordinate values is not valid for the \u201c{2}\u201d axis.
+IllegalPropertyClass_2            = Property \u2018{0}\u2019 does not accept instances of \u2018{1}\u2019.
+IllegalRange_2                    = Range [{0} \u2026 {1}] is not valid.
+IllegalUnicodeCodePoint_2         = Value {1} for \u201c{0}\u201d is not a valid Unicode code point.
+IllegalUnitFor_2                  = Unit of measurement \u201c{1}\u201d is not valid for \u201c{0}\u201d values.
+IncompatibleCoordinateSystemTypes = Incompatible coordinate system types.
+IncompatiblePropertyValue_1       = Property \u201c{0}\u201d has an incompatible value.
+IncompatibleUnits_2               = Units \u201c{0}\u201d and \u201c{1}\u201d are incompatible.
+InconsistentAttribute_2           = Value \u201c{1}\u201d of attribute \u2018{0}\u2019 is inconsistent with other attributes.
+InconsistentTableColumns          = Inconsistent table columns.
+IdentifierAlreadyBound_1          = Identifier \u201c{0}\u201d is already associated to another object.
+IndexOutOfBounds_1                = Index {0} is out of bounds.
+IndicesOutOfBounds_2              = Indices ({0}, {1}) are out of bounds.
+InfiniteArgumentValue_1           = Argument \u2018{0}\u2019 can not take an infinite value.
+InfiniteRecursivity               = Infinite recursivity.
+InsufficientArgumentSize_3        = Argument \u2018{0}\u2019 shall contain at least {1} elements. A number of {2} is insufficient.
+KeyCollision_1                    = A different value is already associated to the \u201c{0}\u201d key.
+MandatoryAttribute_2              = Attribute \u201c{0}\u201d is mandatory for an object of type \u2018{1}\u2019.
+MismatchedArrayLengths            = Mismatched array lengths.
+MismatchedCRS                     = The coordinate reference system must be the same for all objects.
+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}.
+MissingRequiredModule_1           = This operation requires the \u201c{0}\u201d module.
+MissingSchemeInURI                = Missing scheme in URI.
+MissingValueForOption_1           = Missing value for option \u201c{0}\u201d.
+MissingValueForProperty_1         = Missing value for property \u201c{0}\u201d.
+MissingValueInColumn_1            = Missing value in the \u201c{0}\u201d column.
+MutuallyExclusiveOptions_2        = Options \u201c{0}\u201d and \u201c{1}\u201d are mutually exclusive.
+NegativeArgument_2                = Argument \u2018{0}\u2019 shall not be negative. The given value was {1}.
+NegativeArrayLength_1             = Can not create a \u201c{0}\u201d array of negative length.
+NoConvergenceForPoints_2          = No convergence for points {0} and {1}.
+NodeChildOfItself_1               = Node \u201c{0}\u201d can not be a child of itself.
+NodeHasAnotherParent_1            = Node \u201c{0}\u201d already has another parent.
+NodeHasNoParent_1                 = Node \u201c{0}\u201d has no parent.
+NodeIsLeaf_1                      = Node \u201c{0}\u201d is a leaf.
+NodeNotFound_1                    = No \u201c{0}\u201d node found.
+NonEquilibratedParenthesis_2      = Missing a \u2018{1}\u2019 parenthesis in \u201c{0}\u201d.
+NonInvertibleConversion           = Conversion is not invertible.
+NonInvertibleMatrix_2             = Non invertible {0}\u00d7{1} matrix.
+NonInvertibleTransform            = Transform is not invertible.
+NonAngularUnit_1                  = \u201c{0}\u201d is not an angular unit.
+NonLinearUnit_1                   = \u201c{0}\u201d is not a linear unit.
+NonLinearUnitConversion_2         = Unit conversion from \u201c{0}\u201d to \u201c{1}\u201d is non-linear.
+NonScaleUnit_1                    = \u201c{0}\u201d is not a scale unit.
+NonTemporalUnit_1                 = \u201c{0}\u201d is not a time unit.
+NonUniformScale                   = Scale is not uniform.
+NotAnAffineTransform              = Transform is not affine.
+NotANumber_1                      = Argument \u2018{0}\u2019 shall not be NaN (Not-a-Number).
+NotAPrimitiveWrapper_1            = Class \u2018{0}\u2019 is not a primitive type wrapper.
+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.
+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.
+NullArgument_1                    = Argument \u2018{0}\u2019 shall not be null.
 # Use the OGC/ISO "Dictionary" word instead of "Map" for avoiding confusion with geographic map.
-NullMapKey                      = Null key is not allowed in this dictionary.
-NullMapValue                    = Null values are not allowed in this dictionary.
-OddArrayLength_1                = Array length is {0}, while we expected an even length.
-SingularMatrix                  = Matrix is singular.
-RecursiveCreateCallForKey_1     = Recursive call while creating an object for the \u201c{0}\u201d key.
-RequireDecimalSeparator         = A decimal separator is required.
-StalledThread_1                 = Thread \u201c{0}\u201d seems stalled.
-StreamIsForwardOnly_1           = Can not move backward in the \u201c{0}\u201d stream.
-TooFewArguments_2               = Expected at least {0} argument{0,choice,1#|2#s}, but got {1}.
-TooManyArguments_2              = Expected at most {0} argument{0,choice,1#|2#s}, but got {1}.
-UndefinedOrderingForElements_2  = Ordering between \u201c{0}\u201d and \u201c{1}\u201d elements is undefined.
-UnexpectedArrayLength_2         = Expected an array of length {0}, but got {1}.
-UnexpectedChange_1              = Unexpected change in \u2018{0}\u2019.
-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}.
-UnknownCommand_1                = Command \u201c{0}\u201d is not recognized.
-UnknownEnumValue_1              = Unknown enumeration value: {0}.
-UnknownFormatFor_1              = Format of \u201c{0}\u201d is not recognized.
-UnknownOption_1                 = Option \u201c{0}\u201d is not recognized.
-UnknownType_1                   = Type \u2018{0}\u2019 is unknown in this context.
-UnknownTypeForProperty_1        = Type of the \u201c{0}\u201d property is unknown.
-UnmodifiableAffineTransform     = This affine transform is unmodifiable.
-UnmodifiableCellValue_2         = The cell at column \u201c{1}\u201d of row \u201c{0}\u201d is unmodifiable.
-UnmodifiableGeometry            = This geometry is unmodifiable.
-UnmodifiableMetadata            = This metadata is unmodifiable.
-UnmodifiableObject_1            = Object \u2018{0}\u2019 is unmodifiable.
-UnparsableStringForClass_2      = Text \u201c{1}\u201d can not be parsed as an object of type \u2018{0}\u2019.
-UnparsableStringForClass_3      = Text \u201c{1}\u201d can not be parsed as an object of type \u2018{0}\u2019, because of the \u201c{2}\u201d characters.
-UnspecifiedFormatForClass_1     = No format is specified for objects of class \u2018{0}\u2019.
-UnsupportedImplementation_1     = Can not handle instances of \u2018{0}\u2019 because arbitrary implementations are not yet supported.
-UnsupportedOperation_1          = The \u2018{0}\u2019 operation is unsupported.
-UnsupportedType_1               = The \u2018{0}\u2019 type is unsupported.
-UnsupportedVersion_1            = Version {0} is not supported.
-ValueAlreadyDefined_1           = A value is already defined for \u201c{0}\u201d.
-ValueNotGreaterThanZero_2       = Value \u2018{0}\u2019={1} is invalid. Expected a number greater than 0.
-ValueOutOfRange_4               = Value \u2018{0}\u2019={3} is invalid. Expected a value in the [{1} \u2026 {2}] range.
+NullMapKey                        = Null key is not allowed in this dictionary.
+NullMapValue                      = Null values are not allowed in this dictionary.
+OddArrayLength_1                  = Array length is {0}, while we expected an even length.
+SingularMatrix                    = Matrix is singular.
+RecursiveCreateCallForKey_1       = Recursive call while creating an object for the \u201c{0}\u201d key.
+RequireDecimalSeparator           = A decimal separator is required.
+StalledThread_1                   = Thread \u201c{0}\u201d seems stalled.
+StreamIsForwardOnly_1             = Can not move backward in the \u201c{0}\u201d stream.
+TooFewArguments_2                 = Expected at least {0} argument{0,choice,1#|2#s}, but got {1}.
+TooManyArguments_2                = Expected at most {0} argument{0,choice,1#|2#s}, but got {1}.
+UndefinedOrderingForElements_2    = Ordering between \u201c{0}\u201d and \u201c{1}\u201d elements is undefined.
+UnexpectedArrayLength_2           = Expected an array of length {0}, but got {1}.
+UnexpectedChange_1                = Unexpected change in \u2018{0}\u2019.
+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}.
+UnknownCommand_1                  = Command \u201c{0}\u201d is not recognized.
+UnknownEnumValue_1                = Unknown enumeration value: {0}.
+UnknownFormatFor_1                = Format of \u201c{0}\u201d is not recognized.
+UnknownOption_1                   = Option \u201c{0}\u201d is not recognized.
+UnknownType_1                     = Type \u2018{0}\u2019 is unknown in this context.
+UnknownTypeForProperty_1          = Type of the \u201c{0}\u201d property is unknown.
+UnmodifiableAffineTransform       = This affine transform is unmodifiable.
+UnmodifiableCellValue_2           = The cell at column \u201c{1}\u201d of row \u201c{0}\u201d is unmodifiable.
+UnmodifiableGeometry              = This geometry is unmodifiable.
+UnmodifiableMetadata              = This metadata is unmodifiable.
+UnmodifiableObject_1              = Object \u2018{0}\u2019 is unmodifiable.
+UnparsableStringForClass_2        = Text \u201c{1}\u201d can not be parsed as an object of type \u2018{0}\u2019.
+UnparsableStringForClass_3        = Text \u201c{1}\u201d can not be parsed as an object of type \u2018{0}\u2019, because of the \u201c{2}\u201d characters.
+UnspecifiedFormatForClass_1       = No format is specified for objects of class \u2018{0}\u2019.
+UnsupportedImplementation_1       = Can not handle instances of \u2018{0}\u2019 because arbitrary implementations are not yet supported.
+UnsupportedOperation_1            = The \u2018{0}\u2019 operation is unsupported.
+UnsupportedType_1                 = The \u2018{0}\u2019 type is unsupported.
+UnsupportedVersion_1              = Version {0} is not supported.
+ValueAlreadyDefined_1             = A value is already defined for \u201c{0}\u201d.
+ValueNotGreaterThanZero_2         = Value \u2018{0}\u2019={1} is invalid. Expected a number greater than 0.
+ValueOutOfRange_4                 = Value \u2018{0}\u2019={3} is invalid. Expected a value in the [{1} \u2026 {2}] range.

Modified: sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties?rev=1544697&r1=1544696&r2=1544697&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties [ISO-8859-1] (original)
+++ sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties [ISO-8859-1] Fri Nov 22 22:17:08 2013
@@ -14,131 +14,135 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-CanNotAddToExclusiveSet_2       = Aucun \u00e9l\u00e9ment ne peut \u00eatre ajout\u00e9 \u00e0 cet ensemble car les propri\u00e9t\u00e9s \u2018{0}\u2019 et \u2018{1}\u2019 sont mutuellement exclusives.
-CanNotConnectTo_1               = Ne peut pas se connecter \u00e0 \u201c{0}\u201d.
-CanNotConvertFromType_2         = Ne peut pas convertir du type \u2018{0}\u2019 vers le type \u2018{1}\u2019.
-CanNotConvertValue_2            = La valeur \u201c{0}\u201d ne peut pas \u00eatre convertie vers le type \u2018{1}\u2019.
-CanNotComputeDerivative         = La d\u00e9riv\u00e9 ne peut pas \u00eatre calcul\u00e9e.
-CanNotInstantiate_1             = Ne peut pas cr\u00e9er un objet de type \u2018{0}\u2019.
-CanNotMapAxisToDirection_2      = Aucun axe de \u201c{0}\u201d n\u2019a pu \u00eatre associ\u00e9 \u00e0 la direction \u201c{1}\u201d.
-CanNotOpen_1                    = Ne peut pas ouvrir \u201c{0}\u201d.
-CanNotParseFile_2               = Ne peut pas lire \u201c{1}\u201d comme un fichier au format {0}.
-CanNotRead_1                    = Ne peut pas lire \u201c{0}\u201d.
-CanNotRepresentInFormat_2       = Ne peut pas repr\u00e9senter \u201c{1}\u201d dans le format {0}.
-CanNotSetPropertyValue_1        = Ne peut pas d\u00e9finir une valeur pour la propri\u00e9t\u00e9 \u201c{0}\u201d.
-ClassNotFinal_1                 = La classe \u2018{0}\u2019 n\u2019est pas finale.
-CloneNotSupported_1             = Un objet de type \u2018{0}\u2019 ne peut pas \u00eatre clon\u00e9.
-ColinearAxisDirections_2        = Les directions d\u2019axes {0} et {1} sont colin\u00e9aires.
-DeadThread_1                    = La t\u00e2che \u201c{0}\u201d est morte.
-DuplicatedElement_1             = L\u2019\u00e9lement \u201c{0}\u201d est dupliqu\u00e9.
-DuplicatedIdentifier_1          = L\u2019identifiant \u201c{0}\u201d est dupliqu\u00e9.
-DuplicatedOption_1              = L\u2019option \u201c{0}\u201d est dupliqu\u00e9e.
-ElementAlreadyPresent_1         = L\u2019\u00e9lement \u201c{0}\u201d est d\u00e9j\u00e0 pr\u00e9sent.
-EmptyArgument_1                 = L\u2019argument \u2018{0}\u2019 ne doit pas \u00eatre vide.
-EmptyDictionary                 = Le dictionnaire doit contenir au moins une entr\u00e9e.
-EmptyEnvelope2D                 = L\u2019enveloppe doit avoir au moins deux dimensions et ne pas \u00eatre vide.
-EmptyProperty_1                 = La propri\u00e9t\u00e9 nomm\u00e9e \u201c{0}\u201d ne doit pas \u00eatre vide.
-ExcessiveArgumentSize_3         = L\u2019argument \u2018{0}\u2019 ne peut pas contenir plus de {1} \u00e9l\u00e9ments. Un nombre de {2} est excessif.
-ExcessiveListSize_2             = Une taille de {1} \u00e9l\u00e9ments est excessive pour la liste \u201c{0}\u201d.
-ForbiddenAttribute_2            = L\u2019attribut \u201c{0}\u201d n\u2019est pas autoris\u00e9 pour un objet de type \u2018{1}\u2019.
-IllegalArgumentClass_2          = L\u2019argument \u2018{0}\u2019 ne peut pas \u00eatre de type \u2018{1}\u2019.
-IllegalArgumentClass_3          = L\u2019argument \u2018{0}\u2019 ne peut pas \u00eatre de type \u2018{2}\u2019. Une instance de \u2018{1}\u2019 ou d\u2019un type d\u00e9riv\u00e9 \u00e9tait attendue.
-IllegalArgumentField_4          = L\u2019argument \u2018{0}\u2019 n\u2019accepte pas la valeur \u201c{1}\u201d parce que le champs \u2018{2}\u2019 ne peut pas prendre la valeur \u201c{3}\u201d.
-IllegalArgumentValue_2          = L\u2019argument \u2018{0}\u2019 n\u2019accepte pas la valeur \u201c{1}\u201d.
-IllegalOptionValue_2            = L\u2019option \u2018{0}\u2019 n\u2019accepte pas la valeur \u201c{1}\u201d.
-IllegalBitsPattern_1            = Pattern de bits invalide: {0}.
-IllegalClass_2                  = La classe \u2018{1}\u2019 est ill\u00e9gale. Il doit s\u2019agir d\u2019une classe \u2018{0}\u2019 ou d\u00e9riv\u00e9e.
-IllegalFormatPatternForClass_2  = Le mod\u00e8le \u201c{1}\u201d ne peut pas \u00eatre appliqu\u00e9 au formatage d\u2019objets de type \u2018{0}\u2019.
-IllegalLanguageCode_1           = Le code de langue \u201c{0}\u201d n\u2019est pas reconnu.
-IllegalMemberType_2             = Le membre \u201c{0}\u201d ne peut pas \u00eatre associ\u00e9 au type \u201c{1}\u201d.
-IllegalOrdinateRange_3          = La plage de valeurs de coordonn\u00e9es [{1} \u2026 {2}] n\u2019est pas valide pour l\u2019axe \u201c{0}\u201d.
-IllegalPropertyClass_2          = La propri\u00e9t\u00e9 \u2018{0}\u2019 n\u2019accepte pas les valeurs de type \u2018{1}\u2019.
-IllegalRange_2                  = La plage [{0} \u2026 {1}] n\u2019est pas valide.
-IllegalUnicodeCodePoint_2       = La valeur {1} de \u201c{0}\u201d n\u2019est pas un code Unicode valide.
-IncompatiblePropertyValue_1     = La valeur de la propri\u00e9t\u00e9 \u201c{0}\u201d n\u2019est pas compatible.
-IncompatibleUnits_2             = Les unit\u00e9s \u201c{0}\u201d et \u201c{1}\u201d ne sont pas compatibles.
-InconsistentAttribute_2         = La valeur \u201c{1}\u201d de l\u2019attribut \u2018{0}\u2019 n\u2019est pas coh\u00e9rente avec celles des autres attributs.
-InconsistentTableColumns        = Les colonnes des tables ne sont pas coh\u00e9rentes.
-IdentifierAlreadyBound_1        = L\u2019identifiant \u201c{0}\u201d est d\u00e9j\u00e0 associ\u00e9 \u00e0 un autre objet.
-IndexOutOfBounds_1              = L\u2019index {0} est en dehors des limites permises.
-IndicesOutOfBounds_2            = Les index ({0}, {1}) sont en dehors des limites permises.
-InfiniteArgumentValue_1         = L\u2019argument \u2018{0}\u2019 ne peut pas prendre une valeur infinie.
-InfiniteRecursivity             = R\u00e9cursivit\u00e9 infinie.
-InsufficientArgumentSize_3      = L\u2019argument \u2018{0}\u2019 doit contenir au moins {1} \u00e9l\u00e9ments. Un nombre de {2} est insuffisant.
-KeyCollision_1                  = Une valeur diff\u00e9rente est d\u00e9j\u00e0 associ\u00e9e \u00e0 la cl\u00e9 \u201c{0}\u201d.
-MandatoryAttribute_2            = L\u2019attribut \u201c{0}\u201d est obligatoire pour un objet de type \u2018{1}\u2019.
-MismatchedArrayLengths          = Les dimensions des tableaux ne correspondent pas.
-MismatchedCRS                   = Le syst\u00e8me de r\u00e9f\u00e9rence des coordonn\u00e9es doit \u00eatre le m\u00eame pour tous les objets.
-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}.
-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.
-MissingValueForProperty_1       = Aucune valeur n\u2019a \u00e9t\u00e9 d\u00e9finie pour la propri\u00e9t\u00e9 \u201c{0}\u201d.
-MissingValueInColumn_1          = Il manque une valeur dans la colonne \u201c{0}\u201d.
-MutuallyExclusiveOptions_2      = Les options \u201c{0}\u201d et \u201c{1}\u201d sont mutuellement exclusives.
-NegativeArgument_2              = L\u2019argument \u2018{0}\u2019 ne doit pas \u00eatre n\u00e9gatif. La valeur donn\u00e9e \u00e9tait {1}.
-NegativeArrayLength_1           = Ne peut pas cr\u00e9er un tableau \u201c{0}\u201d de longueur n\u00e9gative.
-NoConvergenceForPoints_2        = Le calcul ne converge pas pour les points {0} et {1}.
-NodeChildOfItself_1             = Le n\u0153ud \u201c{0}\u201d ne peut pas \u00eatre un enfant de lui-m\u00eame.
-NodeHasAnotherParent_1          = Le n\u0153ud \u201c{0}\u201d a d\u00e9j\u00e0 un autre parent.
-NodeHasNoParent_1               = Le n\u0153ud \u201c{0}\u201d n\u2019a pas de parent.
-NodeIsLeaf_1                    = Le n\u0153ud \u201c{0}\u201d est une feuille.
-NodeNotFound_1                  = Aucun n\u0153ud \u201c{0}\u201d n\u2019a \u00e9t\u00e9 trouv\u00e9.
-NonEquilibratedParenthesis_2    = Il manque une parenth\u00e8se \u2018{1}\u2019 dans \u201c{0}\u201d.
-NonInvertibleConversion         = La conversion n\u2019est pas inversible.
-NonInvertibleMatrix_2           = Matrice {0}\u00d7{1} non inversible.
-NonInvertibleTransform          = La transformation n\u2019est pas inversible.
-NonAngularUnit_1                = \u201c{0}\u201d n\u2019est pas une unit\u00e9 d\u2019angles.
-NonLinearUnit_1                 = \u201c{0}\u201d n\u2019est pas une unit\u00e9 de longueurs.
-NonScaleUnit_1                  = \u201c{0}\u201d n\u2019est pas une unit\u00e9 d\u2019\u00e9chelles.
-NonTemporalUnit_1               = \u201c{0}\u201d n\u2019est pas une unit\u00e9 de temps.
-NonUniformScale                 = L\u2019\u00e9chelle n\u2019est pas uniforme.
-NotAnAffineTransform            = La transformation n\u2019est pas affine.
-NotANumber_1                    = L\u2019argument \u2018{0}\u2019 ne doit pas \u00eatre NaN (Not-a-Number).
-NotAPrimitiveWrapper_1          = La classe \u2018{0}\u2019 n\u2019est pas un adaptateur d\u2019un type primitif.
-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.
-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.
-NullArgument_1                  = L\u2019argument \u2018{0}\u2019 ne doit pas \u00eatre nul.
-NullMapKey                      = La cl\u00e9 nulle n\u2019est pas autoris\u00e9e dans ce dictionnaire.
-NullMapValue                    = Les valeurs nulles ne sont pas autoris\u00e9es dans ce dictionnaire.
-OddArrayLength_1                = La longueur du tableau est {0}, alors qu\u2019on attendait une longueur paire.
-RecursiveCreateCallForKey_1     = Appel r\u00e9cursif lors de la cr\u00e9ation d\u2019un objet pour la cl\u00e9 \u201c{0}\u201d.
-RequireDecimalSeparator         = Un s\u00e9parateur d\u00e9cimal est requis.
-SingularMatrix                  = La matrice est singuli\u00e8re.
-StalledThread_1                 = La t\u00e2che \u201c{0}\u201d semble bloqu\u00e9e.
-StreamIsForwardOnly_1           = Ne peut pas reculer dans le flux de donn\u00e9es \u201c{0}\u201d.
-TooFewArguments_2               = Au moins {0} argument{0,choice,1# \u00e9tait attendu|2#s \u00e9taient attendus}, mais seulement {1} {1,choice,1#a \u00e9t\u00e9 sp\u00e9cifi\u00e9|2#ont \u00e9t\u00e9 sp\u00e9cifi\u00e9s}.
-TooManyArguments_2              = Au plus {0} argument{0,choice,1# \u00e9tait attendu|2#s \u00e9taient attendus}, mais {1} {1,choice,1#a \u00e9t\u00e9 sp\u00e9cifi\u00e9|2#ont \u00e9t\u00e9 sp\u00e9cifi\u00e9s}.
-UndefinedOrderingForElements_2  = L\u2019ordre entre les \u00e9l\u00e9ments \u201c{0}\u201d et \u201c{1}\u201d n\u2019est pas d\u00e9fini.
-UnexpectedArrayLength_2         = Un tableau de longueur {0} \u00e9tait attendu, mais le tableau re\u00e7u est de longueur {1}.
-UnexpectedChange_1              = Changement inattendu dans \u2018{0}\u2019.
-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}.
-UnknownCommand_1                = La commande \u201c{0}\u201d n\u2019est pas reconnue.
-UnknownEnumValue_1              = Valeur d\u2019\u00e9num\u00e9ration inconnue: {0}.
-UnknownFormatFor_1              = Le format de \u201c{0}\u201d n\u2019est pas reconnu.
-UnknownOption_1                 = L\u2019option \u201c{0}\u201d n\u2019est pas reconnue.
-UnknownType_1                   = Le type \u2018{0}\u2019 n\u2019est pas reconnu dans ce contexte.
-UnknownTypeForProperty_1        = Le type de la propri\u00e9t\u00e9 \u201c{0}\u201d est inconnu.
-UnmodifiableAffineTransform     = Cette transformation affine n\u2019est pas modifiable.
-UnmodifiableCellValue_2         = La cellule \u00e0 la colonne \u201c{1}\u201d de la ligne \u201c{0}\u201d n\u2019est pas modifiable.
-UnmodifiableGeometry            = Cette g\u00e9om\u00e9trie n\u2019est pas modifiable.
-UnmodifiableMetadata            = Cette m\u00e9ta-donn\u00e9e n\u2019est pas modifiable.
-UnmodifiableObject_1            = L\u2019objet \u2018{0}\u2019 n\u2019est pas modifiable.
-UnspecifiedFormatForClass_1     = Aucun format n\u2019est sp\u00e9cifi\u00e9 pour les objets de classe \u2018{0}\u2019.
-UnparsableStringForClass_2      = Le texte \u201c{1}\u201d n\u2019est pas reconnu comme un objet de type \u2018{0}\u2019.
-UnparsableStringForClass_3      = Le texte \u201c{1}\u201d n\u2019est pas reconnu comme un objet de type \u2018{0}\u2019, \u00e0 cause des caract\u00e8res \u201c{2}\u201d.
-UnsupportedImplementation_1     = Les instances de \u2018{0}\u2019 ne peuvent pas \u00eatre g\u00e9r\u00e9es parce que les impl\u00e9mentations arbitraires ne sont pas encore support\u00e9es.
-UnsupportedOperation_1          = L\u2019op\u00e9ration \u2018{0}\u2019 n\u2019est pas support\u00e9e.
-UnsupportedType_1               = Le type \u2018{0}\u2019 n\u2019est pas support\u00e9.
-UnsupportedVersion_1            = La version {0} n\u2019est pas support\u00e9e.
-ValueAlreadyDefined_1           = Une valeur est d\u00e9j\u00e0 d\u00e9finie pour \u201c{0}\u201d.
-ValueNotGreaterThanZero_2       = La valeur \u2018{0}\u2019={1} n\u2019est pas valide. On attendait un nombre positif non-nul.
-ValueOutOfRange_4               = La valeur \u2018{0}\u2019={3} est invalide. Une valeur dans la plage [{1} \u2026 {2}] \u00e9tait attendue.
+CanNotAddToExclusiveSet_2         = Aucun \u00e9l\u00e9ment ne peut \u00eatre ajout\u00e9 \u00e0 cet ensemble car les propri\u00e9t\u00e9s \u2018{0}\u2019 et \u2018{1}\u2019 sont mutuellement exclusives.
+CanNotConnectTo_1                 = Ne peut pas se connecter \u00e0 \u201c{0}\u201d.
+CanNotConvertFromType_2           = Ne peut pas convertir du type \u2018{0}\u2019 vers le type \u2018{1}\u2019.
+CanNotConvertValue_2              = La valeur \u201c{0}\u201d ne peut pas \u00eatre convertie vers le type \u2018{1}\u2019.
+CanNotComputeDerivative           = La d\u00e9riv\u00e9 ne peut pas \u00eatre calcul\u00e9e.
+CanNotInstantiate_1               = Ne peut pas cr\u00e9er un objet de type \u2018{0}\u2019.
+CanNotMapAxisToDirection_2        = Aucun axe de \u201c{0}\u201d n\u2019a pu \u00eatre associ\u00e9 \u00e0 la direction \u201c{1}\u201d.
+CanNotOpen_1                      = Ne peut pas ouvrir \u201c{0}\u201d.
+CanNotParseFile_2                 = Ne peut pas lire \u201c{1}\u201d comme un fichier au format {0}.
+CanNotRead_1                      = Ne peut pas lire \u201c{0}\u201d.
+CanNotRepresentInFormat_2         = Ne peut pas repr\u00e9senter \u201c{1}\u201d dans le format {0}.
+CanNotSetPropertyValue_1          = Ne peut pas d\u00e9finir une valeur pour la propri\u00e9t\u00e9 \u201c{0}\u201d.
+ClassNotFinal_1                   = La classe \u2018{0}\u2019 n\u2019est pas finale.
+CloneNotSupported_1               = Un objet de type \u2018{0}\u2019 ne peut pas \u00eatre clon\u00e9.
+ColinearAxisDirections_2          = Les directions d\u2019axes {0} et {1} sont colin\u00e9aires.
+DeadThread_1                      = La t\u00e2che \u201c{0}\u201d est morte.
+DuplicatedElement_1               = L\u2019\u00e9lement \u201c{0}\u201d est dupliqu\u00e9.
+DuplicatedIdentifier_1            = L\u2019identifiant \u201c{0}\u201d est dupliqu\u00e9.
+DuplicatedOption_1                = L\u2019option \u201c{0}\u201d est dupliqu\u00e9e.
+ElementAlreadyPresent_1           = L\u2019\u00e9lement \u201c{0}\u201d est d\u00e9j\u00e0 pr\u00e9sent.
+EmptyArgument_1                   = L\u2019argument \u2018{0}\u2019 ne doit pas \u00eatre vide.
+EmptyDictionary                   = Le dictionnaire doit contenir au moins une entr\u00e9e.
+EmptyEnvelope2D                   = L\u2019enveloppe doit avoir au moins deux dimensions et ne pas \u00eatre vide.
+EmptyProperty_1                   = La propri\u00e9t\u00e9 nomm\u00e9e \u201c{0}\u201d ne doit pas \u00eatre vide.
+ExcessiveArgumentSize_3           = L\u2019argument \u2018{0}\u2019 ne peut pas contenir plus de {1} \u00e9l\u00e9ments. Un nombre de {2} est excessif.
+ExcessiveListSize_2               = Une taille de {1} \u00e9l\u00e9ments est excessive pour la liste \u201c{0}\u201d.
+ForbiddenAttribute_2              = L\u2019attribut \u201c{0}\u201d n\u2019est pas autoris\u00e9 pour un objet de type \u2018{1}\u2019.
+IllegalArgumentClass_2            = L\u2019argument \u2018{0}\u2019 ne peut pas \u00eatre de type \u2018{1}\u2019.
+IllegalArgumentClass_3            = L\u2019argument \u2018{0}\u2019 ne peut pas \u00eatre de type \u2018{2}\u2019. Une instance de \u2018{1}\u2019 ou d\u2019un type d\u00e9riv\u00e9 \u00e9tait attendue.
+IllegalArgumentField_4            = L\u2019argument \u2018{0}\u2019 n\u2019accepte pas la valeur \u201c{1}\u201d parce que le champs \u2018{2}\u2019 ne peut pas prendre la valeur \u201c{3}\u201d.
+IllegalArgumentValue_2            = L\u2019argument \u2018{0}\u2019 n\u2019accepte pas la valeur \u201c{1}\u201d.
+IllegalAxisDirection_2            = Les syst\u00e8mes de coordonn\u00e9es de classe \u2018{0}\u2019 ne peuvent pas avoir d\u2019axe dans la direction \u201c{1}\u201d.
+IllegalOptionValue_2              = L\u2019option \u2018{0}\u2019 n\u2019accepte pas la valeur \u201c{1}\u201d.
+IllegalBitsPattern_1              = Pattern de bits invalide: {0}.
+IllegalClass_2                    = La classe \u2018{1}\u2019 est ill\u00e9gale. Il doit s\u2019agir d\u2019une classe \u2018{0}\u2019 ou d\u00e9riv\u00e9e.
+IllegalFormatPatternForClass_2    = Le mod\u00e8le \u201c{1}\u201d ne peut pas \u00eatre appliqu\u00e9 au formatage d\u2019objets de type \u2018{0}\u2019.
+IllegalLanguageCode_1             = Le code de langue \u201c{0}\u201d n\u2019est pas reconnu.
+IllegalMemberType_2               = Le membre \u201c{0}\u201d ne peut pas \u00eatre associ\u00e9 au type \u201c{1}\u201d.
+IllegalOrdinateRange_3            = La plage de valeurs de coordonn\u00e9es [{1} \u2026 {2}] n\u2019est pas valide pour l\u2019axe \u201c{0}\u201d.
+IllegalPropertyClass_2            = La propri\u00e9t\u00e9 \u2018{0}\u2019 n\u2019accepte pas les valeurs de type \u2018{1}\u2019.
+IllegalRange_2                    = La plage [{0} \u2026 {1}] n\u2019est pas valide.
+IllegalUnicodeCodePoint_2         = La valeur {1} de \u201c{0}\u201d n\u2019est pas un code Unicode valide.
+IllegalUnitFor_2                  = L\u2019unit\u00e9 de mesure \u201c{1}\u201d n\u2019est pas valide pour les valeurs de \u201c{0}\u201d.
+IncompatibleCoordinateSystemTypes = Types de syst\u00e8mes de coordonn\u00e9es incompatibles.
+IncompatiblePropertyValue_1       = La valeur de la propri\u00e9t\u00e9 \u201c{0}\u201d n\u2019est pas compatible.
+IncompatibleUnits_2               = Les unit\u00e9s \u201c{0}\u201d et \u201c{1}\u201d ne sont pas compatibles.
+InconsistentAttribute_2           = La valeur \u201c{1}\u201d de l\u2019attribut \u2018{0}\u2019 n\u2019est pas coh\u00e9rente avec celles des autres attributs.
+InconsistentTableColumns          = Les colonnes des tables ne sont pas coh\u00e9rentes.
+IdentifierAlreadyBound_1          = L\u2019identifiant \u201c{0}\u201d est d\u00e9j\u00e0 associ\u00e9 \u00e0 un autre objet.
+IndexOutOfBounds_1                = L\u2019index {0} est en dehors des limites permises.
+IndicesOutOfBounds_2              = Les index ({0}, {1}) sont en dehors des limites permises.
+InfiniteArgumentValue_1           = L\u2019argument \u2018{0}\u2019 ne peut pas prendre une valeur infinie.
+InfiniteRecursivity               = R\u00e9cursivit\u00e9 infinie.
+InsufficientArgumentSize_3        = L\u2019argument \u2018{0}\u2019 doit contenir au moins {1} \u00e9l\u00e9ments. Un nombre de {2} est insuffisant.
+KeyCollision_1                    = Une valeur diff\u00e9rente est d\u00e9j\u00e0 associ\u00e9e \u00e0 la cl\u00e9 \u201c{0}\u201d.
+MandatoryAttribute_2              = L\u2019attribut \u201c{0}\u201d est obligatoire pour un objet de type \u2018{1}\u2019.
+MismatchedArrayLengths            = Les dimensions des tableaux ne correspondent pas.
+MismatchedCRS                     = Le syst\u00e8me de r\u00e9f\u00e9rence des coordonn\u00e9es doit \u00eatre le m\u00eame pour tous les objets.
+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}.
+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.
+MissingValueForProperty_1         = Aucune valeur n\u2019a \u00e9t\u00e9 d\u00e9finie pour la propri\u00e9t\u00e9 \u201c{0}\u201d.
+MissingValueInColumn_1            = Il manque une valeur dans la colonne \u201c{0}\u201d.
+MutuallyExclusiveOptions_2        = Les options \u201c{0}\u201d et \u201c{1}\u201d sont mutuellement exclusives.
+NegativeArgument_2                = L\u2019argument \u2018{0}\u2019 ne doit pas \u00eatre n\u00e9gatif. La valeur donn\u00e9e \u00e9tait {1}.
+NegativeArrayLength_1             = Ne peut pas cr\u00e9er un tableau \u201c{0}\u201d de longueur n\u00e9gative.
+NoConvergenceForPoints_2          = Le calcul ne converge pas pour les points {0} et {1}.
+NodeChildOfItself_1               = Le n\u0153ud \u201c{0}\u201d ne peut pas \u00eatre un enfant de lui-m\u00eame.
+NodeHasAnotherParent_1            = Le n\u0153ud \u201c{0}\u201d a d\u00e9j\u00e0 un autre parent.
+NodeHasNoParent_1                 = Le n\u0153ud \u201c{0}\u201d n\u2019a pas de parent.
+NodeIsLeaf_1                      = Le n\u0153ud \u201c{0}\u201d est une feuille.
+NodeNotFound_1                    = Aucun n\u0153ud \u201c{0}\u201d n\u2019a \u00e9t\u00e9 trouv\u00e9.
+NonEquilibratedParenthesis_2      = Il manque une parenth\u00e8se \u2018{1}\u2019 dans \u201c{0}\u201d.
+NonInvertibleConversion           = La conversion n\u2019est pas inversible.
+NonInvertibleMatrix_2             = Matrice {0}\u00d7{1} non inversible.
+NonInvertibleTransform            = La transformation n\u2019est pas inversible.
+NonAngularUnit_1                  = \u201c{0}\u201d n\u2019est pas une unit\u00e9 d\u2019angles.
+NonLinearUnit_1                   = \u201c{0}\u201d n\u2019est pas une unit\u00e9 de longueurs.
+NonLinearUnitConversion_2         = La conversion des unit\u00e9s \u201c{0}\u201d vers \u201c{1}\u201d n\u2019est pas lin\u00e9aire.
+NonScaleUnit_1                    = \u201c{0}\u201d n\u2019est pas une unit\u00e9 d\u2019\u00e9chelles.
+NonTemporalUnit_1                 = \u201c{0}\u201d n\u2019est pas une unit\u00e9 de temps.
+NonUniformScale                   = L\u2019\u00e9chelle n\u2019est pas uniforme.
+NotAnAffineTransform              = La transformation n\u2019est pas affine.
+NotANumber_1                      = L\u2019argument \u2018{0}\u2019 ne doit pas \u00eatre NaN (Not-a-Number).
+NotAPrimitiveWrapper_1            = La classe \u2018{0}\u2019 n\u2019est pas un adaptateur d\u2019un type primitif.
+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.
+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.
+NullArgument_1                    = L\u2019argument \u2018{0}\u2019 ne doit pas \u00eatre nul.
+NullMapKey                        = La cl\u00e9 nulle n\u2019est pas autoris\u00e9e dans ce dictionnaire.
+NullMapValue                      = Les valeurs nulles ne sont pas autoris\u00e9es dans ce dictionnaire.
+OddArrayLength_1                  = La longueur du tableau est {0}, alors qu\u2019on attendait une longueur paire.
+RecursiveCreateCallForKey_1       = Appel r\u00e9cursif lors de la cr\u00e9ation d\u2019un objet pour la cl\u00e9 \u201c{0}\u201d.
+RequireDecimalSeparator           = Un s\u00e9parateur d\u00e9cimal est requis.
+SingularMatrix                    = La matrice est singuli\u00e8re.
+StalledThread_1                   = La t\u00e2che \u201c{0}\u201d semble bloqu\u00e9e.
+StreamIsForwardOnly_1             = Ne peut pas reculer dans le flux de donn\u00e9es \u201c{0}\u201d.
+TooFewArguments_2                 = Au moins {0} argument{0,choice,1# \u00e9tait attendu|2#s \u00e9taient attendus}, mais seulement {1} {1,choice,1#a \u00e9t\u00e9 sp\u00e9cifi\u00e9|2#ont \u00e9t\u00e9 sp\u00e9cifi\u00e9s}.
+TooManyArguments_2                = Au plus {0} argument{0,choice,1# \u00e9tait attendu|2#s \u00e9taient attendus}, mais {1} {1,choice,1#a \u00e9t\u00e9 sp\u00e9cifi\u00e9|2#ont \u00e9t\u00e9 sp\u00e9cifi\u00e9s}.
+UndefinedOrderingForElements_2    = L\u2019ordre entre les \u00e9l\u00e9ments \u201c{0}\u201d et \u201c{1}\u201d n\u2019est pas d\u00e9fini.
+UnexpectedArrayLength_2           = Un tableau de longueur {0} \u00e9tait attendu, mais le tableau re\u00e7u est de longueur {1}.
+UnexpectedChange_1                = Changement inattendu dans \u2018{0}\u2019.
+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}.
+UnknownCommand_1                  = La commande \u201c{0}\u201d n\u2019est pas reconnue.
+UnknownEnumValue_1                = Valeur d\u2019\u00e9num\u00e9ration inconnue: {0}.
+UnknownFormatFor_1                = Le format de \u201c{0}\u201d n\u2019est pas reconnu.
+UnknownOption_1                   = L\u2019option \u201c{0}\u201d n\u2019est pas reconnue.
+UnknownType_1                     = Le type \u2018{0}\u2019 n\u2019est pas reconnu dans ce contexte.
+UnknownTypeForProperty_1          = Le type de la propri\u00e9t\u00e9 \u201c{0}\u201d est inconnu.
+UnmodifiableAffineTransform       = Cette transformation affine n\u2019est pas modifiable.
+UnmodifiableCellValue_2           = La cellule \u00e0 la colonne \u201c{1}\u201d de la ligne \u201c{0}\u201d n\u2019est pas modifiable.
+UnmodifiableGeometry              = Cette g\u00e9om\u00e9trie n\u2019est pas modifiable.
+UnmodifiableMetadata              = Cette m\u00e9ta-donn\u00e9e n\u2019est pas modifiable.
+UnmodifiableObject_1              = L\u2019objet \u2018{0}\u2019 n\u2019est pas modifiable.
+UnspecifiedFormatForClass_1       = Aucun format n\u2019est sp\u00e9cifi\u00e9 pour les objets de classe \u2018{0}\u2019.
+UnparsableStringForClass_2        = Le texte \u201c{1}\u201d n\u2019est pas reconnu comme un objet de type \u2018{0}\u2019.
+UnparsableStringForClass_3        = Le texte \u201c{1}\u201d n\u2019est pas reconnu comme un objet de type \u2018{0}\u2019, \u00e0 cause des caract\u00e8res \u201c{2}\u201d.
+UnsupportedImplementation_1       = Les instances de \u2018{0}\u2019 ne peuvent pas \u00eatre g\u00e9r\u00e9es parce que les impl\u00e9mentations arbitraires ne sont pas encore support\u00e9es.
+UnsupportedOperation_1            = L\u2019op\u00e9ration \u2018{0}\u2019 n\u2019est pas support\u00e9e.
+UnsupportedType_1                 = Le type \u2018{0}\u2019 n\u2019est pas support\u00e9.
+UnsupportedVersion_1              = La version {0} n\u2019est pas support\u00e9e.
+ValueAlreadyDefined_1             = Une valeur est d\u00e9j\u00e0 d\u00e9finie pour \u201c{0}\u201d.
+ValueNotGreaterThanZero_2         = La valeur \u2018{0}\u2019={1} n\u2019est pas valide. On attendait un nombre positif non-nul.
+ValueOutOfRange_4                 = La valeur \u2018{0}\u2019={3} est invalide. Une valeur dans la plage [{1} \u2026 {2}] \u00e9tait attendue.

Modified: sis/branches/JDK7/core/sis-utility/src/test/java/org/apache/sis/test/suite/UtilityTestSuite.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-utility/src/test/java/org/apache/sis/test/suite/UtilityTestSuite.java?rev=1544697&r1=1544696&r2=1544697&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-utility/src/test/java/org/apache/sis/test/suite/UtilityTestSuite.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-utility/src/test/java/org/apache/sis/test/suite/UtilityTestSuite.java [UTF-8] Fri Nov 22 22:17:08 2013
@@ -51,6 +51,7 @@ import org.junit.BeforeClass;
     org.apache.sis.util.LocalesTest.class,
     org.apache.sis.util.resources.LoaderTest.class,
     org.apache.sis.util.resources.IndexedResourceBundleTest.class,
+    org.apache.sis.util.ArgumentChecksTest.class, // Uses resources.
     org.apache.sis.util.logging.PerformanceLevelTest.class,
     org.apache.sis.util.logging.WarningListenersTest.class,
     org.apache.sis.util.logging.MonolineFormatterTest.class,

Added: sis/branches/JDK7/core/sis-utility/src/test/java/org/apache/sis/util/ArgumentChecksTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-utility/src/test/java/org/apache/sis/util/ArgumentChecksTest.java?rev=1544697&view=auto
==============================================================================
--- sis/branches/JDK7/core/sis-utility/src/test/java/org/apache/sis/util/ArgumentChecksTest.java (added)
+++ sis/branches/JDK7/core/sis-utility/src/test/java/org/apache/sis/util/ArgumentChecksTest.java [UTF-8] Fri Nov 22 22:17:08 2013
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sis.util;
+
+import org.apache.sis.test.DependsOn;
+import org.apache.sis.test.TestCase;
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+
+/**
+ * Tests the {@link ArgumentChecks} static methods.
+ *
+ * @author  Martin Desruisseaux (Geomatys)
+ * @since   0.4
+ * @version 0.4
+ * @module
+ */
+@DependsOn(org.apache.sis.util.resources.IndexedResourceBundleTest.class)
+public final strictfp class ArgumentChecksTest extends TestCase {
+    /**
+     * Tests {@link ArgumentChecks#ensureNonNullElement(String, int, Object)}.
+     */
+    @Test
+    public void testEnsureNonNullElement() {
+        try {
+            ArgumentChecks.ensureNonNullElement("axes", 2, null);
+            fail("Expected a NullArgumentException.");
+        } catch (NullArgumentException e) {
+            assertTrue(e.getMessage().contains("axes[2]"));
+        }
+        try {
+            ArgumentChecks.ensureNonNullElement("axes[#].unit", 2, null);
+            fail("Expected a NullArgumentException.");
+        } catch (NullArgumentException e) {
+            assertTrue(e.getMessage().contains("axes[2].unit"));
+        }
+    }
+}

Propchange: sis/branches/JDK7/core/sis-utility/src/test/java/org/apache/sis/util/ArgumentChecksTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/branches/JDK7/core/sis-utility/src/test/java/org/apache/sis/util/ArgumentChecksTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain;charset=UTF-8



Mime
View raw message