Modified: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultVerticalExtent.java URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultVerticalExtent.java?rev=1459086&r1=1459085&r2=1459086&view=diff ============================================================================== --- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultVerticalExtent.java [UTF-8] (original) +++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultVerticalExtent.java [UTF-8] Wed Mar 20 22:36:46 2013 @@ -13,34 +13,187 @@ * 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. + * + * This package contains documentation from OGC specifications. + * Open Geospatial Consortium's work is fully acknowledged here. */ package org.apache.sis.metadata.iso.extent; -import org.opengis.metadata.extent.VerticalExtent; +import javax.xml.bind.annotation.XmlType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import org.opengis.geometry.Envelope; import org.opengis.referencing.crs.VerticalCRS; +import org.opengis.referencing.operation.TransformException; +import org.opengis.metadata.extent.VerticalExtent; import org.apache.sis.metadata.iso.ISOMetadata; +import org.apache.sis.internal.metadata.ReferencingServices; +/** + * Vertical domain of dataset. + * + * <p>In addition to the standard properties, SIS provides the following methods:</p> + * <ul> + * <li>{@link #setBounds(Envelope)} for setting the extent from the given envelope.</li> + * </ul> + * + * @author Martin Desruisseaux (IRD, Geomatys) + * @author Touraïvane (IRD) + * @author Cédric Briançon (Geomatys) + * @since 0.3 (derived from geotk-2.1) + * @version 0.3 + * @module + */ +@XmlType(name = "EX_VerticalExtent_Type", propOrder = { + "minimumValue", + "maximumValue", + "verticalCRS" +}) +@XmlRootElement(name = "EX_VerticalExtent") public class DefaultVerticalExtent extends ISOMetadata implements VerticalExtent { - + /** + * Serial number for inter-operability with different versions. + */ + private static final long serialVersionUID = -3214554246909844079L; + + /** + * The lowest vertical extent contained in the dataset. + */ private Double minimumValue; + /** + * The highest vertical extent contained in the dataset. + */ private Double maximumValue; + /** + * Provides information about the vertical coordinate reference system to + * which the maximum and minimum elevation values are measured. The CRS + * identification includes unit of measure. + */ private VerticalCRS verticalCRS; + /** + * Constructs an initially empty vertical extent. + */ + public DefaultVerticalExtent() { + } + + /** + * Creates a vertical extent initialized to the specified values. + * + * @param minimumValue The lowest vertical extent contained in the dataset. + * @param maximumValue The highest vertical extent contained in the dataset. + * @param verticalCRS The information about the vertical coordinate reference system, or {@code null}. + */ + public DefaultVerticalExtent(final double minimumValue, + final double maximumValue, + final VerticalCRS verticalCRS) + { + this.minimumValue = minimumValue; + this.maximumValue = maximumValue; + this.verticalCRS = verticalCRS; + } + + /** + * Returns a SIS metadata implementation with the same values than the given arbitrary + * implementation. If the given object is {@code null}, then this method returns {@code null}. + * Otherwise if the given object is already a SIS implementation, then the given object is + * returned unchanged. Otherwise a new SIS implementation is created and initialized to the + * property values of the given object, using a <cite>shallow</cite> copy operation + * (i.e. properties are not cloned). + * + * @param object The object to get as a SIS implementation, or {@code null} if none. + * @return A SIS implementation containing the values of the given object (may be the + * given object itself), or {@code null} if the argument was null. + */ + public static DefaultVerticalExtent castOrCopy(final VerticalExtent object) { + if (object == null || object instanceof DefaultVerticalExtent) { + return (DefaultVerticalExtent) object; + } + final DefaultVerticalExtent copy = new DefaultVerticalExtent(); + copy.shallowCopy(object); + return copy; + } + + /** + * Returns the lowest vertical extent contained in the dataset. + */ @Override + @XmlElement(name = "minimumValue", required = true) public synchronized Double getMinimumValue() { return minimumValue; } + /** + * Sets the lowest vertical extent contained in the dataset. + * + * @param newValue The new minimum value. + */ + public synchronized void setMinimumValue(final Double newValue) { + checkWritePermission(); + minimumValue = newValue; + } + + /** + * Returns the highest vertical extent contained in the dataset. + */ @Override + @XmlElement(name = "maximumValue", required = true) public synchronized Double getMaximumValue() { return maximumValue; } + /** + * Sets the highest vertical extent contained in the dataset. + * + * @param newValue The new maximum value. + */ + public synchronized void setMaximumValue(final Double newValue) { + checkWritePermission(); + maximumValue = newValue; + } + + /** + * Provides information about the vertical coordinate reference system to + * which the maximum and minimum elevation values are measured. The CRS + * identification includes unit of measure. + */ @Override + @XmlElement(name = "verticalCRS", required = true) public synchronized VerticalCRS getVerticalCRS() { return verticalCRS; } + + /** + * Sets the information about the vertical coordinate reference system to + * which the maximum and minimum elevation values are measured. + * + * @param newValue The new vertical CRS. + */ + public synchronized void setVerticalCRS(final VerticalCRS newValue) { + checkWritePermission(); + verticalCRS = newValue; + } + + /** + * Sets this vertical extent to values inferred from the specified envelope. The envelope can + * be multi-dimensional, in which case the {@linkplain Envelope#getCoordinateReferenceSystem() + * envelope CRS} must have a vertical component. + * + * <p><b>Note:</b> This method is available only if the referencing module is on the classpath.</p> + * + * @param envelope The envelope to use for setting this vertical extent. + * @throws UnsupportedOperationException if the referencing module is not on the classpath. + * @throws TransformException if the envelope can't be transformed to a vertical extent. + * + * @see DefaultExtent#addElements(Envelope) + * @see DefaultGeographicBoundingBox#setBounds(Envelope) + * @see DefaultTemporalExtent#setBounds(Envelope) + */ + public synchronized void setBounds(final Envelope envelope) throws TransformException { + checkWritePermission(); + ReferencingServices.getInstance().setBounds(envelope, this); + } }
Added: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/package-info.java URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/package-info.java?rev=1459086&view=auto ============================================================================== --- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/package-info.java (added) +++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/package-info.java [UTF-8] Wed Mar 20 22:36:46 2013 @@ -0,0 +1,112 @@ +/* + * 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. + * + * This package contains documentation from OGC specifications. + * Open Geospatial Consortium's work is fully acknowledged here. + */ + +/** + * {@linkplain org.apache.sis.metadata.iso.extent.DefaultExtent Extent} implementation. + * An explanation for this package is provided in the {@linkplain org.opengis.metadata.content OpenGIS® javadoc}. + * The remaining discussion on this page is specific to the SIS implementation. + * + * {@section Overview} + * For a global overview of metadata in SIS, see the + * <a href="{@docRoot}/../sis-metadata/index.html">Metadata page on the project web site</a>. + * + * <p>In addition to the standard properties, SIS provides the following methods:</p> + * <ul> + * <li>{@link org.apache.sis.metadata.iso.MetadataObjects#getGeographicBoundingBox + * MetadataObjects.getGeographicBoundingBox(Extent)} + * for extracting a global geographic bounding box.</li> + * + * <li>{@link org.apache.sis.metadata.iso.extent.DefaultGeographicBoundingBox#setBounds(double, double, double, double) + * DefaultGeographicBoundingBox.setBounds(double, double, double, double)} + * for setting the extent from (λ,φ) values.</li> + * + * <li>{@link org.apache.sis.metadata.iso.extent.DefaultGeographicBoundingBox#setBounds(org.opengis.geometry.Envelope) + * DefaultGeographicBoundingBox.setBounds(Envelope)} + * for setting the extent from the given envelope.</li> + * + * <li>{@link org.apache.sis.metadata.iso.extent.DefaultGeographicBoundingBox#setBounds(org.opengis.metadata.extent.GeographicBoundingBox) + * DefaultGeographicBoundingBox.setBounds(GeographicBoundingBox)} + * for setting the extent from an other bounding box.</li> + * + * <li>{@link org.apache.sis.metadata.iso.extent.DefaultGeographicBoundingBox#add + * DefaultGeographicBoundingBox.add(GeographicBoundingBox)} + * for expanding this extent to include an other bounding box.</li> + * + * <li>{@link org.apache.sis.metadata.iso.extent.DefaultGeographicBoundingBox#intersect + * DefaultGeographicBoundingBox.intersect(GeographicBoundingBox)} + * for the intersection between the two bounding boxes.</li> + * + * <li>{@link org.apache.sis.metadata.iso.extent.DefaultVerticalExtent#setBounds + * DefaultVerticalExtent.setBounds(Envelope)} + * for setting the vertical element from the given envelope.</li> + * + * <li>{@link org.apache.sis.metadata.iso.extent.DefaultTemporalExtent#setBounds + * DefaultTemporalExtent.setBounds(Envelope)} + * for setting the temporal element from the given envelope.</li> + * + * <li>{@link org.apache.sis.metadata.iso.extent.DefaultExtent#addElements + * DefaultExtent.addElements(Extent)} + * for adding extent elements inferred from the given envelope.</li> + * </ul> + * + * @author Martin Desruisseaux (IRD, Geomatys) + * @author Touraïvane (IRD) + * @author Cédric Briançon (Geomatys) + * @author Guilhem Legal (Geomatys) + * @since 0.3 (derived from geotk-2.1) + * @version 0.3 + * @module + */ +@XmlSchema(elementFormDefault = XmlNsForm.QUALIFIED, namespace = Namespaces.GMD, xmlns = { + @XmlNs(prefix = "gmd", namespaceURI = Namespaces.GMD), + @XmlNs(prefix = "gco", namespaceURI = Namespaces.GCO), + @XmlNs(prefix = "xsi", namespaceURI = Namespaces.XSI) +}) +@XmlAccessorType(XmlAccessType.NONE) +@XmlJavaTypeAdapters({ + @XmlJavaTypeAdapter(EX_GeographicBoundingBox.class), + @XmlJavaTypeAdapter(EX_GeographicExtent.class), + @XmlJavaTypeAdapter(EX_TemporalExtent.class), + @XmlJavaTypeAdapter(EX_VerticalExtent.class), + @XmlJavaTypeAdapter(GM_Object.class), + @XmlJavaTypeAdapter(MD_Identifier.class), +// @XmlJavaTypeAdapter(SC_VerticalCRS.class), // TODO +// @XmlJavaTypeAdapter(TM_Primitive.class), // TODO + + // Java types, primitive types and basic OGC types handling + @XmlJavaTypeAdapter(InternationalStringAdapter.class), + @XmlJavaTypeAdapter(GO_Boolean.class), @XmlJavaTypeAdapter(type=boolean.class, value=GO_Boolean.class), + @XmlJavaTypeAdapter(GO_Decimal.class), @XmlJavaTypeAdapter(type=double.class, value=GO_Decimal.class) +}) +package org.apache.sis.metadata.iso.extent; + +import javax.xml.bind.annotation.XmlNs; +import javax.xml.bind.annotation.XmlNsForm; +import javax.xml.bind.annotation.XmlSchema; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters; + +import org.apache.sis.xml.Namespaces; +import org.apache.sis.internal.jaxb.gco.*; +import org.apache.sis.internal.jaxb.metadata.*; +// TODO import org.apache.sis.internal.jaxb.referencing.*; +import org.apache.sis.internal.jaxb.geometry.GM_Object; Propchange: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/package-info.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/package-info.java ------------------------------------------------------------------------------ svn:mime-type = text/plain;charset=UTF-8 Modified: sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/Static.java URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/Static.java?rev=1459086&r1=1459085&r2=1459086&view=diff ============================================================================== --- sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/Static.java [UTF-8] (original) +++ sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/Static.java [UTF-8] Wed Mar 20 22:36:46 2013 @@ -47,6 +47,10 @@ package org.apache.sis.util; * <tr><td>{@link ArraysExt}</td> * <td>Insert or remove elements in the middle of arrays.</td></tr> * + * <tr><th colspan="2" class="hsep">OGC/ISO objects (metadata, referencing, geometries)</th></tr> + * <tr><td>{@link org.apache.sis.metadata.iso.MetadataObjects}</td> + * <td>Extract information from {@link org.opengis.metadata} objects.</td></tr> + * * <tr><th colspan="2" class="hsep">Input / Output (including CRS, XML, images)</th></tr> * <tr><td>{@link org.apache.sis.io.IO}</td> * <td>Methods working on {@link Appendable} instances.</td></tr> @@ -74,9 +78,8 @@ package org.apache.sis.util; */ public class Static { /** - * Do not allow instantiation. This construction is defined only in order to allow - * subclassing. Subclasses shall declare their own private constructor in order to - * prevent instantiation. + * For subclasses only. + * Subclasses shall declare a private constructor for preventing instantiation. */ protected Static() { } 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=1459086&r1=1459085&r2=1459086&view=diff ============================================================================== --- sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java [UTF-8] (original) +++ sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java [UTF-8] Wed Mar 20 22:36:46 2013 @@ -210,6 +210,11 @@ public final class Errors extends Indexe public static final int IllegalRange_2 = 11; /** + * Property “{0}” has an incompatible value. + */ + public static final int IncompatiblePropertyValue_1 = 86; + + /** * Units “{0}” and “{1}” are incompatible. */ public static final int IncompatibleUnits_2 = 67; @@ -270,6 +275,16 @@ public final class Errors extends Indexe public static final int MismatchedDimension_3 = 58; /** + * This operation requires the “{0}” module. + */ + public static final int MissingRequiredModule_1 = 84; + + /** + * Missing value for property “{0}”. + */ + public static final int MissingValueForProperty_1 = 85; + + /** * Missing value in the “{0}” column. */ public static final int MissingValueInColumn_1 = 77; 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=1459086&r1=1459085&r2=1459086&view=diff ============================================================================== --- sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties [ISO-8859-1] (original) +++ sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties [ISO-8859-1] Wed Mar 20 22:36:46 2013 @@ -52,6 +52,7 @@ IllegalLanguageCode_1 = The \u 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 can be associated to an instance of \u2018{1}\u2019. IllegalRange_2 = Range [{0} \u2026 {1}] is not valid. +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. @@ -66,6 +67,8 @@ MismatchedCRS = The co MismatchedDimension_2 = Mismatched object dimension: {0}D and {1}D. MismatchedDimension_3 = Argument \u2018{0}\u2019 has {2} dimension{2,choice,1#|2#s}, while {1} was expected. MissingValueInColumn_1 = Missing value in the \u201c{0}\u201d column. +MissingRequiredModule_1 = This operation requires the \u201c{0}\u201d module. +MissingValueForProperty_1 = Missing value for property \u201c{0}\u201d. 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. 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=1459086&r1=1459085&r2=1459086&view=diff ============================================================================== --- sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties [ISO-8859-1] (original) +++ sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties [ISO-8859-1] Wed Mar 20 22:36:46 2013 @@ -42,6 +42,7 @@ IllegalLanguageCode_1 = Le cod 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 ne peut pas \u00eatre associ\u00e9e \u00e0 une valeur de type \u2018{1}\u2019. IllegalRange_2 = La plage [{0} \u2026 {1}] n\u2019est pas 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. @@ -55,6 +56,8 @@ MandatoryAttribute_2 = L\u201 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}. +MissingRequiredModule_1 = Cette op\u00e9ration requiert le module \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. 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. Modified: sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.java URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.java?rev=1459086&r1=1459085&r2=1459086&view=diff ============================================================================== --- sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.java [UTF-8] (original) +++ sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.java [UTF-8] Wed Mar 20 22:36:46 2013 @@ -125,6 +125,11 @@ public final class Vocabulary extends In public static final int JavaHome = 30; /** + * Latitude + */ + public static final int Latitude = 40; + + /** * Libraries */ public static final int Libraries = 35; @@ -145,6 +150,11 @@ public final class Vocabulary extends In public static final int Localization = 19; /** + * Longitude + */ + public static final int Longitude = 41; + + /** * Maximum value */ public static final int MaximumValue = 5; Modified: sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.properties URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.properties?rev=1459086&r1=1459085&r2=1459086&view=diff ============================================================================== --- sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.properties [ISO-8859-1] (original) +++ sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary.properties [ISO-8859-1] Wed Mar 20 22:36:46 2013 @@ -28,6 +28,8 @@ Destination = Destination Directory = Directory JavaExtensions = Java extensions JavaHome = Java home directory +Latitude = Latitude +Longitude = Longitude Libraries = Libraries LocalConfiguration = Local configuration Locale = Locale Modified: sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary_fr.properties URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary_fr.properties?rev=1459086&r1=1459085&r2=1459086&view=diff ============================================================================== --- sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary_fr.properties [ISO-8859-1] (original) +++ sis/branches/JDK7/sis-utility/src/main/java/org/apache/sis/util/resources/Vocabulary_fr.properties [ISO-8859-1] Wed Mar 20 22:36:46 2013 @@ -28,6 +28,8 @@ Destination = Destination Directory = R\u00e9pertoire JavaExtensions = Extensions du Java JavaHome = R\u00e9pertoire du Java +Latitude = Latitude +Longitude = Longitude Libraries = Biblioth\u00e8ques LocalConfiguration = Configuration locale Locale = Locale
