sis-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From desruisse...@apache.org
Subject svn commit: r1422213 - in /sis/branches/JDK7: sis-referencing/ sis-referencing/src/main/java/org/apache/sis/geometry/ sis-utility/src/main/java/org/apache/sis/util/resources/
Date Sat, 15 Dec 2012 10:02:25 GMT
Author: desruisseaux
Date: Sat Dec 15 10:02:23 2012
New Revision: 1422213

URL: http://svn.apache.org/viewvc?rev=1422213&view=rev
Log:
Initial port of AbstractDirectPosition.

Added:
    sis/branches/JDK7/sis-referencing/src/main/java/org/apache/sis/geometry/
    sis/branches/JDK7/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractDirectPosition.java
  (with props)
    sis/branches/JDK7/sis-referencing/src/main/java/org/apache/sis/geometry/package-info.java
  (with props)
Modified:
    sis/branches/JDK7/sis-referencing/pom.xml
    sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java
    sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties
    sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties

Modified: sis/branches/JDK7/sis-referencing/pom.xml
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-referencing/pom.xml?rev=1422213&r1=1422212&r2=1422213&view=diff
==============================================================================
--- sis/branches/JDK7/sis-referencing/pom.xml (original)
+++ sis/branches/JDK7/sis-referencing/pom.xml Sat Dec 15 10:02:23 2012
@@ -33,11 +33,32 @@
 
   <artifactId>sis-referencing</artifactId>
   <packaging>bundle</packaging>
-  <name>Apache SIS core</name>
+  <name>Apache SIS referencing</name>
   <url>http://incubator.apache.org/sis/</url>
 
+
+  <!-- ===========================================================
+           Dependencies
+       =========================================================== -->
   <dependencies>
     <dependency>
+      <groupId>org.apache.sis</groupId>
+      <artifactId>sis-utility</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.opengis</groupId>
+      <artifactId>geoapi-pending</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.opengis</groupId>
+      <artifactId>geoapi-conformance</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>net.jcip</groupId>
+      <artifactId>jcip-annotations</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.geonames</groupId>
       <artifactId>georss-rome</artifactId>
     </dependency>

