sis-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From desruisse...@apache.org
Subject svn commit: r1792207 - in /sis/branches/JDK8/core: sis-feature/src/main/java/org/apache/sis/feature/ sis-feature/src/test/java/org/apache/sis/feature/ sis-utility/src/main/java/org/apache/sis/util/resources/
Date Fri, 21 Apr 2017 13:44:48 GMT
Author: desruisseaux
Date: Fri Apr 21 13:44:48 2017
New Revision: 1792207

URL: http://svn.apache.org/viewvc?rev=1792207&view=rev
Log:
Format feature property designations, with possibility to skip this information is not desired.

Modified:
    sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/FeatureFormat.java
    sis/branches/JDK8/core/sis-feature/src/test/java/org/apache/sis/feature/FeatureFormatTest.java
    sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.java
    sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.properties
    sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary_fr.properties

Modified: sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/FeatureFormat.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/FeatureFormat.java?rev=1792207&r1=1792206&r2=1792207&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/FeatureFormat.java
[UTF-8] (original)
+++ sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/feature/FeatureFormat.java
[UTF-8] Fri Apr 21 13:44:48 2017
@@ -18,6 +18,8 @@ package org.apache.sis.feature;
 
 import java.util.List;
 import java.util.ArrayList;
+import java.util.Set;
+import java.util.EnumSet;
 import java.util.Iterator;
 import java.util.Locale;
 import java.util.TimeZone;
@@ -49,6 +51,7 @@ import org.opengis.feature.Attribute;
 import org.opengis.feature.AttributeType;
 import org.opengis.feature.Feature;
 import org.opengis.feature.FeatureType;
+import org.opengis.feature.FeatureAssociation;
 import org.opengis.feature.FeatureAssociationRole;
 import org.opengis.feature.Operation;
 import org.apache.sis.util.Characters;
@@ -88,7 +91,7 @@ public class FeatureFormat extends Tabul
     /**
      * For cross-version compatibility.
      */
