This is an automated email from the ASF dual-hosted git repository. desruisseaux pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/sis.git
commit 1a8e38fd88929aa07d235ed7e47e761882dc8b00 Merge: f77cfeed91 0d88ef7e00 Author: Martin Desruisseaux <martin.desruisse...@geomatys.com> AuthorDate: Mon Nov 28 15:10:01 2022 +0100 Merge branch 'geoapi-3.1'. This is documentation, ISO 19115 amendment 1 and minor bug fixes. .../apache/sis/gui/coverage/CoverageExplorer.java | 2 +- .../org/apache/sis/gui/map/GestureFollower.java | 2 +- .../gui/referencing/RecentReferenceSystems.java | 1 + .../apache/sis/feature/AbstractAssociation.java | 4 +- .../org/apache/sis/feature/AbstractAttribute.java | 4 +- .../java/org/apache/sis/feature/AttributeView.java | 9 +- .../main/java/org/apache/sis/feature/Field.java | 9 +- .../apache/sis/feature/MultiValuedAssociation.java | 4 +- .../apache/sis/feature/MultiValuedAttribute.java | 4 +- .../java/org/apache/sis/feature/PropertyView.java | 5 +- .../sis/feature/builder/AttributeTypeBuilder.java | 4 +- .../sis/feature/builder/FeatureTypeBuilder.java | 2 +- .../org/apache/sis/filter/ArithmeticFunction.java | 8 ++ .../org/apache/sis/filter/AssociationValue.java | 5 + .../java/org/apache/sis/filter/BinaryFunction.java | 2 + .../apache/sis/filter/BinaryGeometryFilter.java | 2 + .../org/apache/sis/filter/BinarySpatialFilter.java | 8 +- .../org/apache/sis/filter/ComparisonFilter.java | 14 +++ .../org/apache/sis/filter/ConvertFunction.java | 1 + .../org/apache/sis/filter/DefaultSortProperty.java | 1 + .../java/org/apache/sis/filter/DistanceFilter.java | 1 + .../java/org/apache/sis/filter/LeafExpression.java | 10 +- .../java/org/apache/sis/filter/LikeFilter.java | 1 + .../java/org/apache/sis/filter/LogicalFilter.java | 8 ++ .../java/org/apache/sis/filter/PropertyValue.java | 6 ++ .../java/org/apache/sis/filter/TemporalFilter.java | 30 +++++- .../java/org/apache/sis/filter/UnaryFunction.java | 5 + .../jaxb/metadata/MI_RangeElementDescription.java | 29 +++++- .../metadata/replace}/SensorType.java | 6 +- .../sis/internal/metadata/RecordSchemaSIS.java | 36 +++++-- .../apache/sis/internal/metadata/Resources.java | 15 +++ .../sis/internal/metadata/Resources.properties | 3 + .../sis/internal/metadata/Resources_fr.properties | 3 + .../iso/DefaultApplicationSchemaInformation.java | 4 +- .../iso/DefaultExtendedElementInformation.java | 6 +- .../apache/sis/metadata/iso/DefaultIdentifier.java | 6 +- .../apache/sis/metadata/iso/DefaultMetadata.java | 6 +- .../iso/DefaultMetadataExtensionInformation.java | 4 +- .../sis/metadata/iso/DefaultMetadataScope.java | 2 +- .../iso/DefaultPortrayalCatalogueReference.java | 4 +- .../org/apache/sis/metadata/iso/ISOMetadata.java | 2 +- .../acquisition/DefaultAcquisitionInformation.java | 4 +- .../acquisition/DefaultEnvironmentalRecord.java | 6 +- .../sis/metadata/iso/acquisition/DefaultEvent.java | 6 +- .../iso/acquisition/DefaultInstrument.java | 6 +- .../metadata/iso/acquisition/DefaultObjective.java | 6 +- .../metadata/iso/acquisition/DefaultOperation.java | 6 +- .../sis/metadata/iso/acquisition/DefaultPlan.java | 6 +- .../metadata/iso/acquisition/DefaultPlatform.java | 6 +- .../iso/acquisition/DefaultPlatformPass.java | 6 +- .../iso/acquisition/DefaultRequestedDate.java | 6 +- .../iso/acquisition/DefaultRequirement.java | 6 +- .../sis/metadata/iso/acquisition/package-info.java | 2 +- .../sis/metadata/iso/citation/AbstractParty.java | 47 ++++++++- .../sis/metadata/iso/citation/DefaultAddress.java | 6 +- .../sis/metadata/iso/citation/DefaultCitation.java | 6 +- .../metadata/iso/citation/DefaultCitationDate.java | 6 +- .../sis/metadata/iso/citation/DefaultContact.java | 6 +- .../metadata/iso/citation/DefaultIndividual.java | 2 +- .../iso/citation/DefaultOnlineResource.java | 6 +- .../metadata/iso/citation/DefaultOrganisation.java | 2 +- .../iso/citation/DefaultResponsibility.java | 2 +- .../iso/citation/DefaultResponsibleParty.java | 6 +- .../sis/metadata/iso/citation/DefaultSeries.java | 6 +- .../metadata/iso/citation/DefaultTelephone.java | 6 +- .../sis/metadata/iso/citation/package-info.java | 4 +- .../iso/constraint/DefaultConstraints.java | 6 +- .../iso/constraint/DefaultLegalConstraints.java | 6 +- .../iso/constraint/DefaultReleasability.java | 2 +- .../iso/constraint/DefaultSecurityConstraints.java | 6 +- .../sis/metadata/iso/constraint/package-info.java | 2 +- .../iso/content/AbstractContentInformation.java | 6 +- .../iso/content/DefaultAttributeGroup.java | 2 +- .../sis/metadata/iso/content/DefaultBand.java | 6 +- .../iso/content/DefaultCoverageDescription.java | 6 +- .../DefaultFeatureCatalogueDescription.java | 4 +- .../iso/content/DefaultFeatureTypeInfo.java | 2 +- .../iso/content/DefaultImageDescription.java | 6 +- .../iso/content/DefaultRangeDimension.java | 6 +- .../content/DefaultRangeElementDescription.java | 6 +- .../iso/content/DefaultSampleDimension.java | 41 +++++++- .../sis/metadata/iso/content/package-info.java | 4 +- .../metadata/iso/distribution/DefaultDataFile.java | 6 +- .../DefaultDigitalTransferOptions.java | 4 +- .../iso/distribution/DefaultDistribution.java | 6 +- .../iso/distribution/DefaultDistributor.java | 6 +- .../metadata/iso/distribution/DefaultFormat.java | 6 +- .../metadata/iso/distribution/DefaultMedium.java | 6 +- .../distribution/DefaultStandardOrderProcess.java | 6 +- .../metadata/iso/distribution/package-info.java | 2 +- .../iso/extent/AbstractGeographicExtent.java | 6 +- .../iso/extent/DefaultBoundingPolygon.java | 6 +- .../sis/metadata/iso/extent/DefaultExtent.java | 6 +- .../iso/extent/DefaultGeographicBoundingBox.java | 6 +- .../iso/extent/DefaultGeographicDescription.java | 6 +- .../iso/extent/DefaultSpatialTemporalExtent.java | 6 +- .../metadata/iso/extent/DefaultTemporalExtent.java | 6 +- .../metadata/iso/extent/DefaultVerticalExtent.java | 6 +- .../sis/metadata/iso/extent/package-info.java | 2 +- .../iso/identification/AbstractIdentification.java | 6 +- .../DefaultAggregateInformation.java | 6 +- .../identification/DefaultAssociatedResource.java | 2 +- .../iso/identification/DefaultBrowseGraphic.java | 6 +- .../iso/identification/DefaultCoupledResource.java | 2 +- .../identification/DefaultDataIdentification.java | 6 +- .../iso/identification/DefaultKeywordClass.java | 2 +- .../iso/identification/DefaultKeywords.java | 6 +- .../DefaultOperationChainMetadata.java | 2 +- .../identification/DefaultOperationMetadata.java | 2 +- .../DefaultRepresentativeFraction.java | 2 +- .../iso/identification/DefaultResolution.java | 6 +- .../DefaultServiceIdentification.java | 6 +- .../metadata/iso/identification/DefaultUsage.java | 6 +- .../metadata/iso/identification/package-info.java | 2 +- .../sis/metadata/iso/lineage/DefaultAlgorithm.java | 6 +- .../sis/metadata/iso/lineage/DefaultLineage.java | 6 +- .../iso/lineage/DefaultNominalResolution.java | 6 +- .../metadata/iso/lineage/DefaultProcessStep.java | 6 +- .../iso/lineage/DefaultProcessStepReport.java | 6 +- .../metadata/iso/lineage/DefaultProcessing.java | 6 +- .../sis/metadata/iso/lineage/DefaultSource.java | 6 +- .../sis/metadata/iso/lineage/package-info.java | 2 +- .../maintenance/DefaultMaintenanceInformation.java | 4 +- .../sis/metadata/iso/maintenance/DefaultScope.java | 6 +- .../iso/maintenance/DefaultScopeDescription.java | 6 +- .../sis/metadata/iso/maintenance/package-info.java | 2 +- .../org/apache/sis/metadata/iso/package-info.java | 2 +- .../metadata/iso/quality/AbstractCompleteness.java | 6 +- .../iso/quality/AbstractDataEvaluation.java | 4 +- .../sis/metadata/iso/quality/AbstractElement.java | 4 +- .../iso/quality/AbstractLogicalConsistency.java | 6 +- .../metadata/iso/quality/AbstractMetaquality.java | 2 +- .../iso/quality/AbstractPositionalAccuracy.java | 6 +- .../sis/metadata/iso/quality/AbstractResult.java | 4 +- .../iso/quality/AbstractTemporalAccuracy.java | 6 +- .../iso/quality/AbstractTemporalQuality.java | 4 +- .../iso/quality/AbstractThematicAccuracy.java | 6 +- .../DefaultAbsoluteExternalPositionalAccuracy.java | 4 +- .../quality/DefaultAccuracyOfATimeMeasurement.java | 4 +- .../iso/quality/DefaultAggregationDerivation.java | 2 +- .../metadata/iso/quality/DefaultBasicMeasure.java | 2 +- .../iso/quality/DefaultCompletenessCommission.java | 4 +- .../iso/quality/DefaultCompletenessOmission.java | 4 +- .../iso/quality/DefaultConceptualConsistency.java | 4 +- .../metadata/iso/quality/DefaultConfidence.java | 2 +- .../iso/quality/DefaultConformanceResult.java | 6 +- .../iso/quality/DefaultCoverageResult.java | 6 +- .../metadata/iso/quality/DefaultDataQuality.java | 6 +- .../metadata/iso/quality/DefaultDescription.java | 2 +- .../iso/quality/DefaultDescriptiveResult.java | 2 +- .../iso/quality/DefaultDomainConsistency.java | 6 +- .../iso/quality/DefaultEvaluationMethod.java | 2 +- .../iso/quality/DefaultFormatConsistency.java | 6 +- .../iso/quality/DefaultFullInspection.java | 2 +- .../DefaultGriddedDataPositionalAccuracy.java | 4 +- .../metadata/iso/quality/DefaultHomogeneity.java | 2 +- .../iso/quality/DefaultIndirectEvaluation.java | 2 +- .../sis/metadata/iso/quality/DefaultMeasure.java | 2 +- .../iso/quality/DefaultMeasureReference.java | 2 +- .../DefaultNonQuantitativeAttributeAccuracy.java | 4 +- ...DefaultNonQuantitativeAttributeCorrectness.java | 4 +- .../DefaultQuantitativeAttributeAccuracy.java | 4 +- .../iso/quality/DefaultQuantitativeResult.java | 6 +- .../DefaultRelativeInternalPositionalAccuracy.java | 4 +- .../iso/quality/DefaultRepresentativity.java | 2 +- .../iso/quality/DefaultSampleBasedInspection.java | 10 +- .../sis/metadata/iso/quality/DefaultScope.java | 6 +- .../iso/quality/DefaultSourceReference.java | 2 +- .../DefaultStandaloneQualityReportInformation.java | 2 +- .../iso/quality/DefaultTemporalConsistency.java | 6 +- .../iso/quality/DefaultTemporalValidity.java | 6 +- .../DefaultThematicClassificationCorrectness.java | 4 +- .../iso/quality/DefaultTopologicalConsistency.java | 4 +- .../sis/metadata/iso/quality/DefaultUsability.java | 6 +- .../iso/quality/DefaultUsabilityElement.java | 4 +- .../sis/metadata/iso/quality/package-info.java | 2 +- .../spatial/AbstractGeolocationInformation.java | 4 +- .../iso/spatial/AbstractSpatialRepresentation.java | 44 +++++++- .../sis/metadata/iso/spatial/DefaultDimension.java | 6 +- .../sis/metadata/iso/spatial/DefaultGCP.java | 6 +- .../metadata/iso/spatial/DefaultGCPCollection.java | 6 +- .../iso/spatial/DefaultGeometricObjects.java | 6 +- .../metadata/iso/spatial/DefaultGeorectified.java | 6 +- .../iso/spatial/DefaultGeoreferenceable.java | 6 +- .../spatial/DefaultGridSpatialRepresentation.java | 6 +- .../DefaultVectorSpatialRepresentation.java | 4 +- .../sis/metadata/iso/spatial/package-info.java | 4 +- .../org/apache/sis/util/iso/DefaultMemberName.java | 2 +- .../apache/sis/util/iso/DefaultNameFactory.java | 2 +- .../apache/sis/util/iso/DefaultRecordSchema.java | 22 +++- .../org/apache/sis/util/iso/DefaultRecordType.java | 13 ++- .../main/java/org/apache/sis/util/iso/Names.java | 14 +++ .../main/java/org/apache/sis/util/iso/Types.java | 2 +- .../iso/quality/DefaultQuantitativeResultTest.java | 116 +++++++++++++++++++++ .../sis/test/xml/AnnotationConsistencyCheck.java | 5 +- .../sis/xml/CharSequenceSubstitutionTest.java | 2 +- .../sis/parameter/DefaultParameterValueGroup.java | 2 +- .../sis/referencing/AbstractIdentifiedObject.java | 6 +- .../sis/referencing/ImmutableIdentifier.java | 2 +- .../apache/sis/referencing/NamedIdentifier.java | 4 +- .../apache/sis/referencing/crs/AbstractCRS.java | 4 +- .../org/apache/sis/referencing/cs/AbstractCS.java | 4 +- .../sis/referencing/datum/AbstractDatum.java | 2 +- .../operation/AbstractCoordinateOperation.java | 4 +- .../operation/DefaultConcatenatedOperation.java | 2 +- .../referencing/operation/DefaultConversion.java | 4 +- .../operation/DefaultPassThroughOperation.java | 2 +- .../operation/DefaultTransformation.java | 2 +- .../main/java/org/apache/sis/math/ArrayVector.java | 5 +- .../org/apache/sis/measure/ConventionalUnit.java | 5 +- .../java/org/apache/sis/measure/DerivedScalar.java | 6 +- .../main/java/org/apache/sis/measure/Scalar.java | 3 +- .../org/apache/sis/measure/ScalarFallback.java | 5 +- .../org/apache/sis/util/collection/DerivedMap.java | 21 ++++ .../org/apache/sis/util/collection/DerivedSet.java | 3 + .../sis/util/collection/FrequencySortedSet.java | 3 + .../org/apache/sis/util/collection/RangeSet.java | 3 + .../org/apache/sis/util/collection/TreeTable.java | 2 +- .../apache/sis/util/resources/package-info.java | 10 +- ide-project/NetBeans/nbproject/project.properties | 2 +- pom.xml | 4 +- .../storage/aggregate/AggregatedFeatureSet.java | 9 +- .../sis/storage/aggregate/CoverageAggregator.java | 1 + .../apache/sis/internal/storage/gpx/Copyright.java | 23 ++-- 224 files changed, 933 insertions(+), 464 deletions(-) diff --cc core/sis-feature/src/main/java/org/apache/sis/feature/AbstractAssociation.java index 7fd9ce8b02,136c58ec32..848d091e67 --- a/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractAssociation.java +++ b/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractAssociation.java @@@ -145,10 -148,10 +145,10 @@@ public abstract class AbstractAssociati * <p>The default implementation returns a collection which will delegate its work to * {@link #getValue()} and {@link #setValue(Object)}.</p> * - * @return the features in a <cite>live</cite> collection. + * @return the features in a <em>live</em> collection. */ @Override - public Collection<Feature> getValues() { + public Collection<AbstractFeature> getValues() { return super.getValues(); } diff --cc core/sis-feature/src/main/java/org/apache/sis/feature/AttributeView.java index c93e657d39,be0758cde5..399c2dcd34 --- a/core/sis-feature/src/main/java/org/apache/sis/feature/AttributeView.java +++ b/core/sis-feature/src/main/java/org/apache/sis/feature/AttributeView.java @@@ -36,10 -38,14 +36,14 @@@ import java.util.Objects * * @author Martin Desruisseaux (Geomatys) * @version 0.8 - * @since 0.8 + * + * @param <V> the type of attribute values. If the attribute supports multi-occurrences, + * then this is the type of elements (not the collection type). + * + * @since 0.8 * @module */ -class AttributeView<V> extends PropertyView<V> implements Attribute<V> { +class AttributeView<V> extends AbstractAttribute<V> { /** * For cross-version compatibility. */ diff --cc core/sis-feature/src/main/java/org/apache/sis/feature/Field.java index df704eece4,53c280d8bf..40d410060c --- a/core/sis-feature/src/main/java/org/apache/sis/feature/Field.java +++ b/core/sis-feature/src/main/java/org/apache/sis/feature/Field.java @@@ -29,10 -35,13 +29,13 @@@ import org.apache.sis.util.Deprecable * * @author Martin Desruisseaux (Geomatys) * @version 0.8 - * @since 0.5 + * + * @param <V> the type of property values. + * + * @since 0.5 * @module */ -abstract class Field<V> implements Property { +abstract class Field<V> extends Property { /** * For subclass constructors. */ diff --cc core/sis-feature/src/main/java/org/apache/sis/feature/PropertyView.java index 04e191eba5,732776ed54..26807d750f --- a/core/sis-feature/src/main/java/org/apache/sis/feature/PropertyView.java +++ b/core/sis-feature/src/main/java/org/apache/sis/feature/PropertyView.java @@@ -39,14 -48,39 +39,17 @@@ import org.apache.sis.internal.feature. * * @author Martin Desruisseaux (Geomatys) * @version 0.8 - * @since 0.8 + * + * @param <V> the type of property values. + * + * @since 0.8 * @module */ -abstract class PropertyView<V> extends Field<V> implements Property, Serializable { - /** - * For cross-version compatibility. - */ - private static final long serialVersionUID = -5605415150581699255L; - +final class PropertyView { /** - * The feature from which to read and where to write the attribute or association value. - */ - @SuppressWarnings("serial") // Not statically typed as Serializable. - final Feature feature; - - /** - * The string representation of the property name. This is the value to be given in calls to - * {@link Feature#getPropertyValue(String)} and {@link Feature#setPropertyValue(String, Object)}. - */ - final String name; - - /** - * Creates a new property which will delegate its work to the given feature. - * - * @param feature the feature from which to read and where to write the property value. - * @param name the string representation of the property name. + * Do not allow instantiation of this class. */ - PropertyView(final Feature feature, final String name) { - this.feature = feature; - this.name = name; + private PropertyView() { } /** diff --cc core/sis-feature/src/main/java/org/apache/sis/filter/AssociationValue.java index ae65d82973,67914b95d6..ee0652794e --- a/core/sis-feature/src/main/java/org/apache/sis/filter/AssociationValue.java +++ b/core/sis-feature/src/main/java/org/apache/sis/filter/AssociationValue.java @@@ -51,12 -51,17 +51,17 @@@ import org.apache.sis.internal.geoapi.f * @since 1.2 * @module */ -final class AssociationValue<V> extends LeafExpression<Feature, V> - implements ValueReference<Feature, V>, Optimization.OnExpression<Feature, V> +final class AssociationValue<V> extends LeafExpression<AbstractFeature, V> + implements ValueReference<AbstractFeature, V>, Optimization.OnExpression<AbstractFeature, V> { + /** + * For cross-version compatibility. + */ + private static final long serialVersionUID = 2082322712413854288L; + /** * Path to the property from which to retrieve the value. - * Each element in the array is an argument to give in a call to {@link Feature#getProperty(String)}. + * Each element in the array is an argument to give in a call to {@code Feature.getProperty(String)}. * This array should be considered read-only because it may be shared. */ private final String[] path; diff --cc core/sis-feature/src/main/java/org/apache/sis/filter/BinaryGeometryFilter.java index ac7287a3bf,741ebfc587..c1c497e70b --- a/core/sis-feature/src/main/java/org/apache/sis/filter/BinaryGeometryFilter.java +++ b/core/sis-feature/src/main/java/org/apache/sis/filter/BinaryGeometryFilter.java @@@ -59,12 -65,18 +59,14 @@@ abstract class BinaryGeometryFilter<R,G /** * The first of the two expressions to be used by this function. - * - * @see BinarySpatialOperator#getOperand1() */ + @SuppressWarnings("serial") // Not statically typed as Serializable. protected final Expression<? super R, GeometryWrapper<G>> expression1; /** * The second of the two expressions to be used by this function. - * - * @see BinarySpatialOperator#getOperand2() */ + @SuppressWarnings("serial") // Not statically typed as Serializable. protected final Expression<? super R, GeometryWrapper<G>> expression2; /** diff --cc core/sis-feature/src/main/java/org/apache/sis/filter/LeafExpression.java index bff8fae7b9,76dd982fc1..db1ed31b08 --- a/core/sis-feature/src/main/java/org/apache/sis/filter/LeafExpression.java +++ b/core/sis-feature/src/main/java/org/apache/sis/filter/LeafExpression.java @@@ -76,8 -77,11 +76,11 @@@ abstract class LeafExpression<R,V> exte /** * A constant, literal value that can be used in expressions. * The {@link #apply(Object)} method ignores the argument and always returns {@link #getValue()}. + * + * @param <R> the type of resources used as inputs. + * @param <V> the type of value computed by the expression. */ - static class Literal<R,V> extends LeafExpression<R,V> implements org.opengis.filter.Literal<R,V> { + static class Literal<R,V> extends LeafExpression<R,V> implements org.apache.sis.internal.geoapi.filter.Literal<R,V> { /** For cross-version compatibility. */ private static final long serialVersionUID = -8383113218490957822L; diff --cc core/sis-feature/src/main/java/org/apache/sis/filter/UnaryFunction.java index fcf3f88e9a,62b0d4c76f..a8ac6ffa9c --- a/core/sis-feature/src/main/java/org/apache/sis/filter/UnaryFunction.java +++ b/core/sis-feature/src/main/java/org/apache/sis/filter/UnaryFunction.java @@@ -95,10 -99,12 +96,12 @@@ class UnaryFunction<R,V> extends Node * Filter operator that checks if an expression's value is {@code null}. A {@code null} * is equivalent to no value present. The value 0 is a valid value and is not considered * {@code null}. + * + * @param <R> the type of resources used as inputs. */ static final class IsNull<R> extends UnaryFunction<R,Object> - implements NullOperator<R>, Optimization.OnFilter<R> - { + implements Filter<R>, Optimization.OnFilter<R> + { /** For cross-version compatibility. */ private static final long serialVersionUID = 2960285515924533419L; @@@ -132,9 -134,11 +135,11 @@@ * Filter operator that checks if an expression's value is nil. * The difference with {@link IsNull} is that a value should exist but * cannot be provided for the reason given by {@link #getNilReason()}. + * + * @param <R> the type of resources used as inputs. */ static final class IsNil<R> extends UnaryFunction<R,Object> - implements NilOperator<R>, Optimization.OnFilter<R> + implements Filter<R>, Optimization.OnFilter<R> { /** For cross-version compatibility. */ private static final long serialVersionUID = -7540765433296725888L; diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/AbstractParty.java index d8acf195c1,1b53fcf885..af084ce29f --- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/AbstractParty.java +++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/AbstractParty.java @@@ -22,17 -22,17 +22,20 @@@ import javax.xml.bind.annotation.XmlEle import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlSeeAlso; import org.opengis.util.InternationalString; + import org.opengis.metadata.Identifier; import org.opengis.metadata.citation.Contact; -import org.opengis.metadata.citation.Individual; -import org.opengis.metadata.citation.Organisation; -import org.opengis.metadata.citation.Party; import org.apache.sis.metadata.iso.ISOMetadata; import org.apache.sis.metadata.TitleProperty; import org.apache.sis.util.iso.Types; + import org.apache.sis.xml.IdentifierSpace; + import org.apache.sis.internal.jaxb.NonMarshalledAuthority; +// Branch-specific imports +import org.opengis.annotation.UML; +import static org.opengis.annotation.Obligation.OPTIONAL; +import static org.opengis.annotation.Obligation.CONDITIONAL; +import static org.opengis.annotation.Specification.ISO_19115; + /** * Information about the individual and / or organization of the party. diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultResponsibleParty.java index 3ee470f80a,dc9359aa13..2b9c948b1e --- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultResponsibleParty.java +++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultResponsibleParty.java @@@ -125,8 -112,8 +125,8 @@@ public class DefaultResponsibleParty ex * <li>Otherwise if the given object is already an instance of * {@code DefaultResponsibleParty}, then it is returned unchanged.</li> * <li>Otherwise a new {@code DefaultResponsibleParty} instance is created using the - * {@linkplain #DefaultResponsibleParty(ResponsibleParty) copy constructor} - * and returned. Note that this is a <dfn>shallow</dfn> copy operation, because the other - * {@linkplain #DefaultResponsibleParty(Responsibility) copy constructor} and returned. ++ * {@linkplain #DefaultResponsibleParty(ResponsibleParty) copy constructor} and returned. + * Note that this is a <em>shallow</em> copy operation, because the other * metadata contained in the given object are not recursively copied.</li> * </ul> * diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultSampleDimension.java index 35d121ae94,eab7d2ddfb..bb2f5f29d9 --- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultSampleDimension.java +++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultSampleDimension.java @@@ -23,8 -24,10 +24,9 @@@ import javax.xml.bind.annotation.XmlSee import javax.xml.bind.annotation.XmlType; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; import org.opengis.metadata.content.Band; -import org.opengis.metadata.content.SampleDimension; import org.opengis.metadata.content.CoverageContentType; import org.opengis.metadata.content.TransferFunctionType; + import org.opengis.metadata.content.RangeElementDescription; import org.opengis.util.Record; import org.opengis.util.RecordType; import org.apache.sis.measure.ValueRange; @@@ -481,6 -485,32 +491,31 @@@ public class DefaultSampleDimension ext } } + /** + * Provides the description and values of the specific range elements of a sample dimension. + * Example: missing data. + * + * @return description and values of the specific range elements. + * + * @since 1.3 + */ - @Override + @XmlElement(name = "rangeElementDescription") + @XmlJavaTypeAdapter(MI_RangeElementDescription.Since2014.class) + public Collection<RangeElementDescription> getRangeElementDescriptions() { + return rangeElementDescriptions = nonNullCollection(rangeElementDescriptions, RangeElementDescription.class); + } + + /** + * Sets the description and values of the specific range elements of a sample dimension. + * + * @param newValues the new range element description. + * + * @since 1.3 + */ + public void setRangeElementDescriptions(final Collection<? extends RangeElementDescription> newValues) { + rangeElementDescriptions = writeCollection(newValues, rangeElementDescriptions, RangeElementDescription.class); + } + /** * Returns the smallest distance between which separate points can be distinguished, * as specified in instrument design. diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultAggregateInformation.java index a279870e63,6f644b555a..c1478819c1 --- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultAggregateInformation.java +++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultAggregateInformation.java @@@ -91,18 -89,9 +91,18 @@@ public class DefaultAggregateInformatio public DefaultAggregateInformation() { } + /** + * Constructs a new instance initialized with the values from the specified metadata object. + * + * @param object The metadata to copy values from. + */ + DefaultAggregateInformation(final DefaultAssociatedResource object) { + super(object); + } + /** * Constructs a new instance initialized with the values from the specified metadata object. - * This is a <dfn>shallow</dfn> copy constructor, because the other metadata contained in the + * This is a <em>shallow</em> copy constructor, because the other metadata contained in the * given object are not recursively copied. * * @param object the metadata to copy values from, or {@code null} if none. @@@ -124,8 -111,8 +124,8 @@@ * <li>Otherwise if the given object is already an instance of * {@code DefaultAggregateInformation}, then it is returned unchanged.</li> * <li>Otherwise a new {@code DefaultAggregateInformation} instance is created using the - * {@linkplain #DefaultAggregateInformation(AggregateInformation) copy constructor} - * and returned. Note that this is a <dfn>shallow</dfn> copy operation, because the other - * {@linkplain #DefaultAggregateInformation(AssociatedResource) copy constructor} and returned. ++ * {@linkplain #DefaultAggregateInformation(AggregateInformation) copy constructor} and returned. + * Note that this is a <em>shallow</em> copy operation, because the other * metadata contained in the given object are not recursively copied.</li> * </ul> * diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultAssociatedResource.java index 8ab487335e,6e6d8b7bac..f801fa3593 --- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultAssociatedResource.java +++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultAssociatedResource.java @@@ -121,22 -113,9 +121,22 @@@ public class DefaultAssociatedResource this.associationType = associationType; } + /** + * Constructs a new instance initialized with the values from the specified metadata object. + * This is a constructor for {@link DefaultAggregateInformation} constructor only. + * + * @param object The metadata to copy values from. + */ + DefaultAssociatedResource(final DefaultAssociatedResource object) { + this.associationType = object.associationType; + this.initiativeType = object.initiativeType; + this.name = object.name; + this.metadataReference = object.metadataReference; + } + /** * Constructs a new instance initialized with the values from the specified metadata object. - * This is a <dfn>shallow</dfn> copy constructor, because the other metadata contained in the + * This is a <em>shallow</em> copy constructor, because the other metadata contained in the * given object are not recursively copied. * * @param object the metadata to copy values from, or {@code null} if none. diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultOperationMetadata.java index 1728155a94,e0bab1129b..ff4b6a1d1d --- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultOperationMetadata.java +++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultOperationMetadata.java @@@ -137,9 -121,25 +137,9 @@@ public class DefaultOperationMetadata e public DefaultOperationMetadata() { } - /** - * Constructs a new operation metadata initialized to the specified values. - * - * @param operationName an unique identifier for this interface. - * @param platform distributed computing platforms on which the operation has been implemented. - * @param connectPoint handle for accessing the service interface. - */ - public DefaultOperationMetadata(final String operationName, - final DistributedComputingPlatform platform, - final OnlineResource connectPoint) - { - this.operationName = operationName; - this.distributedComputingPlatforms = singleton(platform, DistributedComputingPlatform.class); - this.connectPoints = singleton(connectPoint, OnlineResource.class); - } - /** * Constructs a new instance initialized with the values from the specified metadata object. - * This is a <dfn>shallow</dfn> copy constructor, because the other metadata contained in the + * This is a <em>shallow</em> copy constructor, because the other metadata contained in the * given object are not recursively copied. * * @param object the metadata to copy values from, or {@code null} if none. diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/AbstractDataEvaluation.java index 78b60fd1dc,0421e47f54..4edc07846a --- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/AbstractDataEvaluation.java +++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/AbstractDataEvaluation.java @@@ -48,11 -48,10 +48,11 @@@ import static org.opengis.annotation.Sp @XmlRootElement(name = "AbstractDQ_DataEvaluation") @XmlSeeAlso({ DefaultFullInspection.class, - DefaultIndirectEvaluation .class, + DefaultIndirectEvaluation.class, DefaultSampleBasedInspection.class }) -public class AbstractDataEvaluation extends DefaultEvaluationMethod implements DataEvaluation { +@UML(identifier="DQ_DataEvaluation", specification=UNSPECIFIED) +public class AbstractDataEvaluation extends DefaultEvaluationMethod { /** * Serial number for inter-operability with different versions. */ diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/AbstractTemporalQuality.java index 4bf707b888,3144d1d2b0..4a6eda966f --- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/AbstractTemporalQuality.java +++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/AbstractTemporalQuality.java @@@ -100,8 -95,8 +100,8 @@@ public class AbstractTemporalQuality ex * <li>Otherwise if the given object is already an instance of * {@code AbstractTemporalQuality}, then it is returned unchanged.</li> * <li>Otherwise a new {@code AbstractTemporalQuality} instance is created using the - * {@linkplain #AbstractTemporalQuality(TemporalQuality) copy constructor} and returned. + * {@linkplain #AbstractTemporalQuality(TemporalAccuracy) copy constructor} and returned. - * Note that this is a <dfn>shallow</dfn> copy operation, because the other + * Note that this is a <em>shallow</em> copy operation, because the other * metadata contained in the given object are not recursively copied.</li> * </ul> * diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultNonQuantitativeAttributeCorrectness.java index 0e9364294d,a6f1f1a4f5..6051e556c0 --- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultNonQuantitativeAttributeCorrectness.java +++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultNonQuantitativeAttributeCorrectness.java @@@ -91,8 -87,8 +91,8 @@@ public class DefaultNonQuantitativeAttr * <li>Otherwise if the given object is already an instance of * {@code DefaultNonQuantitativeAttributeCorrectness}, then it is returned unchanged.</li> * <li>Otherwise a new {@code DefaultNonQuantitativeAttributeCorrectness} instance is created using the - * {@linkplain #DefaultNonQuantitativeAttributeCorrectness(NonQuantitativeAttributeCorrectness) copy constructor} + * {@linkplain #DefaultNonQuantitativeAttributeCorrectness(NonQuantitativeAttributeAccuracy) copy constructor} - * and returned. Note that this is a <dfn>shallow</dfn> copy operation, because the other + * and returned. Note that this is a <em>shallow</em> copy operation, because the other * metadata contained in the given object are not recursively copied.</li> * </ul> * diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultSampleBasedInspection.java index 96366fbb99,eeb2268fc9..bb5649054b --- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultSampleBasedInspection.java +++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultSampleBasedInspection.java @@@ -89,9 -83,9 +89,9 @@@ public class DefaultSampleBasedInspecti public DefaultSampleBasedInspection() { } -- /** ++ /** * Constructs a new instance initialized with the values from the specified metadata object. - * This is a <dfn>shallow</dfn> copy constructor, because the other metadata contained in the + * This is a <em>shallow</em> copy constructor, because the other metadata contained in the * given object are not recursively copied. * * @param object the metadata to copy values from, or {@code null} if none. @@@ -105,7 -101,32 +105,7 @@@ } } - /** + /** - * Returns a SIS metadata implementation with the values of the given arbitrary implementation. - * This method performs the first applicable action in the following choices: - * - * <ul> - * <li>If the given object is {@code null}, then this method returns {@code null}.</li> - * <li>Otherwise if the given object is already an instance of - * {@code DefaultSampleBasedInspection}, then it is returned unchanged.</li> - * <li>Otherwise a new {@code DefaultSampleBasedInspection} instance is created using the - * {@linkplain #DefaultSampleBasedInspection(SampleBasedInspection) copy constructor} and returned. - * Note that this is a <em>shallow</em> copy operation, because the other - * metadata contained in the given object are not recursively copied.</li> - * </ul> - * - * @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 DefaultSampleBasedInspection castOrCopy(final SampleBasedInspection object) { - if (object == null || object instanceof DefaultSampleBasedInspection) { - return (DefaultSampleBasedInspection) object; - } - return new DefaultSampleBasedInspection(object); - } - - /** * Returns the information of the type of sampling scheme and description of the sampling procedure. * * @return sampling scheme and sampling procedure. @@@ -126,7 -147,7 +126,7 @@@ samplingScheme = newValue; } -- /** ++ /** * Returns the information of how lots are defined. * * @return information on lots. @@@ -147,7 -168,7 +147,7 @@@ lotDescription = newValue; } -- /** ++ /** * Returns the information on how many samples on average are extracted for inspection from each lot of population. * * @return average number of samples extracted for inspection. diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultUsabilityElement.java index b93e3fba3d,5d104a9e3c..82f62c996f --- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultUsabilityElement.java +++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultUsabilityElement.java @@@ -89,8 -84,8 +89,8 @@@ public class DefaultUsabilityElement ex * <li>Otherwise if the given object is already an instance of * {@code DefaultUsabilityElement}, then it is returned unchanged.</li> * <li>Otherwise a new {@code DefaultUsabilityElement} instance is created using the - * {@linkplain #DefaultUsabilityElement(UsabilityElement) copy constructor} and returned. + * {@linkplain #DefaultUsabilityElement(Usability) copy constructor} and returned. - * Note that this is a <dfn>shallow</dfn> copy operation, because the other + * Note that this is a <em>shallow</em> copy operation, because the other * metadata contained in the given object are not recursively copied.</li> * </ul> * diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/AbstractSpatialRepresentation.java index bba38d3bf6,6ac5fbe269..5d3bc0b9d8 --- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/AbstractSpatialRepresentation.java +++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/AbstractSpatialRepresentation.java @@@ -18,7 -18,10 +18,10 @@@ package org.apache.sis.metadata.iso.spa import javax.xml.bind.annotation.XmlType; import javax.xml.bind.annotation.XmlSeeAlso; + import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; + import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; -import org.opengis.metadata.maintenance.Scope; ++import org.opengis.metadata.quality.Scope; import org.opengis.metadata.spatial.SpatialRepresentation; import org.opengis.metadata.spatial.GridSpatialRepresentation; import org.opengis.metadata.spatial.VectorSpatialRepresentation; @@@ -73,6 -83,32 +83,34 @@@ public class AbstractSpatialRepresentat */ public AbstractSpatialRepresentation(final SpatialRepresentation object) { super(object); ++ if (object instanceof AbstractSpatialRepresentation) { ++ scope = ((AbstractSpatialRepresentation) object).getScope(); ++ } + } + + /** + * Returns the level and extent of the spatial representation. + * + * @return level and extent of the spatial representation, or {@code null} if none. + * + * @since 1.3 + */ - @Override + @XmlElement(name = "scope") + @XmlJavaTypeAdapter(MD_Scope.Since2014.class) + public Scope getScope() { + return scope; + } + + /** + * Sets the level and extent of the spatial representation. + * + * @param newValue the new type of resource. + * + * @since 1.3 + */ + public void setScope(final Scope newValue) { + checkWritePermission(scope); + scope = newValue; } /** diff --cc core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/quality/DefaultQuantitativeResultTest.java index d24c5ebac8,78f21b9fbd..ba7284fead --- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/quality/DefaultQuantitativeResultTest.java +++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/quality/DefaultQuantitativeResultTest.java @@@ -47,4 -62,105 +62,105 @@@ public final strictfp class DefaultQuan r.setErrorStatistic(new SimpleInternationalString("a description")); assertFalse(r.isEmpty()); } + + /** + * Creates a {@code DefaultQuantitativeResult} instance wrapped in an element. + * The returned element is as below: + * + * {@preformat text + * Quantitative attribute accuracy + * ├─Measure + * │ └─Name of measure…………………… Some quality flag + * └─Quantitative result + * ├─Value……………………………………………… The quality is okay + * └─Value record type……………… CharacterSequence + * } + */ + @SuppressWarnings("deprecation") + private static Element createResultInsideElement() { + /* + * The `RecordType` constructor invoked at unmarshalling time sets the name + * to the hard-coded "Multiline record" string. We need to use the same name. + */ + final RecordType recordType = RecordSchemaSIS.INSTANCE.createRecordType( + RecordSchemaSIS.MULTILINE.toInternationalString(), + Collections.singletonMap("Result of quality measurement", String.class)); + /* + * The `Record` constructor invoked at unmarshalling time sets the type + * to the hard-coded "Single text" value. We need to use the same type. + */ + final RecordType singleText = RecordSchemaSIS.STRING; + final DefaultRecord record = new DefaultRecord(singleText); + record.set(TestUtilities.getSingleton(singleText.getMembers()), "The quality is okay"); + /* + * Record type and record value are set independently in two properties. + * In current implementation, `record.type` is not equal to `recordType`. + */ + assertNotEquals(recordType, record.getRecordType()); // Actually a limitation, not an intended behavior. + final DefaultQuantitativeResult result = new DefaultQuantitativeResult(); + result.setValues(Collections.singletonList(record)); + result.setValueType(recordType); + /* + * Opportunistically test the redirection implemented in deprecated methods. + */ + final DefaultQuantitativeAttributeAccuracy element = new DefaultQuantitativeAttributeAccuracy(); + element.setNamesOfMeasure(Collections.singleton(new SimpleInternationalString("Some quality flag"))); + element.setResults(Collections.singleton(result)); + return element; + } + + /** + * Tests unmarshalling of an XML element containing result records. + * + * @throws JAXBException if an error occurred during unmarshalling. + */ + @Test + public void testUnmarshallingLegacy() throws JAXBException { + final String xml = // Following XML shall match the object built by `createResultInsideElement()`. + "<gmd:DQ_QuantitativeAttributeAccuracy xmlns:gmd=\"" + LegacyNamespaces.GMD + '"' + + " xmlns:gco=\"" + LegacyNamespaces.GCO + "\">\n" + + " <gmd:nameOfMeasure>\n" + + " <gco:CharacterString>Some quality flag</gco:CharacterString>\n" + + " </gmd:nameOfMeasure>\n" + + " <gmd:result>\n" + + " <gmd:DQ_QuantitativeResult>\n" + + " <gmd:value>\n" + + " <gco:Record>The quality is okay</gco:Record>\n" + + " </gmd:value>\n" + + " <gmd:valueType>\n" + + " <gco:RecordType>Result of quality measurement</gco:RecordType>\n" + + " </gmd:valueType>\n" + + " </gmd:DQ_QuantitativeResult>\n" + + " </gmd:result>\n" + + "</gmd:DQ_QuantitativeAttributeAccuracy>"; + + final Element unmarshalled = (Element) XML.unmarshal(xml); + final Element programmatic = createResultInsideElement(); + /* + * Before to compare the two `Element`, compare some individual components. + * The intent is to identify which metadata is not equal in case of test failure. + */ + final QuantitativeResult uResult = (QuantitativeResult) TestUtilities.getSingleton(unmarshalled.getResults()); + final QuantitativeResult pResult = (QuantitativeResult) TestUtilities.getSingleton(programmatic.getResults()); + final RecordType uType = uResult.getValueType(); + final RecordType pType = pResult.getValueType(); - final Map<MemberName,Type> uFields = uType.getFieldTypes(); - final Map<MemberName,Type> pFields = pType.getFieldTypes(); ++ final Map<MemberName,Type> uFields = uType.getMemberTypes(); ++ final Map<MemberName,Type> pFields = pType.getMemberTypes(); + final Iterator<MemberName> uIter = uFields.keySet().iterator(); + final Iterator<MemberName> pIter = pFields.keySet().iterator(); + assertEquals(uFields.size(), pFields.size()); + while (uIter.hasNext() | pIter.hasNext()) { + final MemberName uName = uIter.next(); + final MemberName pName = pIter.next(); + assertEquals(uName.scope(), pName.scope()); + assertEquals(uName, pName); + assertEquals(uFields.get(uName), pFields.get(pName)); + } + assertEquals(uFields, pFields); + assertEquals(uType.getMembers(), pType.getMembers()); + assertEquals(uType.getTypeName(), pType.getTypeName()); + assertEquals(uType, pType); + assertEquals(uResult, pResult); + assertEquals(unmarshalled, programmatic); + } } diff --cc core/sis-metadata/src/test/java/org/apache/sis/test/xml/AnnotationConsistencyCheck.java index 0040bba469,b9dedd91e2..8b67c34e96 --- a/core/sis-metadata/src/test/java/org/apache/sis/test/xml/AnnotationConsistencyCheck.java +++ b/core/sis-metadata/src/test/java/org/apache/sis/test/xml/AnnotationConsistencyCheck.java @@@ -324,17 -323,25 +324,18 @@@ public abstract strictfp class Annotati * General cases (after we processed all the special cases) * based on which standard defines the type or property. */ - final short version = uml.version(); + final Specification specification = uml.specification(); - if (version != 0 && version < specification.defaultVersion()) { + if (/*uml.version()*/ 0 != 0) { - switch (uml.specification()) { + switch (specification) { case ISO_19115: return LegacyNamespaces.GMD; case ISO_19115_2: return LegacyNamespaces.GMI; } } - switch (uml.specification()) { + switch (specification) { case ISO_19115: - case ISO_19115_2: - case ISO_19115_3: return CodeListUID.METADATA_ROOT; + case ISO_19115_2: return CodeListUID.METADATA_ROOT; case ISO_19139: return LegacyNamespaces.GMX; case ISO_19108: return LegacyNamespaces.GMD; - case ISO_19157: { - // Case for a method. By contrast, above `identifier.startsWith(…)` checks were for types. - final UML parent = TestUtilities.getSingleton(impl.getInterfaces()).getAnnotation(UML.class); - return parent.identifier().startsWith("DQM_") ? Namespaces.DQM : Namespaces.MDQ; - } default: throw new IllegalArgumentException(uml.toString()); } } diff --cc core/sis-metadata/src/test/java/org/apache/sis/xml/CharSequenceSubstitutionTest.java index 4dc4213918,8614382ce0..ae3947bc1b --- a/core/sis-metadata/src/test/java/org/apache/sis/xml/CharSequenceSubstitutionTest.java +++ b/core/sis-metadata/src/test/java/org/apache/sis/xml/CharSequenceSubstitutionTest.java @@@ -21,10 -21,10 +21,10 @@@ import org.opengis.metadata.citation.Ad import org.opengis.metadata.acquisition.Instrument; import org.opengis.metadata.identification.DataIdentification; import org.opengis.metadata.identification.InitiativeType; +import org.apache.sis.metadata.iso.DefaultIdentifier; import org.apache.sis.internal.jaxb.metadata.replace.ReferenceSystemMetadata; + import org.apache.sis.internal.jaxb.metadata.replace.SensorType; import org.apache.sis.internal.xml.LegacyNamespaces; - import org.apache.sis.internal.metadata.SensorType; import org.apache.sis.util.iso.Types; import org.apache.sis.test.DependsOnMethod; import org.apache.sis.test.xml.TestCase; diff --cc core/sis-referencing/src/main/java/org/apache/sis/referencing/ImmutableIdentifier.java index 812d0ecfbb,8fe3a505dc..83c6fceb19 --- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/ImmutableIdentifier.java +++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/ImmutableIdentifier.java @@@ -338,8 -327,8 +338,8 @@@ public class ImmutableIdentifier extend * <li>Otherwise if the given object is already an instance of * {@code ImmutableIdentifier}, then it is returned unchanged.</li> * <li>Otherwise a new {@code ImmutableIdentifier} instance is created using the - * {@linkplain #ImmutableIdentifier(Identifier) copy constructor} and returned. + * {@linkplain #ImmutableIdentifier(ReferenceIdentifier) copy constructor} and returned. - * Note that this is a <dfn>shallow</dfn> copy operation, because the other + * Note that this is a <em>shallow</em> copy operation, because the other * metadata contained in the given object are not recursively copied.</li> * </ul> * diff --cc core/sis-referencing/src/main/java/org/apache/sis/referencing/NamedIdentifier.java index 02745661c1,f50f3172ef..eeab97e536 --- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/NamedIdentifier.java +++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/NamedIdentifier.java @@@ -340,8 -340,8 +340,8 @@@ public class NamedIdentifier extends Im * <li>Otherwise if the given object is already an instance of * {@code NamedIdentifier}, then it is returned unchanged.</li> * <li>Otherwise a new {@code NamedIdentifier} instance is created using the - * {@linkplain #NamedIdentifier(Identifier) copy constructor} and returned. + * {@linkplain #NamedIdentifier(ReferenceIdentifier) copy constructor} and returned. - * Note that this is a <dfn>shallow</dfn> copy operation, because the other + * Note that this is a <em>shallow</em> copy operation, because the other * metadata contained in the given object are not recursively copied.</li> * </ul> * diff --cc storage/sis-xmlstore/src/main/java/org/apache/sis/internal/storage/gpx/Copyright.java index 4cdf96d007,a544011381..f493afd918 --- a/storage/sis-xmlstore/src/main/java/org/apache/sis/internal/storage/gpx/Copyright.java +++ b/storage/sis-xmlstore/src/main/java/org/apache/sis/internal/storage/gpx/Copyright.java @@@ -229,21 -247,20 +229,31 @@@ resp: for (final DefaultResponsibilit * @return name of the party, or {@code null} if none. */ @Override - public InternationalString getName() { - return (author != null) ? new SimpleInternationalString(author) : null; + public String getIndividualName() { + return author; + } + + /** + * ISO 19115 metadata property not specified by GPX. + * This is part of the properties returned by {@code getParties()}. + * + * @return contact information for the party. + */ + @Override + public Contact getContactInfo() { + return null; } + /** + * Returns citation or party identifiers, which is an empty list. + * + * @return empty. + */ + @Override + public Collection<Identifier> getIdentifiers() { + return Collections.emptyList(); + } + /* ----------------------------------------------------------------------------------- * Implementation of the Citation object returned by LegalConstraints.getReferences(). @@@ -311,52 -317,7 +321,41 @@@ */ @Override public DateType getDateType() { - return DateType.IN_FORCE; + return DateType.valueOf("IN_FORCE"); + } + + /** + * ISO 19115 metadata property not specified by GPX. + * This is part of the properties returned by {@code getReferences()}. + * + * @return the license version, or {@code null} if none. + */ + @Override + public InternationalString getEdition() { + return null; + } + + /** + * ISO 19115 metadata property not specified by GPX. + * This is part of the properties returned by {@code getReferences()}. + * + * @return the license edition date, or {@code null} if none. + */ + @Override + public Date getEditionDate() { + return null; + } + + /** + * ISO 19115 metadata property not specified by GPX. + * This is part of the properties returned by {@code getReferences()}. - * - * @return the identifiers of the license. - */ - @Override - public Collection<Identifier> getIdentifiers() { - return Collections.emptySet(); - } - - /** - * ISO 19115 metadata property not specified by GPX. - * This is part of the properties returned by {@code getReferences()}. + * It would be the license author if that information was provided. + * + * @return the information for individuals or organisations that are responsible for the license. + */ + @Override + public Collection<ResponsibleParty> getCitedResponsibleParties() { + return Collections.emptySet(); } /**