Added: sis/branches/JDK7/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractDirectPosition.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractDirectPosition.java?rev=1422213&view=auto
==============================================================================
--- sis/branches/JDK7/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractDirectPosition.java
(added)
+++ sis/branches/JDK7/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractDirectPosition.java
Sat Dec 15 10:02:23 2012
@@ -0,0 +1,348 @@
+/*
+ * 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.geometry;
+
+import java.util.Arrays;
+import java.util.Objects;
+import org.opengis.geometry.DirectPosition;
+import org.opengis.geometry.MismatchedDimensionException;
+import org.opengis.geometry.MismatchedReferenceSystemException;
+import org.opengis.referencing.crs.CoordinateReferenceSystem;
+import org.apache.sis.util.Utilities;
+import org.apache.sis.util.CharSequences;
+import org.apache.sis.util.resources.Errors;
+
+import static java.lang.Double.doubleToLongBits;
+import static org.apache.sis.util.Arrays.resize;
+import static org.apache.sis.util.StringBuilders.trimFractionalPart;
+
+
+/**
+ * Base class for {@linkplain DirectPosition direct position} implementations.
+ * This base class provides default implementations for {@link #toString()},
+ * {@link #equals(Object)} and {@link #hashCode()} methods.
+ *
+ * <p>This class do not holds any state. The decision to implement {@link java.io.Serializable}
+ * or {@link Cloneable} interfaces is left to implementors.</p>
+ *
+ * @author Martin Desruisseaux (IRD, Geomatys)
+ * @since   0.3 (derived from geotk-2.4)
+ * @version 0.3
+ * @module
+ */
+public abstract class AbstractDirectPosition implements DirectPosition {
+    /**
+     * Constructs a direct position.
+     */
+    protected AbstractDirectPosition() {
+    }
+
+    /**
+     * Returns always {@code this}, the direct position for this
+     * {@linkplain org.opengis.geometry.coordinate.Position position}.
+     */
+    @Override
+    public DirectPosition getDirectPosition() {
+        return this;
+    }
+
+    /**
+     * Sets this direct position to the given position. If the given position is
+     * {@code null}, then all ordinate values are set to {@link Double#NaN NaN}.
+     *
+     * <p>If this position and the given position have a non-null CRS, then the default
implementation
+     * requires the CRS to be {@linkplain Utilities#equalsIgnoreMetadata equals (ignoring
metadata)},
+     * otherwise a {@link MismatchedReferenceSystemException} is thrown. However subclass
may choose
+     * to assign the CRS of this position to the CRS of the given position.</p>
+     *
+     * @param  position The new position, or {@code null}.
+     * @throws MismatchedDimensionException If the given position doesn't have the expected
dimension.
+     * @throws MismatchedReferenceSystemException If the given position doesn't use the expected
CRS.
+     */
+    public void setLocation(final DirectPosition position)
+            throws MismatchedDimensionException, MismatchedReferenceSystemException
+    {
+        final int dimension = getDimension();
+        if (position != null) {
+            ensureDimensionMatch("position", position.getDimension(), dimension);
+            final CoordinateReferenceSystem crs = getCoordinateReferenceSystem();
+            if (crs != null) {
+                final CoordinateReferenceSystem other = position.getCoordinateReferenceSystem();
+                if (other != null && !Utilities.equalsIgnoreMetadata(crs, other))
{
+                    throw new MismatchedReferenceSystemException(Errors.format(Errors.Keys.MismatchedCRS));
+                }
+            }
+            for (int i=0; i<dimension; i++) {
+                setOrdinate(i, position.getOrdinate(i));
+            }
+        } else {
+            for (int i=0; i<dimension; i++) {
+                setOrdinate(i, Double.NaN);
+            }
+        }
+    }
+
+    /**
+     * Returns a sequence of numbers that hold the coordinate of this position in its
+     * reference system.
+     *
+     * @return The coordinates.
+     */
+    @Override
+    public double[] getCoordinate() {
+        final double[] ordinates = new double[getDimension()];
+        for (int i=0; i<ordinates.length; i++) {
+            ordinates[i] = getOrdinate(i);
+        }
+        return ordinates;
+    }
+
+    /**
+     * Ensures that the given CRS, if non-null, has the expected number of dimensions.
+     *
+     * @param  crs The coordinate reference system to check, or {@code null}.
+     * @param  expected The expected number of dimensions.
+     * @throws MismatchedDimensionException if the CRS dimension is not valid.
+     */
+    static void ensureDimensionMatch(final CoordinateReferenceSystem crs,
+            final int expected) throws MismatchedDimensionException
+    {
+        if (crs != null) {
+            final int dimension = crs.getCoordinateSystem().getDimension();
+            if (dimension != expected) {
+                throw new MismatchedDimensionException(Errors.format(Errors.Keys.MismatchedDimension_3,
+                          crs.getName().getCode(), dimension, expected));
+            }
+        }
+    }
+
+    /**
+     * Ensures that the given number of dimensions is equals to the expected value.
+     *
+     * @param  name The name of the argument to check.
+     * @param  dimension The object dimension.
+     * @param  expectedDimension The Expected dimension for the object.
+     * @throws MismatchedDimensionException if the object doesn't have the expected dimension.
+     */
+    static void ensureDimensionMatch(final String name, final int dimension,
+            final int expectedDimension) throws MismatchedDimensionException
+    {
+        if (dimension != expectedDimension) {
+            throw new MismatchedDimensionException(Errors.format(Errors.Keys.MismatchedDimension_3,
+                        name, dimension, expectedDimension));
+        }
+    }
+
+    /**
+     * Formats this position in the <cite>Well Known Text</cite> (WKT) format.
+     * The returned string is like below, where {@code x₀}, {@code x₁}, {@code
x₂}, <i>etc.</i>
+     * are the {@linkplain #getOrdinate(int) ordinate} values at index 0, 1, 2, <i>etc.</i>:
+     *
+     * {@preformat wkt
+     *   POINT(x₀, x₁, x₂, …)
+     * }
+     *
+     * The output of this method can be parsed by the by the {@link GeneralDirectPosition}
constructor.
+     *
+     * @return This position as a {@code POINT} in <cite>Well Known Text</cite>
(WKT) format.
+     */
+    @Override
+    public String toString() {
+        return toString(this);
+    }
+
+    /**
+     * Formats a {@code POINT} element from a given direct position.
+     * This method formats the given position in the <cite>Well Known Text</cite>
(WKT) format.
+     * The returned string is like below, where {@code x₀}, {@code x₁}, {@code
x₂}, <i>etc.</i>
+     * are the {@linkplain #getOrdinate(int) ordinate} values at index 0, 1, 2, <i>etc.</i>:
+     *
+     * {@preformat wkt
+     *   POINT(x₀, x₁, x₂, …)
+     * }
+     *
+     * The output of this method can be parsed by the by the {@link GeneralDirectPosition}
constructor.
+     *
+     * @param  position The position to format.
+     * @return The position as a {@code POINT} in <cite>Well Known Text</cite>
(WKT) format.
+     *
+     * @see GeneralDirectPosition#GeneralDirectPosition(String)
+     * @see org.apache.sis.measure.CoordinateFormat
+     * @see org.apache.sis.io.wkt
+     */
+    public static String toString(final DirectPosition position) {
+        final StringBuilder buffer = new StringBuilder(32).append("POINT(");
+        final int dimension = position.getDimension();
+        for (int i=0; i<dimension; i++) {
+            if (i != 0) {
+                buffer.append(' ');
+            }
+            trimFractionalPart(buffer.append(position.getOrdinate(i)));
+        }
+        return buffer.append(')').toString();
+    }
+
+    /**
+     * Parses the given WKT.
+     *
+     * @param  wkt The WKT to parse.
+     * @return The ordinates, or {@code null) if none.
+     * @throws NumberFormatException If a number can not be parsed.
+     * @throws IllegalArgumentException If the parenthesis are not balanced.
+     */
+    static double[] parse(final CharSequence wkt) throws NumberFormatException, IllegalArgumentException
{
+        /*
+         * Ignore leading and trailing whitespaces, including line feeds. After this step,
+         * line feeds in the middle of a POINT element are considered errors.
+         */
+        int length = CharSequences.skipTrailingWhitespaces(wkt, 0, wkt.length());
+        int i = CharSequences.skipLeadingWhitespaces(wkt, 0, length);
+        int c;
+        /*
+         * Skip the leading identifier (typically "POINT" or "POINT ZM") and the following
+         * whitespaces, if any. If we reach the end of string before to find a character
which
+         * is neither a space character or an identifier part, then return null.
+         */
+        while (true) {
+            if (i >= length) return null;
+            c = Character.codePointAt(wkt, i);
+            if (Character.isUnicodeIdentifierStart(c)) {
+                do {
+                    i += Character.charCount(c);
+                    if (i >= length) return null;
+                    c = Character.codePointAt(wkt, i);
+                } while (Character.isUnicodeIdentifierPart(c));
+            }
+            if (!Character.isSpaceChar(c)) break;
+            i += Character.charCount(c);
+        }
+        /*
+         * Skip the opening parenthesis, and the following whitespaces if any.
+         * If we find an opening parenthesis, search for the closing parenthesis.
+         */
+        if (c == '(' || c == '[') {
+            i += Character.charCount(c);
+            final char close = (c == '(') ? ')' : ']';
+            final int pos = CharSequences.lastIndexOf(wkt, close, i, length);
+            if (pos != --length) {
+                final int key;
+                final Object[] args;
+                if (pos < 0) {
+                    key  = Errors.Keys.NonEquilibratedParenthesis_2;
+                    args = new Object[] {wkt, close};
+                } else {
+                    key  = Errors.Keys.UnparsableStringForClass_3;
+                    args = new Object[] {"POINT", wkt, wkt.subSequence(pos+1, length+1)};
+                }
+                throw new IllegalArgumentException(Errors.format(key, args));
+            }
+        }
+        /*
+         * Index i is either at the beginning of a number or at the closing parenthesis.
+         * Now process every space-separated ordinates until we reach the closing parenthesis
+         * or the end of string.
+         */
+        double[] ordinates = new double[2];
+        int dimension = 0;
+parse:  while (i < length) {
+            final int start = i;
+            do {
+                i += Character.charCount(c);
+                if (i >= length) {
+                    c = 0;
+                    break;
+                }
+                c = Character.codePointAt(wkt, i);
+            } while (!Character.isSpaceChar(c));
+            final double value = Double.parseDouble(wkt.subSequence(start, i).toString());
+            if (dimension == ordinates.length) {
+                ordinates = Arrays.copyOf(ordinates, dimension*2);
+            }
+            ordinates[dimension++] = value;
+            /*
+             * Skip whitespaces. If we reach the end of string without finding
+             * the closing parenthesis, check if we were suppose to have any.
+             */
+            while (Character.isSpaceChar(c)) {
+                i += Character.charCount(c);
+                if (i >= length) {
+                    break parse;
+                }
+                c = Character.codePointAt(wkt, i);
+            }
+        }
+        return resize(ordinates, dimension);
+    }
+
+    /**
+     * Returns a hash value for this coordinate.
+     *
+     * @return A hash code value for this position.
+     */
+    @Override
+    public int hashCode() {
+        return hashCode(this);
+    }
+
+    /**
+     * Returns a hash value for the given coordinate.
+     */
+    static int hashCode(final DirectPosition position) {
+        final int dimension = position.getDimension();
+        int code = 1;
+        for (int i=0; i<dimension; i++) {
+            final long bits = doubleToLongBits(position.getOrdinate(i));
+            code = 31 * code + (((int) bits) ^ (int) (bits >>> 32));
+        }
+        final CoordinateReferenceSystem crs = position.getCoordinateReferenceSystem();
+        if (crs != null) {
+            code += crs.hashCode();
+        }
+        return code;
+    }
+
+    /**
+     * Returns {@code true} if the specified object is also a
+     * {@linkplain DirectPosition direct position} with equal
+     * {@linkplain #getCoordinate() coordinate} array and equal
+     * {@linkplain #getCoordinateReferenceSystem CRS}.
+     *
+     * @param object The object to compare with this position.
+     * @return {@code true} if the given object is equal to this position.
+     */
+    @Override
+    public boolean equals(final Object object) {
+        if (object instanceof DirectPosition) {
+            final DirectPosition that = (DirectPosition) object;
+            final int dimension = getDimension();
+            if (dimension == that.getDimension()) {
+                for (int i=0; i<dimension; i++) {
+                    if (doubleToLongBits(getOrdinate(i)) != doubleToLongBits(that.getOrdinate(i)))
{
+                        return false;
+                    }
+                }
+                if (Objects.equals(this.getCoordinateReferenceSystem(),
+                                   that.getCoordinateReferenceSystem()))
+                {
+                    assert hashCode() == that.hashCode() : this;
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+}

Propchange: sis/branches/JDK7/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractDirectPosition.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/branches/JDK7/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractDirectPosition.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: sis/branches/JDK7/sis-referencing/src/main/java/org/apache/sis/geometry/package-info.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-referencing/src/main/java/org/apache/sis/geometry/package-info.java?rev=1422213&view=auto
==============================================================================
--- sis/branches/JDK7/sis-referencing/src/main/java/org/apache/sis/geometry/package-info.java
(added)
+++ sis/branches/JDK7/sis-referencing/src/main/java/org/apache/sis/geometry/package-info.java
Sat Dec 15 10:02:23 2012
@@ -0,0 +1,82 @@
+/*
+ * 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.
+ */
+
+/**
+ * Basic geometric objects (envelopes and direct positions). Every geometry objects are associated
+ * with a {@linkplain org.apache.sis.referencing.crs.AbstractCRS Coordinate Reference System},
+ * which may have an arbitrary number of dimensions. However a few specialized classes restrict
+ * the CRS to a fixed number of dimensions only. The table below summarizes the most common
+ * objects, and list the Java2D classes that are conceptually equivalent.
+ *
+ * <table class="sis">
+ *   <tr>
+ *     <th>Purpose</th>
+ *     <th>Any dimension</th>
+ *     <th>One dimension</th>
+ *     <th>Two dimensions</th>
+ *     <th>Java2D equivalence</th>
+ *   </tr><tr>
+ *     <td>A point in a multi-dimensional space</td>
+ *     <td>{@link org.apache.sis.geometry.GeneralDirectPosition}</td>
+ *     <td>{@link org.apache.sis.geometry.DirectPosition1D}</td>
+ *     <td>{@link org.apache.sis.geometry.DirectPosition2D}</td>
+ *     <td>{@link java.awt.geom.Point2D}</td>
+ *   </tr><tr>
+ *     <td>A box in a multi-dimensional space</td>
+ *     <td>{@link org.apache.sis.geometry.GeneralEnvelope}</td>
+ *     <td></td>
+ *     <td>{@link org.apache.sis.geometry.Envelope2D}</td>
+ *     <td>{@link java.awt.geom.Rectangle2D}</td>
+ *   </tr>
+ * </table>
+ *
+ * {@section Envelopes spanning the anti-meridian of a Geographic CRS}
+ * The Web Coverage Service (WCS) 1.1 specification uses an extended interpretation
+ * of the bounding box definition. In a WCS 1.1 data structure, the
+ * {@linkplain org.apache.sis.geometry.GeneralEnvelope#getLowerCorner() lower corner}
+ * defines the edges region in the directions of <em>decreasing</em> coordinate
values in the
+ * {@linkplain org.apache.sis.geometry.GeneralEnvelope#getCoordinateReferenceSystem() envelope
CRS},
+ * while the {@linkplain org.apache.sis.geometry.GeneralEnvelope#getUpperCorner() upper corner}
+ * defines the edges region in the directions of <em>increasing</em> coordinate
values.
+ * Those lower and upper corners are usually the algebraic
+ * {@linkplain org.apache.sis.geometry.GeneralEnvelope#getMinimum(int) minimum} and
+ * {@linkplain org.apache.sis.geometry.GeneralEnvelope#getMaximum(int) maximum} coordinates
respectively,
+ * but not always. For example, an envelope crossing the anti-meridian could have a lower
corner
+ * longitude greater than the upper corner longitude, like the red box below (the green box
is the
+ * usual case):
+ *
+ * <center><img src="doc-files/AntiMeridian.png"></center>
+ *
+ * In SIS, every envelopes defined in this package support the extended bounding box interpretation:
+ * for any dimension, ordinate values such that <var>upper</var> &lt; <var>lower</var>
are handled
+ * in a special way. This handling is slightly different for two groups of methods:
+ *
+ * <ul>
+ *   <li>In calculation of envelopes spans and median positions (centers) — handled
specially only
+ *       on axes having the {@link org.opengis.referencing.cs.RangeMeaning#WRAPAROUND WRAPAROUND}
+ *       range meaning.</li>
+ *   <li>When checking for containment, intersections or unions — can be handled
specially for
+ *       any axis, in which case the envelope represents an <em>exclusion</em>
area instead
+ *       than an inclusion area.</li>
+ * </ul>
+ *
+ * @author Martin Desruisseaux (IRD, Geomatys)
+ * @since   0.3 (derived from geotk-1.2)
+ * @version 0.3
+ * @module
+ */
+package org.apache.sis.geometry;

Propchange: sis/branches/JDK7/sis-referencing/src/main/java/org/apache/sis/geometry/package-info.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/branches/JDK7/sis-referencing/src/main/java/org/apache/sis/geometry/package-info.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java?rev=1422213&r1=1422212&r2=1422213&view=diff
==============================================================================
--- sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java
(original)
+++ sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java
Sat Dec 15 10:02:23 2012
@@ -196,6 +196,16 @@ public final class Errors extends Indexe
         public static final int MandatoryAttribute_2 = 22;
 
         /**
+         * The coordinate reference system must be the same for all objects.
+         */
+        public static final int MismatchedCRS = 57;
+
+        /**
+         * Argument ‘{0}’ has {1} dimension{1,choice,1#|2#s}, while {2} was expected.
+         */
+        public static final int MismatchedDimension_3 = 58;
+
+        /**
          * Argument ‘{0}’ shall not be negative. The given value was {1}.
          */
         public static final int NegativeArgument_2 = 8;
@@ -226,6 +236,11 @@ public final class Errors extends Indexe
         public static final int NonAngularUnit_1 = 46;
 
         /**
+         * Missing a ‘{1}’ parenthesis in “{0}”.
+         */
+        public static final int NonEquilibratedParenthesis_2 = 59;
+
+        /**
          * “{0}” is not a linear unit.
          */
         public static final int NonLinearUnit_1 = 47;

Modified: sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties?rev=1422213&r1=1422212&r2=1422213&view=diff
==============================================================================
--- sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties
(original)
+++ sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties
Sat Dec 15 10:02:23 2012
@@ -42,11 +42,14 @@ InfiniteRecursivity             = Infini
 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.
+MismatchedCRS                   = The coordinate reference system must be the same for all
objects.
+MismatchedDimension_3           = Argument \u2018{0}\u2019 has {1} dimension{1,choice,1#|2#s},
while {2} was expected.
 NegativeArgument_2              = Argument \u2018{0}\u2019 shall not be negative. The given
value was {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.
 NodeNotFound_1                  = No \u201c{0}\u201d node found.
+NonEquilibratedParenthesis_2    = Missing a \u2018{1}\u2019 parenthesis in \u201c{0}\u201d.
 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.

Modified: sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties?rev=1422213&r1=1422212&r2=1422213&view=diff
==============================================================================
--- sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties
(original)
+++ sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties
Sat Dec 15 10:02:23 2012
@@ -42,11 +42,14 @@ InfiniteRecursivity             = R\u00e
 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.
+MismatchedCRS                   = Le syst\u00e8me de r\u00e9f\u00e9rence des coordonn\u00e9es
doit \u00eatre le m\u00eame pour tous les objets.
+MismatchedDimension_3           = L\u2019argument \u2018{0}\u2019 a {1} dimension{1,choice,1#|2#s},
alors qu\u2019on en attendait {2}.
 NegativeArgument_2              = L\u2019argument \u2018{0}\u2019 ne doit pas \u00eatre n\u00e9gatif.
La valeur donn\u00e9e \u00e9tait {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.
 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.
 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.



Mime
View raw message