-    private static final long serialVersionUID = 8866440357566645070L;
+    private static final long serialVersionUID = -5792086817264884947L;
 
     /**
      * An instance created when first needed and potentially shared.
@@ -101,6 +104,12 @@ public class FeatureFormat extends Tabul
     private final Locale displayLocale;
 
     /**
+     * The columns to include in the table formatted by this {@code FeatureFormat}.
+     * By default, all columns having at least one value are included.
+     */
+    private final EnumSet<Column> columns = EnumSet.allOf(Column.class);
+
+    /**
      * Maximal length of attribute values, in number of characters.
      * If a value is longer than this length, it will be truncated.
      *
@@ -159,6 +168,104 @@ public class FeatureFormat extends Tabul
     }
 
     /**
+     * Returns all columns that may be shown in the tables to format.
+     * The columns included in the set may be shown, but not necessarily;
+     * some columns will still be omitted if they are completely empty.
+     * However columns <em>not</em> included in the set are guaranteed to be
omitted.
+     *
+     * @return all columns that may be shown in the tables to format.
+     *
+     * @since 0.8
+     */
+    public Set<Column> getAllowedColumns() {
+        return columns.clone();
+    }
+
+    /**
+     * Sets all columns that may be shown in the tables to format.
+     * Note that the columns specified to this method are not guaranteed to be shown;
+     * some columns will still be omitted if they are completely empty.
+     *
+     * @param inclusion  all columns that may be shown in the tables to format.
+     *
+     * @since 0.8
+     */
+    public void setAllowedColumns(final Set<Column> inclusion) {
+        ArgumentChecks.ensureNonNull("inclusion", inclusion);
+        columns.clear();
+        columns.addAll(inclusion);
+    }
+
+    /**
+     * Identifies the columns to include in the table formatted by {@code FeatureFormat}.
+     * By default, all columns having at least one non-null value are shown. But a smaller
+     * set of columns can be specified to the {@link FeatureFormat#setAllowedColumns(Set)}
+     * method for formatting narrower tables.
+     *
+     * @see FeatureFormat#setAllowedColumns(Set)
+     *
+     * @since 0.8
+     */
+    public enum Column {
+        /**
+         * Natural language designator for the property.
+         * This is the character sequence returned by {@link PropertyType#getDesignation()}.
+         * This column is omitted if no property has a designation.
+         */
+        DESIGNATION(Vocabulary.Keys.Designation),
+
+        /**
+         * Name of the property.
+         * This is the character sequence returned by {@link PropertyType#getName()}.
+         */
+        NAME(Vocabulary.Keys.Name),
+
+        /**
+         * Type of property values. This is the type returned by {@link AttributeType#getValueClass()}
or
+         * {@link FeatureAssociationRole#getValueType()}.
+         */
+        TYPE(Vocabulary.Keys.Type),
+
+        /**
+         * The minimum and maximum occurrences of attribute values. This is made from the
numbers returned
+         * by {@link AttributeType#getMinimumOccurs()} and {@link AttributeType#getMaximumOccurs()}.
+         */
+        CARDINALITY(Vocabulary.Keys.Cardinality),
+
+        /**
+         * Property value (for properties) or default value (for property types).
+         * This is the value returned by {@link Attribute#getValue()}, {@link FeatureAssociation#getValue()}
+         * or {@link AttributeType#getDefaultValue()}.
+         */
+        VALUE(Vocabulary.Keys.Value),
+
+        /**
+         * Other attributes that describes the attribute.
+         * This is made from the map returned by {@link Attribute#characteristics()}.
+         * This column is omitted if no property has characteristics.
+         */
+        CHARACTERISTICS(Vocabulary.Keys.Characteristics),
+
+        /**
+         * Whether a property is deprecated, or other remarks.
+         * This column is omitted if no property has remarks.
+         */
+        REMARKS(Vocabulary.Keys.Remarks);
+
+        /**
+         * The {@link Vocabulary} key to use for formatting the header of this column.
+         */
+        final short resourceKey;
+
+        /**
+         * Creates a new column enumeration constant.
+         */
+        private Column(final short key) {
+            resourceKey = key;
+        }
+    }
+
+    /**
      * Invoked when the formatter needs to move to the next column.
      */
     private void nextColumn(final TableAppender table) {
@@ -197,18 +304,30 @@ public class FeatureFormat extends Tabul
                     .getString(Errors.Keys.UnsupportedType_1, object.getClass()));
         }
         /*
-         * Check if at least one attribute has at least one characteritic. In many cases
there is none.
-         * In none we will ommit the "characteristics" column, which is the last column.
+         * Computes the columns to show. We start with the set of columns specified by setAllowedColumns(Set),
+         * then we check if some of those columns are empty. For example in many cases there
is no attribute
+         * with characteritic, in which case we will ommit the whole "characteristics" column.
We perform such
+         * check only for optional information, not for mandatory information like property
names.
          */
-        boolean hasCharacteristics = false;
-        boolean hasDeprecatedTypes = false;
-        for (final PropertyType propertyType : featureType.getProperties(true)) {
-            if (!hasCharacteristics && propertyType instanceof AttributeType<?>)
{
-                hasCharacteristics = !((AttributeType<?>) propertyType).characteristics().isEmpty();
-            }
-            if (!hasDeprecatedTypes && propertyType instanceof Deprecable) {
-                hasDeprecatedTypes = ((Deprecable) propertyType).isDeprecated();
+        final EnumSet<Column> visibleColumns = columns.clone();
+        {
+            boolean hasDesignation     = false;
+            boolean hasCharacteristics = false;
+            boolean hasDeprecatedTypes = false;
+            for (final PropertyType propertyType : featureType.getProperties(true)) {
+                if (!hasDesignation) {
+                    hasDesignation = propertyType.getDesignation() != null;
+                }
+                if (!hasCharacteristics && propertyType instanceof AttributeType<?>)
{
+                    hasCharacteristics = !((AttributeType<?>) propertyType).characteristics().isEmpty();
+                }
+                if (!hasDeprecatedTypes && propertyType instanceof Deprecable) {
+                    hasDeprecatedTypes = ((Deprecable) propertyType).isDeprecated();
+                }
             }
+            if (!hasDesignation)     visibleColumns.remove(Column.DESIGNATION);
+            if (!hasCharacteristics) visibleColumns.remove(Column.CHARACTERISTICS);
+            if (!hasDeprecatedTypes) visibleColumns.remove(Column.REMARKS);
         }
         /*
          * Format the feature type name. In the case of feature type, format also the names
of super-type
@@ -218,37 +337,37 @@ public class FeatureFormat extends Tabul
          */
         toAppendTo.append(toString(featureType.getName()));
         if (feature == null) {
-            String separator = " ⇾ ";   // UML symbol for inheritance.
+            String separator = " ⇾ ";                                       // UML symbol
for inheritance.
             for (final FeatureType parent : featureType.getSuperTypes()) {
                 toAppendTo.append(separator).append(toString(parent.getName()));
                 separator = ", ";
             }
         }
         toAppendTo.append(getLineSeparator());
+        /*
+         * Create a table and format the header. Columns will be shown in Column enumeration
order.
+         */
         final Vocabulary resources = Vocabulary.getResources(displayLocale);
         final TableAppender table = new TableAppender(toAppendTo, columnSeparator);
         table.setMultiLinesCells(true);
         table.nextLine('─');
-header: for (int i=0; ; i++) {
-            final short key;
-            switch (i) {
-                case 0:                     key = Vocabulary.Keys.Name; break;
-                case 1:  nextColumn(table); key = Vocabulary.Keys.Type; break;
-                case 2:  nextColumn(table); key = Vocabulary.Keys.Cardinality; break;
-                case 3:  nextColumn(table); key = (feature != null) ? Vocabulary.Keys.Value
: Vocabulary.Keys.DefaultValue; break;
-                case 4:  if (!hasCharacteristics) continue;
-                         nextColumn(table); key = Vocabulary.Keys.Characteristics; break;
-                case 5:  if (!hasDeprecatedTypes) continue;
-                         nextColumn(table); key = Vocabulary.Keys.Remarks; break;
-                default: break header;
+        boolean isFirstColumn = true;
+        for (final Column column : visibleColumns) {
+            short key = column.resourceKey;
+            if (key == Vocabulary.Keys.Value && feature == null) {
+                key = Vocabulary.Keys.DefaultValue;
             }
+            if (!isFirstColumn) nextColumn(table);
             table.append(resources.getString(key));
+            isFirstColumn = false;
         }
         table.nextLine();
         table.nextLine('─');
         /*
-         * Done writing the header. Now write all property rows.
-         * Rows without value will be skipped only if optional.
+         * Done writing the header. Now write all property rows.  For each row, the first
part in the loop
+         * extracts all information needed without formatting anything yet. If we detect
in that part that
+         * a row has no value, it will be skipped if and only if that row is optional (minimum
occurrence
+         * of zero).
          */
         final StringBuffer  buffer  = new StringBuffer();
         final FieldPosition dummyFP = new FieldPosition(-1);
@@ -291,14 +410,6 @@ header: for (int i=0; ; i++) {
                 value = CharSequences.trimWhitespaces(buffer).toString();
                 buffer.setLength(0);
             }
-            /*
-             * Column 0 - Name.
-             */
-            table.append(toString(propertyType.getName()));
-            nextColumn(table);
-            /*
-             * Column 1 and 2 - Type and cardinality.
-             */
             final String   valueType;                       // The value to write in the
type column.
             final Class<?> valueClass;                      // AttributeType.getValueClass()
if applicable.
             final int minimumOccurs, maximumOccurs;         // Negative values mean no cardinality.
@@ -327,82 +438,98 @@ header: for (int i=0; ; i++) {
                 minimumOccurs = -1;
                 maximumOccurs = -1;
             }
-            table.append(valueType);
-            nextColumn(table);
-            if (maximumOccurs >= 0) {
-                final Format format = getFormat(Integer.class);
-                table.append('[').append(format.format(minimumOccurs, buffer, dummyFP)).append("
… ");
-                buffer.setLength(0);
-                if (maximumOccurs != Integer.MAX_VALUE) {
-                    table.append(format.format(maximumOccurs, buffer, dummyFP));
-                } else {
-                    table.append('∞');
-                }
-                buffer.setLength(0);
-                table.append(']');
-            }
-            nextColumn(table);
             /*
-             * Column 3 - Value or default value.
+             * At this point we determined that the row should not be skipped
+             * and we got all information to format.
              */
-            if (value != null) {
-                final Format format = getFormat(valueClass);                            //
Null if valueClass is null.
-                final Iterator<?> it = CollectionsExt.toCollection(value).iterator();
-                String separator = "";
-                int length = 0;
-                while (it.hasNext()) {
-                    value = it.next();
-                    if (value != null) {
-                        if (format != null && valueClass.isInstance(value)) {
-                            value = format.format(value, buffer, dummyFP);
-                        } else if (value instanceof Feature && propertyType instanceof
FeatureAssociationRole) {
-                            final String p = DefaultAssociationRole.getTitleProperty((FeatureAssociationRole)
propertyType);
-                            if (p != null) {
-                                value = ((Feature) value).getPropertyValue(p);
-                                if (value == null) continue;
+            isFirstColumn = true;
+            for (final Column column : visibleColumns) {
+                if (!isFirstColumn) nextColumn(table);
+                isFirstColumn = false;
+                switch (column) {
+                    case DESIGNATION: {
+                        final InternationalString d = propertyType.getDesignation();
+                        if (d != null) table.append(d.toString(displayLocale));
+                        break;
+                    }
+                    case NAME: {
+                        table.append(toString(propertyType.getName()));
+                        break;
+                    }
+                    case TYPE: {
+                        table.append(valueType);
+                        break;
+                    }
+                    case CARDINALITY: {
+                        if (maximumOccurs >= 0) {
+                            final Format format = getFormat(Integer.class);
+                            table.append('[').append(format.format(minimumOccurs, buffer,
dummyFP)).append(" … ");
+                            buffer.setLength(0);
+                            if (maximumOccurs != Integer.MAX_VALUE) {
+                                table.append(format.format(maximumOccurs, buffer, dummyFP));
+                            } else {
+                                table.append('∞');
                             }
+                            buffer.setLength(0);
+                            table.append(']');
                         }
-                        length = formatValue(value, table.append(separator), length);
-                        buffer.setLength(0);
-                        separator = ", ";
-                        if (length < 0) break;      // Value is too long, abandon remaining
iterations.
+                        break;
                     }
-                }
-            }
-            /*
-             * Column 4 - Characteristics.
-             */
-            if (hasCharacteristics) {
-                nextColumn(table);
-                if (propertyType instanceof AttributeType<?>) {
-                    String separator = "";
-                    for (final AttributeType<?> attribute : ((AttributeType<?>)
propertyType).characteristics().values()) {
-                        table.append(separator).append(toString(attribute.getName()));
-                        Object c = attribute.getDefaultValue();
-                        if (feature != null) {
-                            final Property p = feature.getProperty(propertyType.getName().toString());
-                            if (p instanceof Attribute<?>) {            // Should always
be true, but we are paranoiac.
-                                c = ((Attribute<?>) p).characteristics().get(attribute.getName().toString());
+                    case VALUE: {
+                        final Format format = getFormat(valueClass);                    
   // Null if valueClass is null.
+                        final Iterator<?> it = CollectionsExt.toCollection(value).iterator();
+                        String separator = "";
+                        int length = 0;
+                        while (it.hasNext()) {
+                            value = it.next();
+                            if (value != null) {
+                                if (format != null && valueClass.isInstance(value))
{       // Null safe of getFormat(valueClass) contract.
+                                    value = format.format(value, buffer, dummyFP);
+                                } else if (value instanceof Feature && propertyType
instanceof FeatureAssociationRole) {
+                                    final String p = DefaultAssociationRole.getTitleProperty((FeatureAssociationRole)
propertyType);
+                                    if (p != null) {
+                                        value = ((Feature) value).getPropertyValue(p);
+                                        if (value == null) continue;
+                                    }
+                                }
+                                length = formatValue(value, table.append(separator), length);
+                                buffer.setLength(0);
+                                separator = ", ";
+                                if (length < 0) break;      // Value is too long, abandon
remaining iterations.
                             }
                         }
-                        if (c != null) {
-                            formatValue(c, table.append(" = "), 0);
+                        break;
+                    }
+                    case CHARACTERISTICS: {
+                        if (propertyType instanceof AttributeType<?>) {
+                            String separator = "";
+                            for (final AttributeType<?> attribute : ((AttributeType<?>)
propertyType).characteristics().values()) {
+                                table.append(separator).append(toString(attribute.getName()));
+                                Object c = attribute.getDefaultValue();
+                                if (feature != null) {
+                                    final Property p = feature.getProperty(propertyType.getName().toString());
+                                    if (p instanceof Attribute<?>) {            //
Should always be true, but we are paranoiac.
+                                        c = ((Attribute<?>) p).characteristics().get(attribute.getName().toString());
+                                    }
+                                }
+                                if (c != null) {
+                                    formatValue(c, table.append(" = "), 0);
+                                }
+                                separator = ", ";
+                            }
                         }
-                        separator = ", ";
+                        break;
                     }
-                }
-            }
-            /*
-             * Column 5 - Deprecation
-             */
-            if (hasDeprecatedTypes) {
-                nextColumn(table);
-                if (org.apache.sis.feature.Field.isDeprecated(propertyType)) {
-                    table.append(resources.getString(Vocabulary.Keys.Deprecated));
-                    final InternationalString r = ((Deprecable) propertyType).getRemarks();
-                    if (r != null) {
-                        remarks.add(r.toString(displayLocale));
-                        appendSuperscript(remarks.size(), table);
+                    case REMARKS: {
+                        if (org.apache.sis.feature.Field.isDeprecated(propertyType)) {
+                            table.append(resources.getString(Vocabulary.Keys.Deprecated));
+                            final InternationalString r = ((Deprecable) propertyType).getRemarks();
+                            if (r != null) {
+                                remarks.add(r.toString(displayLocale));
+                                appendSuperscript(remarks.size(), table);
+                            }
+                        }
+                        break;
                     }
                 }
             }

Modified: sis/branches/JDK8/core/sis-feature/src/test/java/org/apache/sis/feature/FeatureFormatTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-feature/src/test/java/org/apache/sis/feature/FeatureFormatTest.java?rev=1792207&r1=1792206&r2=1792207&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-feature/src/test/java/org/apache/sis/feature/FeatureFormatTest.java
[UTF-8] (original)
+++ sis/branches/JDK8/core/sis-feature/src/test/java/org/apache/sis/feature/FeatureFormatTest.java
[UTF-8] Fri Apr 21 13:44:48 2017
@@ -18,6 +18,7 @@ package org.apache.sis.feature;
 
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.EnumSet;
 import java.util.Locale;
 import java.util.Map;
 import java.util.HashMap;
@@ -47,12 +48,23 @@ import org.opengis.feature.PropertyType;
 })
 public final strictfp class FeatureFormatTest extends TestCase {
     /**
+     * Creates the formatter instance to be used for the tests.
+     */
+    private static FeatureFormat create() {
+        final FeatureFormat format = new FeatureFormat(Locale.US, null);
+        format.setAllowedColumns(EnumSet.of(FeatureFormat.Column.NAME,            FeatureFormat.Column.TYPE,
+                                            FeatureFormat.Column.CARDINALITY,     FeatureFormat.Column.VALUE,
+                                            FeatureFormat.Column.CHARACTERISTICS, FeatureFormat.Column.REMARKS));
+        return format;
+    }
+
+    /**
      * Tests the formatting of a {@link DefaultFeatureType}.
      */
     @Test
     public void testFeatureType() {
         final DefaultFeatureType feature = DefaultFeatureTypeTest.worldMetropolis();
-        final FeatureFormat format = new FeatureFormat(Locale.US, null);
+        final FeatureFormat format = create();
         final String text = format.format(feature);
         assertMultilinesEquals("World metropolis ⇾ Metropolis, University city\n" +
                 "┌──────────────┬─────────────────────┬─────────────┬───────────────┬────────────────────────────┐\n"
+
@@ -80,7 +92,7 @@ public final strictfp class FeatureForma
                 FeatureOperations.compound(name("anotherId"), ":", "<", ">", city,
feature.getProperty("population")),
                 AbstractOperationTest.foundCity());
 
-        final FeatureFormat format = new FeatureFormat(Locale.US, null);
+        final FeatureFormat format = create();
         final String text = format.format(feature);
         assertMultilinesEquals("Identified city ⇾ City\n" +
                 "┌────────────┬─────────┬─────────────┬─────────────────────┐\n"
+
@@ -114,7 +126,7 @@ public final strictfp class FeatureForma
         feature = new DefaultFeatureType(name("City for human"), false, new DefaultFeatureType[]
{feature},
                 new DefaultAttributeType<>(properties, String.class, 0, 2, null));
 
-        final FeatureFormat format = new FeatureFormat(Locale.US, null);
+        final FeatureFormat format = create();
         final String text = format.format(feature);
         assertMultilinesEquals("City for human ⇾ City\n" +
                 "┌────────────┬─────────┬─────────────┬───────────────┬─────────────┐\n"
+
@@ -141,7 +153,7 @@ public final strictfp class FeatureForma
         feature.setPropertyValue("population", 13185502);                               //
In 2011.
         feature.setPropertyValue("universities", Arrays.asList("Waseda", "Keio"));
 
-        final FeatureFormat format = new FeatureFormat(Locale.US, null);
+        final FeatureFormat format = create();
         final String text = format.format(feature);
         assertMultilinesEquals("World metropolis\n" +
                 "┌──────────────┬─────────────────────┬─────────────┬──────────────┬─────────────────┐\n"
+
@@ -174,7 +186,7 @@ public final strictfp class FeatureForma
         feature.setPropertyValue("population", 143174);                     // December 31th,
2011
         feature.setPropertyValue("twin town", twinTown);
 
-        final FeatureFormat format = new FeatureFormat(Locale.US, null);
+        final FeatureFormat format = create();
         final String text = format.format(feature);
         assertMultilinesEquals("Twin town\n" +
                 "┌────────────┬─────────┬─────────────┬───────────┐\n"
+

Modified: sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.java?rev=1792207&r1=1792206&r2=1792207&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.java
[UTF-8] (original)
+++ sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.java
[UTF-8] Fri Apr 21 13:44:48 2017
@@ -242,6 +242,11 @@ public final class Vocabulary extends In
         public static final short Description = 31;
 
         /**
+         * Designation
+         */
+        public static final short Designation = 142;
+
+        /**
          * Destination
          */
         public static final short Destination = 32;

Modified: sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.properties
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.properties?rev=1792207&r1=1792206&r2=1792207&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.properties
[ISO-8859-1] (original)
+++ sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.properties
[ISO-8859-1] Fri Apr 21 13:44:48 2017
@@ -51,6 +51,7 @@ DefaultValue            = Default value
 Deprecated              = Deprecated
 DerivedFrom_1           = Derived from {0}
 Description             = Description
+Designation             = Designation
 Destination             = Destination
 Details                 = Details
 Dimensions              = Dimensions

Modified: sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary_fr.properties
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary_fr.properties?rev=1792207&r1=1792206&r2=1792207&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary_fr.properties
[ISO-8859-1] (original)
+++ sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary_fr.properties
[ISO-8859-1] Fri Apr 21 13:44:48 2017
@@ -58,6 +58,7 @@ DefaultValue            = Valeur par d\u
 Deprecated              = Obsol\u00e8te
 DerivedFrom_1           = D\u00e9riv\u00e9 de {0}
 Description             = Description
+Designation             = D\u00e9signation
 Destination             = Destination
 Details                 = D\u00e9tails
 Dimensions              = Dimensions



Mime
View raw message