You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sis.apache.org by de...@apache.org on 2018/07/03 13:39:39 UTC
[sis] 01/01: Merge branch 'geoapi-4.0' into geoapi-3.1.
This is an automated email from the ASF dual-hosted git repository.
desruisseaux pushed a commit to branch geoapi-3.1
in repository https://gitbox.apache.org/repos/asf/sis.git
commit 585bdddc9547218d1cd42a3a96c964e8ecd9e141
Merge: fcd6c5d 22e0930
Author: Martin Desruisseaux <ma...@geomatys.com>
AuthorDate: Tue Jul 3 12:49:22 2018 +0200
Merge branch 'geoapi-4.0' into geoapi-3.1.
.gitattributes | 44 ++
.../java/org/apache/sis/console/package-info.java | 2 +-
.../src/main/java/org/apache/sis/gui/Main.java | 204 ++++++
.../org/apache/sis/gui/dataset/FeatureTable.java | 169 +++++
.../org/apache/sis/gui/dataset/ResourceTree.java | 23 +-
.../org/apache/sis/gui/metadata/MetadataNode.java | 228 ++++++
.../apache/sis/gui/metadata/MetadataOverview.java | 430 +++++++++++
.../org/apache/sis/gui/metadata/ResourceView.java | 399 ++++++++++
.../sis/gui/{crs => referencing}/CRSButton.java | 2 +-
.../sis/gui/{crs => referencing}/CRSChooser.java | 81 +-
.../sis/gui/{crs => referencing}/CRSTable.java | 69 +-
.../apache/sis/gui/{crs => referencing}/Code.java | 54 +-
.../WKTPane.java} | 16 +-
.../org/apache/sis/internal/gui/FXUtilities.java | 91 +++
.../org/apache/sis/internal/gui/FontGlyphs.java | 13 +-
.../apache/sis/internal/gui/JavaFxUtilities.java | 98 ---
.../apache/sis/{ => internal}/gui/Resources.java | 94 +--
.../sis/{ => internal}/gui/Resources.properties | 9 +-
.../sis/{ => internal}/gui/Resources_fr.properties | 9 +-
.../org/apache/sis/internal/gui}/package-info.java | 10 +-
.../org/apache/sis/gui/crs/CRSChooser.fxml | 36 -
.../apache/sis/gui/metadata/WorldMap360x180.png | Bin 0 -> 1886 bytes
.../org/apache/sis/gui/referencing/CRSChooser.fxml | 30 +
.../sis/gui/{crs => referencing}/proj_conic.png | Bin
.../sis/gui/{crs => referencing}/proj_geo.png | Bin
.../sis/gui/{crs => referencing}/proj_square.png | Bin
.../sis/gui/{crs => referencing}/proj_stereo.png | Bin
.../sis/gui/{crs => referencing}/proj_utm.png | Bin
.../org/apache/sis/test/suite/package-info.txt | 3 +
.../apache/sis/feature/AbstractAssociation.java | 2 -
.../org/apache/sis/feature/AbstractAttribute.java | 2 -
.../org/apache/sis/feature/AbstractOperation.java | 2 -
.../apache/sis/feature/DefaultAssociationRole.java | 2 -
.../apache/sis/feature/DefaultAttributeType.java | 2 -
.../java/org/apache/sis/feature/PropertyView.java | 2 -
.../apache/sis/feature/builder/TypeBuilder.java | 2 -
.../org/apache/sis/feature/CustomAttribute.java | 2 +-
.../java/org/apache/sis/internal/jaxb/Context.java | 1 +
.../sis/internal/jaxb/IdentifierMapAdapter.java | 3 -
.../sis/internal/jaxb/NonMarshalledAuthority.java | 18 +-
.../sis/internal/jaxb/SpecializedIdentifier.java | 2 -
.../apache/sis/internal/jaxb/cat/CodeListUID.java | 2 +-
.../internal/jaxb/code/MD_CharacterSetLegacy.java | 2 +-
.../sis/internal/jaxb/code/MD_MediumNameCode.java | 2 +-
.../sis/internal/jaxb/code/package-info.java | 2 +-
.../sis/internal/jaxb/gco/GO_CharacterString.java | 2 +-
.../apache/sis/internal/jaxb/gco/GO_DateTime.java | 2 +-
.../apache/sis/internal/jaxb/gco/GO_Decimal.java | 2 +-
.../apache/sis/internal/jaxb/gco/GO_Integer.java | 7 +-
.../apache/sis/internal/jaxb/gco/GO_Integer64.java | 4 +-
...GO_Integer64.java => GO_MultiplicityRange.java} | 53 +-
.../apache/sis/internal/jaxb/gco/GO_Record.java | 2 +-
.../sis/internal/jaxb/gco/GO_RecordType.java | 2 +-
...{GO_Integer64.java => GO_UnlimitedInteger.java} | 46 +-
.../apache/sis/internal/jaxb/gco/Multiplicity.java | 92 +++
.../sis/internal/jaxb/gco/MultiplicityRange.java | 107 +++
.../sis/internal/jaxb/gco/UnlimitedInteger.java | 120 +++
.../sis/internal/jaxb/gmi/LE_ProcessStep.java | 1 -
.../apache/sis/internal/jaxb/gmi/LE_Source.java | 1 -
.../org/apache/sis/internal/jaxb/gmi/MI_Band.java | 1 -
.../internal/jaxb/gmi/MI_CoverageDescription.java | 1 -
.../sis/internal/jaxb/gmi/MI_Georectified.java | 1 -
.../sis/internal/jaxb/gmi/MI_Georeferenceable.java | 1 -
.../sis/internal/jaxb/gmi/MI_ImageDescription.java | 1 -
.../apache/sis/internal/jaxb/gmi/MI_Metadata.java | 3 +-
.../apache/sis/internal/jaxb/gmi/package-info.java | 2 +-
.../apache/sis/internal/jaxb/gml/DateAdapter.java | 2 +-
.../org/apache/sis/internal/jaxb/gml/Measure.java | 2 +-
.../apache/sis/internal/jaxb/gml/TM_Primitive.java | 2 +-
.../apache/sis/internal/jaxb/gml/TimeInstant.java | 2 +-
.../apache/sis/internal/jaxb/gml/TimePeriod.java | 2 +-
.../internal/jaxb/gml/UniversalTimeAdapter.java | 6 +-
.../sis/internal/jaxb/gts/TM_PeriodDuration.java | 2 +-
.../org/apache/sis/internal/jaxb/lan/Country.java | 2 +-
.../jaxb/lan/LocalisedCharacterString.java | 2 -
.../apache/sis/internal/jaxb/lan/PT_Locale.java | 2 +-
.../apache/sis/internal/jaxb/lan/TextGroup.java | 2 -
.../jaxb/metadata/CI_ResponsibleParty.java | 4 +-
.../sis/internal/jaxb/metadata/RS_Identifier.java | 11 +-
.../metadata/replace/ReferenceSystemMetadata.java | 2 +-
.../jaxb/metadata/replace/ServiceParameter.java | 2 +-
.../jaxb/metadata/replace/package-info.java | 2 +-
.../org/apache/sis/internal/jaxb/package-info.java | 1 +
.../sis/internal/metadata/MetadataTypes.java | 4 +-
.../sis/internal/metadata/ReferencingServices.java | 16 +-
.../sis/internal/metadata/sql/SQLBuilder.java | 16 +-
.../sis/internal/simple/CitationConstant.java | 2 -
.../apache/sis/internal/simple/SimpleCitation.java | 2 -
.../apache/sis/internal/simple/SimpleFormat.java | 2 -
.../sis/internal/simple/SimpleIdentifier.java | 2 -
.../internal/{jaxb => xml}/LegacyNamespaces.java | 2 +-
.../apache/sis/internal/{jaxb => xml}/Schemas.java | 2 +-
.../sis/internal/xml}/StreamWriterDelegate.java | 4 +-
.../sis/internal/{jaxb => xml}/XmlUtilities.java | 3 +-
.../org/apache/sis/internal/xml}/package-info.java | 16 +-
.../main/java/org/apache/sis/io/wkt/Element.java | 1 -
.../main/java/org/apache/sis/io/wkt/Formatter.java | 2 -
.../org/apache/sis/metadata/AbstractMetadata.java | 29 +-
.../java/org/apache/sis/metadata/CacheKey.java | 2 -
.../java/org/apache/sis/metadata/HashCode.java | 105 +++
.../org/apache/sis/metadata/MetadataCopier.java | 180 +++--
.../org/apache/sis/metadata/MetadataStandard.java | 57 +-
.../org/apache/sis/metadata/MetadataVisitor.java | 286 ++++++++
.../sis/metadata/MetadataVisitorException.java | 100 +++
.../apache/sis/metadata/ModifiableMetadata.java | 309 +++++---
.../java/org/apache/sis/metadata/ObjectPair.java | 2 -
.../org/apache/sis/metadata/PropertyAccessor.java | 205 +++---
.../main/java/org/apache/sis/metadata/Pruner.java | 281 +++----
.../org/apache/sis/metadata/RecursivityGuard.java | 69 --
.../sis/metadata/StandardImplementation.java | 2 +-
.../metadata/{Freezer.java => StateChanger.java} | 121 ++-
.../java/org/apache/sis/metadata/TreeNode.java | 2 -
.../org/apache/sis/metadata/TreeNodeChildren.java | 2 -
.../metadata/UnmodifiableMetadataException.java | 5 +-
.../iso/DefaultApplicationSchemaInformation.java | 1 -
.../iso/DefaultExtendedElementInformation.java | 3 +-
.../apache/sis/metadata/iso/DefaultIdentifier.java | 1 -
.../apache/sis/metadata/iso/DefaultMetadata.java | 18 +-
.../iso/DefaultMetadataExtensionInformation.java | 1 -
.../sis/metadata/iso/DefaultMetadataScope.java | 1 -
.../iso/DefaultPortrayalCatalogueReference.java | 1 -
.../org/apache/sis/metadata/iso/ISOMetadata.java | 72 +-
.../sis/metadata/iso/ImmutableIdentifier.java | 2 +
.../sis/metadata/iso/MetadataScopeAdapter.java | 4 +-
.../acquisition/DefaultAcquisitionInformation.java | 1 -
.../acquisition/DefaultEnvironmentalRecord.java | 1 -
.../sis/metadata/iso/acquisition/DefaultEvent.java | 9 +-
.../iso/acquisition/DefaultInstrument.java | 9 +-
.../metadata/iso/acquisition/DefaultObjective.java | 1 -
.../metadata/iso/acquisition/DefaultOperation.java | 9 +-
.../sis/metadata/iso/acquisition/DefaultPlan.java | 1 -
.../metadata/iso/acquisition/DefaultPlatform.java | 9 +-
.../iso/acquisition/DefaultPlatformPass.java | 9 +-
.../iso/acquisition/DefaultRequestedDate.java | 1 -
.../iso/acquisition/DefaultRequirement.java | 9 +-
.../sis/metadata/iso/citation/AbstractParty.java | 1 -
.../sis/metadata/iso/citation/Citations.java | 2 +-
.../sis/metadata/iso/citation/DefaultAddress.java | 1 -
.../sis/metadata/iso/citation/DefaultCitation.java | 3 +-
.../metadata/iso/citation/DefaultCitationDate.java | 1 -
.../sis/metadata/iso/citation/DefaultContact.java | 3 +-
.../metadata/iso/citation/DefaultIndividual.java | 1 -
.../iso/citation/DefaultOnlineResource.java | 1 -
.../metadata/iso/citation/DefaultOrganisation.java | 1 -
.../iso/citation/DefaultResponsibility.java | 2 +-
.../iso/citation/DefaultResponsibleParty.java | 3 +-
.../sis/metadata/iso/citation/DefaultSeries.java | 1 -
.../metadata/iso/citation/DefaultTelephone.java | 5 +-
.../sis/metadata/iso/citation/package-info.java | 2 +-
.../iso/constraint/DefaultConstraints.java | 1 -
.../iso/constraint/DefaultLegalConstraints.java | 1 -
.../iso/constraint/DefaultReleasability.java | 1 -
.../iso/constraint/DefaultSecurityConstraints.java | 1 -
.../iso/content/AbstractContentInformation.java | 1 -
.../iso/content/DefaultAttributeGroup.java | 1 -
.../sis/metadata/iso/content/DefaultBand.java | 1 -
.../iso/content/DefaultCoverageDescription.java | 3 +-
.../DefaultFeatureCatalogueDescription.java | 3 +-
.../iso/content/DefaultFeatureTypeInfo.java | 1 -
.../iso/content/DefaultImageDescription.java | 3 +-
.../iso/content/DefaultRangeDimension.java | 3 +-
.../content/DefaultRangeElementDescription.java | 1 -
.../iso/content/DefaultSampleDimension.java | 1 -
.../sis/metadata/iso/content/package-info.java | 2 +-
.../metadata/iso/distribution/DefaultDataFile.java | 3 +-
.../DefaultDigitalTransferOptions.java | 1 -
.../iso/distribution/DefaultDistribution.java | 1 -
.../iso/distribution/DefaultDistributor.java | 1 -
.../metadata/iso/distribution/DefaultFormat.java | 3 +-
.../metadata/iso/distribution/DefaultMedium.java | 11 +-
.../distribution/DefaultStandardOrderProcess.java | 1 -
.../metadata/iso/distribution/package-info.java | 2 +-
.../iso/extent/AbstractGeographicExtent.java | 1 -
.../iso/extent/DefaultBoundingPolygon.java | 1 -
.../sis/metadata/iso/extent/DefaultExtent.java | 1 -
.../iso/extent/DefaultGeographicBoundingBox.java | 1 -
.../iso/extent/DefaultGeographicDescription.java | 1 -
.../iso/extent/DefaultSpatialTemporalExtent.java | 1 -
.../metadata/iso/extent/DefaultTemporalExtent.java | 1 -
.../metadata/iso/extent/DefaultVerticalExtent.java | 1 -
.../iso/identification/AbstractIdentification.java | 3 +-
.../DefaultAggregateInformation.java | 3 +-
.../identification/DefaultAssociatedResource.java | 1 -
.../iso/identification/DefaultBrowseGraphic.java | 1 -
.../iso/identification/DefaultCoupledResource.java | 7 +-
.../identification/DefaultDataIdentification.java | 3 +-
.../iso/identification/DefaultKeywordClass.java | 1 -
.../iso/identification/DefaultKeywords.java | 1 -
.../DefaultOperationChainMetadata.java | 1 -
.../identification/DefaultOperationMetadata.java | 1 -
.../iso/identification/DefaultResolution.java | 1 -
.../DefaultServiceIdentification.java | 1 -
.../metadata/iso/identification/DefaultUsage.java | 1 -
.../metadata/iso/identification/package-info.java | 2 +-
.../sis/metadata/iso/lineage/DefaultAlgorithm.java | 1 -
.../sis/metadata/iso/lineage/DefaultLineage.java | 1 -
.../iso/lineage/DefaultNominalResolution.java | 1 -
.../metadata/iso/lineage/DefaultProcessStep.java | 3 +-
.../iso/lineage/DefaultProcessStepReport.java | 1 -
.../metadata/iso/lineage/DefaultProcessing.java | 9 +-
.../sis/metadata/iso/lineage/DefaultSource.java | 5 +-
.../sis/metadata/iso/lineage/package-info.java | 2 +-
.../maintenance/DefaultMaintenanceInformation.java | 3 +-
.../sis/metadata/iso/maintenance/DefaultScope.java | 1 -
.../iso/maintenance/DefaultScopeDescription.java | 1 -
.../sis/metadata/iso/maintenance/package-info.java | 2 +-
.../org/apache/sis/metadata/iso/package-info.java | 2 +-
.../metadata/iso/quality/AbstractCompleteness.java | 1 -
.../sis/metadata/iso/quality/AbstractElement.java | 3 +-
.../iso/quality/AbstractLogicalConsistency.java | 1 -
.../iso/quality/AbstractPositionalAccuracy.java | 1 -
.../sis/metadata/iso/quality/AbstractResult.java | 1 -
.../iso/quality/AbstractTemporalAccuracy.java | 1 -
.../iso/quality/AbstractThematicAccuracy.java | 1 -
.../DefaultAbsoluteExternalPositionalAccuracy.java | 1 -
.../quality/DefaultAccuracyOfATimeMeasurement.java | 1 -
.../iso/quality/DefaultCompletenessCommission.java | 1 -
.../iso/quality/DefaultCompletenessOmission.java | 1 -
.../iso/quality/DefaultConceptualConsistency.java | 1 -
.../iso/quality/DefaultConformanceResult.java | 1 -
.../iso/quality/DefaultCoverageResult.java | 1 -
.../metadata/iso/quality/DefaultDataQuality.java | 3 +-
.../iso/quality/DefaultDomainConsistency.java | 1 -
.../iso/quality/DefaultFormatConsistency.java | 1 -
.../DefaultGriddedDataPositionalAccuracy.java | 1 -
.../DefaultNonQuantitativeAttributeAccuracy.java | 1 -
.../DefaultQuantitativeAttributeAccuracy.java | 1 -
.../iso/quality/DefaultQuantitativeResult.java | 3 +-
.../DefaultRelativeInternalPositionalAccuracy.java | 1 -
.../sis/metadata/iso/quality/DefaultScope.java | 1 -
.../iso/quality/DefaultTemporalConsistency.java | 1 -
.../iso/quality/DefaultTemporalValidity.java | 1 -
.../DefaultThematicClassificationCorrectness.java | 1 -
.../iso/quality/DefaultTopologicalConsistency.java | 1 -
.../sis/metadata/iso/quality/DefaultUsability.java | 3 +-
.../sis/metadata/iso/quality/package-info.java | 2 +-
.../spatial/AbstractGeolocationInformation.java | 1 -
.../iso/spatial/AbstractSpatialRepresentation.java | 1 -
.../sis/metadata/iso/spatial/DefaultDimension.java | 1 -
.../sis/metadata/iso/spatial/DefaultGCP.java | 1 -
.../metadata/iso/spatial/DefaultGCPCollection.java | 1 -
.../iso/spatial/DefaultGeometricObjects.java | 1 -
.../metadata/iso/spatial/DefaultGeorectified.java | 1 -
.../iso/spatial/DefaultGeoreferenceable.java | 1 -
.../spatial/DefaultGridSpatialRepresentation.java | 1 -
.../DefaultVectorSpatialRepresentation.java | 1 -
.../java/org/apache/sis/metadata/package-info.java | 2 +-
.../apache/sis/metadata/sql/MetadataSource.java | 42 +-
.../apache/sis/metadata/sql/MetadataWriter.java | 57 +-
.../apache/sis/metadata/sql/TableHierarchy.java | 118 +++
.../org/apache/sis/util/iso/DefaultNameSpace.java | 2 -
.../org/apache/sis/util/iso/DefaultRecord.java | 2 -
.../apache/sis/util/iso/DefaultRecordSchema.java | 2 -
.../org/apache/sis/util/iso/RecordDefinition.java | 2 -
.../main/java/org/apache/sis/xml/InputFactory.java | 29 +-
.../main/java/org/apache/sis/xml/Namespaces.java | 5 +-
.../java/org/apache/sis/xml/OutputFactory.java | 31 +-
.../src/main/java/org/apache/sis/xml/Pooled.java | 2 +-
.../java/org/apache/sis/xml/TransformVersion.java | 2 +-
.../main/java/org/apache/sis/xml/Transformer.java | 22 +-
.../org/apache/sis/xml/TransformingReader.java | 29 +-
.../org/apache/sis/xml/TransformingWriter.java | 17 +-
.../internal/jaxb/cat/CodeListMarshallingTest.java | 4 +-
.../sis/internal/jaxb/gco/MultiplicityTest.java | 124 ++++
.../apache/sis/internal/jaxb/gml/MeasureTest.java | 2 +-
.../sis/internal/jaxb/gml/TimePeriodTest.java | 2 +-
.../internal/jaxb/lan/FreeTextMarshallingTest.java | 2 +-
.../sis/internal/jaxb/lan/LanguageCodeTest.java | 4 +-
.../sis/internal/jaxb/lan/PT_LocaleTest.java | 12 +-
.../internal/{jaxb => xml}/XmlUtilitiesTest.java | 2 +-
.../java/org/apache/sis/metadata/HashCodeTest.java | 155 ++++
.../apache/sis/metadata/PropertyAccessorTest.java | 23 -
.../java/org/apache/sis/metadata/PrunerTest.java | 4 +-
.../sis/metadata/iso/ImmutableIdentifierTest.java | 2 +-
.../metadata/iso/citation/DefaultCitationTest.java | 54 +-
.../iso/citation/DefaultResponsibilityTest.java | 2 +-
.../constraint/DefaultLegalConstraintsTest.java | 2 +-
.../DefaultRepresentativeFractionTest.java | 8 +-
.../iso/identification/DefaultResolutionTest.java | 4 +-
.../metadata/iso/lineage/DefaultLineageTest.java | 2 +-
.../java/org/apache/sis/test/MetadataAssert.java | 2 +-
.../java/org/apache/sis/test/XMLComparator.java | 2 +-
.../test/java/org/apache/sis/test/XMLTestCase.java | 29 +-
.../FeatureAttributeMock.java} | 32 +-
.../org/apache/sis/test/mock/MetadataMock.java | 2 +-
.../org/apache/sis/test/mock/package-info.java | 5 +-
.../apache/sis/test/suite/MetadataTestSuite.java | 4 +-
.../sis/test/xml/AnnotationConsistencyCheck.java | 4 +-
.../org/apache/sis/test/xml/PackageVerifier.java | 47 +-
.../org/apache/sis/test/xml/SchemaCompliance.java | 382 +---------
.../apache/sis/util/iso/NameMarshallingTest.java | 2 +-
.../sis/xml/CharSequenceSubstitutionTest.java | 14 +-
.../org/apache/sis/xml/RenameListGenerator.java | 4 +-
.../apache/sis/xml/TransformingNamespacesTest.java | 2 +-
.../apache/sis/metadata/xml/2007/Multiplicity.xml | 56 ++
.../apache/sis/metadata/xml/2016/Multiplicity.xml | 55 ++
.../java/org/apache/sis/internal/map/MapLayer.java | 2 +-
.../org/apache/sis/test/suite/package-info.txt | 3 +
core/sis-raster/pom.xml | 16 +-
.../sis/coverage/grid/GridCoordinatesView.java | 136 ++++
.../org/apache/sis/coverage/grid/GridExtent.java | 510 +++++++++++++
.../org/apache/sis/coverage/grid/GridGeometry.java | 815 +++++++++++++++++++++
.../grid/IncompleteGridGeometryException.java | 70 ++
.../apache/sis/coverage/grid/PixelTranslation.java | 366 +++++++++
.../apache/sis/coverage/grid/package-info.java} | 17 +-
.../java/org/apache/sis/image/DefaultIterator.java | 4 +-
.../java/org/apache/sis/image/PixelIterator.java | 4 +-
.../java/org/apache/sis/image/TransferType.java | 4 +-
.../apache/sis/image/WritablePixelIterator.java | 4 +-
.../java/org/apache/sis/image/package-info.java | 4 +-
.../org/apache/sis/internal/raster/Resources.java | 45 +-
.../sis/internal/raster/Resources.properties | 4 +
.../sis/internal/raster/Resources_fr.properties | 4 +
.../apache/sis/internal/raster/package-info.java | 4 +-
.../apache/sis/coverage/grid/GridGeometryTest.java | 190 +++++
.../sis/coverage/grid/PixelTranslationTest.java | 124 ++++
.../org/apache/sis/image/DefaultIteratorTest.java | 4 +-
.../org/apache/sis/test/suite/RasterTestSuite.java | 8 +-
.../referencing/gazetteer/AbstractLocation.java | 2 -
.../gazetteer/MilitaryGridReferenceSystem.java | 2 -
.../sis/geometry/AbstractDirectPosition.java | 3 +-
.../org/apache/sis/geometry/AbstractEnvelope.java | 3 +-
.../org/apache/sis/geometry/DirectPosition1D.java | 3 +-
.../org/apache/sis/geometry/DirectPosition2D.java | 4 +-
.../org/apache/sis/geometry/GeneralEnvelope.java | 12 +-
.../referencing/CC_GeneralOperationParameter.java | 2 +-
.../referencing/PositionalAccuracyConstant.java | 2 -
.../internal/referencing/ServicesForMetadata.java | 32 +-
.../referencing/provider/DatumShiftGridFile.java | 2 -
.../sis/parameter/AbstractParameterDescriptor.java | 1 -
.../java/org/apache/sis/parameter/Parameters.java | 1 -
.../org/apache/sis/parameter/TensorParameters.java | 9 +-
.../sis/referencing/AbstractIdentifiedObject.java | 5 +-
.../apache/sis/referencing/IdentifiedObjects.java | 34 +-
.../apache/sis/referencing/NamedIdentifier.java | 60 +-
.../sis/referencing/cs/DirectionAlongMeridian.java | 2 +-
.../sis/referencing/datum/BursaWolfParameters.java | 2 +-
.../referencing/datum/DefaultVerticalDatum.java | 2 +-
.../sis/referencing/datum/TimeDependentBWP.java | 3 +-
.../factory/AuthorityFactoryIdentifier.java | 2 -
.../factory/ConcurrentAuthorityFactory.java | 4 +-
.../factory/GeodeticAuthorityFactory.java | 2 -
.../referencing/factory/sql/AuthorityCodes.java | 2 -
.../sis/referencing/factory/sql/AxisName.java | 2 -
.../operation/CoordinateOperationRegistry.java | 6 +-
.../operation/DefaultPassThroughOperation.java | 5 +-
.../operation/builder/LinearTransformBuilder.java | 2 -
.../sis/referencing/operation/matrix/Matrix1.java | 2 +-
.../sis/referencing/operation/matrix/Matrix2.java | 2 +-
.../operation/projection/NormalizedProjection.java | 2 +-
.../operation/projection/ZonedGridSystem.java | 2 +-
.../operation/transform/ConcatenatedTransform.java | 2 +-
.../transform/DefaultMathTransformFactory.java | 2 +-
.../transform/EllipsoidToCentricTransform.java | 2 +-
.../transform/ExponentialTransform1D.java | 2 +-
.../operation/transform/LinearTransform1D.java | 3 +-
.../transform/LogarithmicTransform1D.java | 2 +-
.../operation/transform/MathTransforms.java | 45 +-
.../operation/transform/MolodenskyFormula.java | 2 +-
.../operation/transform/PassThroughTransform.java | 64 +-
.../operation/transform/PowerTransform1D.java | 2 +-
.../operation/transform/TransferFunction.java | 2 -
.../datum/DefaultPrimeMeridianTest.java | 2 +-
.../datum/DefaultVerticalDatumTest.java | 2 +-
.../transform/ConcatenatedTransformTest.java | 2 +-
.../operation/transform/MathTransformsTest.java | 2 +-
.../transform/PassThroughTransformTest.java | 8 +-
.../transform/TransformSeparatorTest.java | 2 +-
.../apache/sis/test/integration/MetadataTest.java | 2 +-
.../apache/sis/internal/converter/ClassPair.java | 2 -
.../sis/internal/converter/ConverterRegistry.java | 2 -
.../sis/internal/converter/FallbackConverter.java | 2 -
.../internal/converter/SurjectiveConverter.java | 2 -
.../org/apache/sis/internal/system/Supervisor.java | 2 +-
.../apache/sis/internal/util/AbstractMapEntry.java | 2 -
.../java/org/apache/sis/internal/util/Cloner.java | 33 +-
.../org/apache/sis/internal/util/DoubleDouble.java | 2 +-
.../apache/sis/internal/util/FinalFieldSetter.java | 157 ++++
.../org/apache/sis/internal/util/Numerics.java | 10 -
.../sis/internal/util/TemporalUtilities.java | 2 +-
.../org/apache/sis/internal/util/Utilities.java | 2 +-
.../src/main/java/org/apache/sis/math/Line.java | 2 +-
.../src/main/java/org/apache/sis/math/Plane.java | 2 +-
.../java/org/apache/sis/measure/AngleFormat.java | 2 -
.../org/apache/sis/measure/LinearConverter.java | 8 +-
.../java/org/apache/sis/measure/RangeFormat.java | 20 +-
.../java/org/apache/sis/measure/UnitFormat.java | 21 +-
.../java/org/apache/sis/util/CharSequences.java | 2 +-
.../apache/sis/util/CorruptedObjectException.java | 13 +-
.../src/main/java/org/apache/sis/util/Debug.java | 20 +-
.../main/java/org/apache/sis/util/Exceptions.java | 4 +
.../apache/sis/util/logging/WarningListeners.java | 8 +-
.../java/org/apache/sis/util/resources/Errors.java | 15 +
.../apache/sis/util/resources/Errors.properties | 3 +
.../apache/sis/util/resources/Errors_fr.properties | 5 +-
.../sis/util/resources/IndexedResourceBundle.java | 1 -
.../org/apache/sis/util/resources/Vocabulary.java | 17 +-
.../sis/util/resources/Vocabulary.properties | 3 +
.../sis/util/resources/Vocabulary_fr.properties | 3 +
.../org/apache/sis/internal/util/CitationMock.java | 2 -
ide-project/NetBeans/nbproject/genfiles.properties | 2 +-
ide-project/NetBeans/nbproject/project.xml | 1 +
pom.xml | 4 +-
.../sis/internal/profile/fra/Constraints.java | 1 -
.../internal/profile/fra/DataIdentification.java | 1 -
.../sis/internal/profile/fra/LegalConstraints.java | 1 -
.../internal/profile/fra/SecurityConstraints.java | 1 -
.../sis/storage/earthobservation/LandsatStore.java | 2 -
.../org/apache/sis/internal/geotiff/Resources.java | 5 +
.../sis/internal/geotiff/Resources.properties | 1 +
.../sis/internal/geotiff/Resources_fr.properties | 1 +
.../org/apache/sis/storage/geotiff/CRSBuilder.java | 148 ++--
.../org/apache/sis/storage/geotiff/GeoCodes.java | 8 +-
.../sis/storage/geotiff/GridGeometryBuilder.java | 390 ++++++++++
.../sis/storage/geotiff/ImageFileDirectory.java | 191 ++---
.../{GridGeometry.java => Localization.java} | 123 +---
.../java/org/apache/sis/storage/geotiff/Type.java | 259 ++++---
.../org/apache/sis/storage/geotiff/TypeTest.java | 23 +-
.../java/org/apache/sis/internal/netcdf/Axis.java | 29 +-
.../org/apache/sis/internal/netcdf/Decoder.java | 25 +-
.../apache/sis/internal/netcdf/GridGeometry.java | 7 +-
.../org/apache/sis/internal/netcdf/Variable.java | 2 -
.../sis/internal/netcdf/impl/ChannelDecoder.java | 2 -
.../apache/sis/internal/netcdf/impl/Dimension.java | 2 -
.../sis/internal/netcdf/impl/GridGeometryInfo.java | 2 +-
.../sis/internal/netcdf/impl/package-info.java | 2 +-
.../apache/sis/internal/netcdf/package-info.java | 6 +-
.../sis/internal/netcdf/ucar/DecoderWrapper.java | 2 -
.../sis/internal/netcdf/ucar/package-info.java | 7 +-
.../apache/sis/storage/netcdf/MetadataReader.java | 160 ++--
.../org/apache/sis/storage/netcdf/NetcdfStore.java | 2 -
.../apache/sis/storage/netcdf/package-info.java | 2 +-
.../internal/netcdf/impl/ChannelDecoderTest.java | 3 +-
.../sis/internal/sql/reverse/SchemaMetaModel.java | 2 -
.../sis/internal/sql/reverse/TableMetaModel.java | 2 -
.../org/apache/sis/test/suite/package-info.txt | 3 +
storage/sis-storage/pom.xml | 5 +
.../sis/internal/storage/MetadataBuilder.java | 92 ++-
.../sis/internal/storage/StoreUtilities.java | 2 +-
.../sis/internal/storage/io/ChannelData.java | 2 -
.../sis/internal/storage/io/IOUtilities.java | 6 +-
.../sis/internal/storage/query/SimpleQuery.java | 2 -
.../sis/internal/storage/xml/StoreProvider.java | 2 +-
.../org/apache/sis/storage/DataStoreRegistry.java | 133 ++--
.../apache/sis/storage/GridCoverageResource.java | 21 +-
.../org/apache/sis/storage/ProbeProviderPair.java | 5 +-
.../java/org/apache/sis/storage/ProbeResult.java | 2 -
.../org/apache/sis/storage/StorageConnector.java | 2 -
.../internal/storage/xml/MimeTypeDetectorTest.java | 2 +-
.../apache/sis/internal/storage/xml/StoreTest.java | 2 +-
.../storage/xml/stream/FormattedWriter.java | 1 +
.../storage/xml/stream/NamespaceEraser.java | 1 +
.../internal/storage/xml/stream/StaxDataStore.java | 2 -
.../internal/storage/xml/stream/package-info.java | 2 +-
.../sis/internal/storage/gpx/WriterTest.java | 2 -
455 files changed, 8183 insertions(+), 2857 deletions(-)
diff --cc application/sis-javafx/src/main/java/org/apache/sis/gui/metadata/MetadataOverview.java
index 0000000,90f5e4c..77df9a5
mode 000000,100644..100644
--- a/application/sis-javafx/src/main/java/org/apache/sis/gui/metadata/MetadataOverview.java
+++ b/application/sis-javafx/src/main/java/org/apache/sis/gui/metadata/MetadataOverview.java
@@@ -1,0 -1,430 +1,430 @@@
+ /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ package org.apache.sis.gui.metadata;
+
+ import java.io.IOException;
+ import java.io.InputStream;
+ import java.text.DateFormat;
+ import java.text.NumberFormat;
+ import java.util.Collection;
+ import java.util.HashMap;
+ import java.util.Iterator;
+ import java.util.Locale;
+ import java.util.Map;
+ import javafx.beans.value.ObservableValue;
+ import javafx.collections.FXCollections;
+ import javafx.collections.ObservableList;
+ import javafx.event.ActionEvent;
+ import javafx.event.Event;
+ import javafx.geometry.Insets;
+ import javafx.scene.Node;
+ import javafx.scene.canvas.Canvas;
+ import javafx.scene.control.ComboBox;
+ import javafx.scene.control.Label;
+ import javafx.scene.control.TitledPane;
+ import javafx.scene.control.Toggle;
+ import javafx.scene.control.ToggleButton;
+ import javafx.scene.control.ToggleGroup;
+ import javafx.scene.image.Image;
+ import javafx.scene.layout.GridPane;
+ import javafx.scene.layout.HBox;
+ import javafx.scene.layout.Priority;
+ import javafx.scene.layout.StackPane;
+ import javafx.scene.layout.VBox;
+ import javafx.scene.paint.Color;
+ import org.opengis.metadata.Metadata;
+ import org.opengis.metadata.citation.CitationDate;
+ import org.opengis.metadata.citation.Party;
+ import org.opengis.metadata.citation.Responsibility;
+ import org.opengis.metadata.extent.Extent;
+ import org.opengis.metadata.extent.GeographicBoundingBox;
+ import org.opengis.metadata.extent.GeographicDescription;
+ import org.opengis.metadata.extent.GeographicExtent;
+ import org.opengis.metadata.identification.DataIdentification;
+ import org.opengis.metadata.identification.Identification;
+ import org.opengis.metadata.identification.TopicCategory;
+ import org.opengis.metadata.spatial.Dimension;
+ import org.opengis.metadata.spatial.SpatialRepresentation;
+ import org.opengis.metadata.spatial.SpatialRepresentationType;
+ import org.opengis.referencing.ReferenceSystem;
+ import org.opengis.util.InternationalString;
+ import org.apache.sis.metadata.iso.DefaultMetadata;
+ import org.apache.sis.metadata.iso.citation.DefaultIndividual;
+ import org.apache.sis.metadata.iso.citation.DefaultOrganisation;
+ import org.apache.sis.metadata.iso.spatial.DefaultGridSpatialRepresentation;
+ import org.apache.sis.util.iso.Types;
+
+
+ /**
+ * Metadata Viewer.
+ *
+ * @author Smaniotto Enzo
+ * @version 1.0
+ * @since 1.0
+ * @module
+ */
+ class MetadataOverview extends StackPane {
+
+ private final Metadata metadata;
+ final String fromFile;
+ private final Locale locale = Locale.getDefault();
+
+ public MetadataOverview(final DefaultMetadata md, final String fromFile) {
+ this.metadata = md;
+ this.fromFile = fromFile;
+ VBox root = new VBox();
+ root.setStyle("-fx-background-color: linear-gradient(to bottom right, #aeb7c4, #fafafa);");
+
+ // Creation of the differents views.
+ VBox summaryView = createSummaryView();
+ MetadataNode advancedView = new MetadataNode(md.asTreeTable());
+ advancedView.setMaxHeight(Double.MAX_VALUE);
+ VBox.setVgrow(advancedView, Priority.ALWAYS);
+
+ // Create and configure view selection buttons.
+ ToggleGroup buttonGroup = new ToggleGroup();
+ ToggleButton tb1 = new ToggleButton("Summary");
+ ToggleButton tb2 = new ToggleButton("Advanced");
+ tb1.setStyle("-fx-text-fill: white; -fx-font-family: Arial Narrow;-fx-font-weight: bold; -fx-background-color: linear-gradient(#61a2b1, #2A5058); -fx-effect: dropshadow( three-pass-box , rgba(0,0,0,0.6) , 5, 0.0 , 0 , 1 ); -fx-padding: 0.8em;");
+ tb2.setStyle("-fx-text-fill: white; -fx-font-family: Arial Narrow;-fx-font-weight: bold; -fx-background-color: linear-gradient(#61a2b1, #2A5058); -fx-effect: dropshadow( three-pass-box , rgba(0,0,0,0.6) , 5, 0.0 , 0 , 1 ); -fx-padding: 0.8em;");
+
+ tb1.setToggleGroup(buttonGroup);
+ tb1.setSelected(true);
+ tb1.setDisable(true);
+ tb2.setToggleGroup(buttonGroup);
+ buttonGroup.selectToggle(tb1);
+ buttonGroup.selectedToggleProperty().addListener((ObservableValue<? extends Toggle> observable, Toggle oldValue, Toggle newValue) -> {
+ if (tb2.isSelected()) {
+ tb2.setDisable(true);
+ root.getChildren().remove(summaryView);
+ root.getChildren().add(advancedView);
+ tb1.setDisable(false);
+ } else {
+ tb1.setDisable(true);
+ root.getChildren().add(summaryView);
+ root.getChildren().remove(advancedView);
+ tb2.setDisable(false);
+ }
+ });
+
+ HBox toggleGroupLayout = new HBox();
+ toggleGroupLayout.getChildren().addAll(tb1, tb2);
+ toggleGroupLayout.setPadding(new Insets(0, 0, 10, 0));
+
+ root.getChildren().add(toggleGroupLayout);
+ root.getChildren().add(summaryView);
+
+ this.getChildren().add(root);
+ }
+
+ private VBox createSummaryView() {
+ VBox vb = new VBox();
+ TitledPane idPane = new TitledPane("Identification info", createIdGridPane());
+ GridPane createSpatialGridPane = createSpatialGridPane();
+ vb.getChildren().add(idPane);
+ if (!createSpatialGridPane.getChildren().isEmpty()) {
+ TitledPane spatialPane = new TitledPane("Spatial representation", createSpatialGridPane);
+ vb.getChildren().add(spatialPane);
+ }
+ return vb;
+ }
+
+ private GridPane createIdGridPane() {
+ GridPane gp = new GridPane();
+ gp.setHgap(10.00);
+ int j = 0, k = 1;
+
+ HashMap<String, Identification> m = new HashMap<>();
+ ComboBox<String> comboBox = createComboBox(m);
+ comboBox.setStyle("-fx-font-weight: bold; -fx-font-size: 2em;");
+ if (!comboBox.isVisible()) {
+ Label la = new Label(comboBox.getValue());
+ la.setStyle("-fx-font-weight: bold; -fx-font-size: 2em;");
+ gp.add(la, j, k++, 2, 1);
+ } else {
+ gp.add(comboBox, j, k++, 2, 1);
+ }
+
+ // Show author information.
+ Collection<? extends Responsibility> contacts = this.metadata.getContacts();
+ if (!contacts.isEmpty()) {
+ Responsibility contact = contacts.iterator().next();
+ Collection<? extends Party> parties = contact.getParties();
+ if (!parties.isEmpty()) {
+ Party party = parties.iterator().next();
+ if (party.getName() != null) {
+ Label partyType = new Label("Party");
+ Label partyValue = new Label(party.getName().toString());
+ partyValue.setWrapText(true);
+ if (party instanceof DefaultOrganisation) {
+ partyType.setText("Organisation");
+ } else if (party instanceof DefaultIndividual) {
+ partyType.setText("Author");
+ }
+ gp.add(partyType, j, k);
+ gp.add(partyValue, ++j, k++);
+ j = 0;
+ }
+ }
+ }
+
+ GridPane gpi = new GridPane();
+ gpi.setHgap(10.00);
+
+ comboBox.setOnAction(e -> {
+ gpi.getChildren().clear();
+ Identification id = m.get(comboBox.getValue());
+ if (comboBox.getValue().equals("No data to show")) {
+ return;
+ }
+
+ // Show the abstract or the credit, the topic category, the creation date, the type of data, the representation system info and also the geographical area.
+ Object ab = id.getAbstract();
+ if (ab != null) {
+ InternationalString abs = (InternationalString) ab;
+ Label crd = new Label("Abstract");
+ Label crdValue = new Label(abs.toString(locale));
+ crdValue.setWrapText(true);
+ gpi.add(crd, 0, 1);
+ gpi.add(crdValue, 1, 1);
+ } else {
- Collection<? extends InternationalString> credits = id.getCredits();
++ Collection<String> credits = id.getCredits();
+ if (!credits.isEmpty()) {
- InternationalString credit = credits.iterator().next();
++ String credit = credits.iterator().next();
+ Label crd = new Label("Credit");
+ Label crdValue = new Label(credit.toString());
+ crdValue.setWrapText(true);
+ gpi.add(crd, 0, 1);
+ gpi.add(crdValue, 1, 1);
+ }
+ }
+
+ Collection<TopicCategory> tcs = id.getTopicCategories();
+ if (!tcs.isEmpty()) {
+ TopicCategory tc = tcs.iterator().next();
+ Label topicC = new Label("Topic Category");
+ Label topicValue = new Label(tc.toString());
+ topicValue.setWrapText(true);
+ gpi.add(topicC, 0, 2);
+ gpi.add(topicValue, 1, 2);
+ }
+
+ if (!id.getCitation().getDates().isEmpty()) {
+ CitationDate dateAndType = id.getCitation().getDates().iterator().next();
+ DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.MEDIUM, locale);
+ String dateStr = dateFormat.format(dateAndType.getDate());
+ String s = dateAndType.getDateType().toString();
+ s = s.replace("DateType[", "");
+ s = s.replace("]", "");
+ Label dt = new Label("Date type: " + s.toLowerCase());
+ Label dtValue = new Label(dateStr);
+ dtValue.setWrapText(true);
+ gpi.add(dt, 0, 3);
+ gpi.add(dtValue, 1, 3);
+ }
+
+ if (id instanceof DataIdentification) {
+ Label topicC = new Label("Object type");
+ Label topicValue = new Label("Data");
+ topicValue.setWrapText(true);
+ gpi.add(topicC, 0, 4);
+ gpi.add(topicValue, 1, 4);
+ } else {
+ Label topicC = new Label("Object type");
+ Label topicValue = new Label("Service");
+ topicValue.setWrapText(true);
+ gpi.add(topicC, 0, 4);
+ gpi.add(topicValue, 1, 4);
+ }
+
+ Collection<SpatialRepresentationType> spatialRepresentationTypes = id.getSpatialRepresentationTypes();
+ Iterator<SpatialRepresentationType> its = spatialRepresentationTypes.iterator();
+ String typeList = "Spatial representation type: ";
+ while (its.hasNext()) {
+ SpatialRepresentationType spatialRepresentationType = its.next();
+ typeList += spatialRepresentationType.toString().toLowerCase(locale).replace("spatialrepresentationtype[", "").replace(']', '\0') + ", ";
+ }
+ if (!typeList.equals("Spatial representation type: ")) {
+ Label list = new Label(typeList.substring(0, typeList.length() - 2));
+ list.setWrapText(true);
+ gpi.add(list, 0, 5, 2, 1);
+ }
+
+ Collection<? extends Extent> exs = id.getExtents();
+ if (!exs.isEmpty()) {
+ Extent ex = exs.iterator().next();
+ Collection<? extends GeographicExtent> ges = ex.getGeographicElements();
+ Iterator<? extends GeographicExtent> it = ges.iterator();
+ while (it.hasNext()) {
+ GeographicExtent ge = it.next();
+ Label geoEx = new Label("Zone");
+ Label geoExValue = new Label(ge.toString());
+ geoExValue.setWrapText(true);
+ if (ge instanceof GeographicBoundingBox) {
+ geoEx.setText("");
+ GeographicBoundingBox gbd = (GeographicBoundingBox) ge;
+ geoExValue.setText("");
+ Canvas c = createMap(gbd.getNorthBoundLatitude(), gbd.getEastBoundLongitude(), gbd.getSouthBoundLatitude(), gbd.getWestBoundLongitude());
+ if (c != null) {
+ gpi.add(c, 0, 6, 2, 1);
+ } else {
+ geoEx.setText("Impossible to load the map.");
+ gpi.add(geoEx, 0, 6);
+ gpi.add(geoExValue, 1, 6);
+ }
+ } else if (ge instanceof GeographicDescription) {
+ geoEx.setText("Geographic description");
+ GeographicDescription gd = (GeographicDescription) ge;
+ geoExValue.setText(gd.getGeographicIdentifier().getCode());
+ }
+ }
+ }
+ });
+
+ Event.fireEvent(comboBox, new ActionEvent());
+ gp.add(gpi, j, k++, 2, 1);
+
+ int ind = 0;
+ for (Node n : gp.getChildren()) {
+ if (ind++ != 0) {
+ n.setStyle("-fx-padding: 0 83 10 0;");
+ } else {
+ n.setStyle("-fx-padding: 0 0 10 0; -fx-font-weight: bold; -fx-font-size: 2em;");
+ }
+ }
+ gpi.getChildren().forEach(n -> n.setStyle("-fx-padding: 0 0 10 0;"));
+
+ return gp;
+ }
+
+ private Canvas createMap(double north, double east, double south, double west) {
+ Canvas can = new Canvas();
+ Image image = null;
+ try (InputStream in = MetadataOverview.class.getResourceAsStream("WorldMap360x180.png")) {
+ image = new Image(in);
+ } catch (IOException e) {
+ // TODO
+ }
+ if (image.errorProperty().getValue()) {
+ return null;
+ }
+
+ double height = image.getHeight();
+ double width = image.getWidth();
+
+ can.setHeight(height);
+ can.setWidth(width);
+ can.getGraphicsContext2D().drawImage(image, 0, 0, width, height);
+ can.getGraphicsContext2D().setStroke(Color.DARKBLUE);
+ can.getGraphicsContext2D().setGlobalAlpha(0.1);
+ double x = west + width / 2, y = height / 2 - north, w = east - west, h = north - south;
+ can.getGraphicsContext2D().strokeRect(x, y, w, h);
+ final double minRectSize = 6.0;
+ if (w < minRectSize) {
+ double difX = minRectSize - w;
+ x -= difX / 2;
+ w = minRectSize;
+ }
+ if (h < minRectSize) {
+ double difY = minRectSize - h;
+ y -= difY / 2;
+ h = minRectSize;
+ }
+ can.getGraphicsContext2D().fillRect(x, y, w, h);
+ can.getGraphicsContext2D().setGlobalAlpha(1.0);
+ can.getGraphicsContext2D().setStroke(Color.DARKBLUE);
+ can.getGraphicsContext2D().strokeRect(x, y, w, h);
+
+ return can;
+ }
+
+ private GridPane createSpatialGridPane() {
+ GridPane gp = new GridPane();
+ gp.setHgap(10.00);
+ gp.setVgap(10.00);
+ int j = 0, k = 1;
+
+ Collection<? extends ReferenceSystem> referenceSystemInfos = metadata.getReferenceSystemInfo();
+ if (!referenceSystemInfos.isEmpty()) {
+ ReferenceSystem referenceSystemInfo = referenceSystemInfos.iterator().next();
+ Label rsiValue = new Label("Reference system infos: " + referenceSystemInfo.getName().toString());
+ rsiValue.setWrapText(true);
+ gp.add(rsiValue, j, k++);
+ }
+
+ Collection<? extends SpatialRepresentation> sris = this.metadata.getSpatialRepresentationInfo();
+ if (sris.isEmpty()) {
+ return gp;
+ }
+ NumberFormat numberFormat = NumberFormat.getIntegerInstance(locale);
+ for (SpatialRepresentation sri : sris) {
+ String currentValue = "• ";
+ if (sri instanceof DefaultGridSpatialRepresentation) {
+ DefaultGridSpatialRepresentation sr = (DefaultGridSpatialRepresentation) sri;
+
+ Iterator<? extends Dimension> it = sr.getAxisDimensionProperties().iterator();
+ while (it.hasNext()) {
+ Dimension dim = it.next();
+ currentValue += numberFormat.format(dim.getDimensionSize()) + " " + Types.getCodeTitle(dim.getDimensionName()) + " * ";
+ }
+ currentValue = currentValue.substring(0, currentValue.length() - 3);
+ Label spRep = new Label(currentValue);
+ gp.add(spRep, j, k++, 2, 1);
+ if (sr.getCellGeometry() != null) {
+ Label cellGeo = new Label("Cell geometry:");
+ Label cellGeoValue = new Label(Types.getCodeTitle(sr.getCellGeometry()).toString());
+ cellGeoValue.setWrapText(true);
+ gp.add(cellGeo, j, k);
+ gp.add(cellGeoValue, ++j, k++);
+ j = 0;
+ }
+ }
+ }
+ return gp;
+ }
+
+ private ComboBox<String> createComboBox(final Map<String, Identification> m) {
+ ComboBox<String> cb = new ComboBox<>();
+ Collection<? extends Identification> ids = this.metadata.getIdentificationInfo();
+ ObservableList<String> options = FXCollections.observableArrayList();
+ int i = 1;
+ if (ids.size() > 1) {
+ for (Identification id : ids) {
+ String currentName;
+ if (id.getCitation() != null) {
+ currentName = id.getCitation().getTitle().toString();
+ } else {
+ currentName = Integer.toString(i);
+ }
+ options.add(currentName);
+ m.put(currentName, id);
+ }
+ cb.setItems(options);
+ cb.setValue(ids.iterator().next().getCitation().getTitle().toString());
+ } else if (ids.size() == 1) {
+ if (ids.iterator().next().getCitation() != null) {
+ m.put(ids.iterator().next().getCitation().getTitle().toString(), ids.iterator().next());
+ cb.setValue(ids.iterator().next().getCitation().getTitle().toString());
+ cb.setVisible(false);
+ }
+ } else {
+ cb.setValue("No data to show");
+ cb.setVisible(false);
+ }
+ return cb;
+ }
+ }
diff --cc core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/CI_ResponsibleParty.java
index 7a57029,22306ac..ac543c4
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/CI_ResponsibleParty.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/CI_ResponsibleParty.java
@@@ -30,9 -30,13 +30,9 @@@ import org.apache.sis.internal.jaxb.Fil
/**
- * JAXB adapter mapping implementing class to the GeoAPI interface. See
- * package documentation for more information about JAXB and interface.
+ * JAXB adapter mapping implementing class to a legacy GeoAPI interface.
+ * See package documentation for more information about JAXB and interface.
*
- * @deprecated This adapter is not used anymore for ISO 19115-3:2014 metadata.
- * However it is needed for branches that depend on GeoAPI 3.x, and is also needed
- * for implementing web services that have not yet been upgraded to latest ISO standard.
- *
* @author Cédric Briançon (Geomatys)
* @author Martin Desruisseaux (Geomatys)
* @version 1.0
diff --cc core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/ServiceParameter.java
index 0ca7508,623bd7b..1b06d31
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/ServiceParameter.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/ServiceParameter.java
@@@ -31,10 -31,9 +31,10 @@@ import org.opengis.metadata.Identifier
import org.opengis.parameter.ParameterValue;
import org.opengis.parameter.ParameterDirection;
import org.opengis.parameter.ParameterDescriptor;
+import org.opengis.referencing.ReferenceIdentifier;
import org.apache.sis.internal.simple.SimpleIdentifiedObject;
import org.apache.sis.internal.jaxb.FilterByVersion;
- import org.apache.sis.internal.jaxb.LegacyNamespaces;
+ import org.apache.sis.internal.xml.LegacyNamespaces;
import org.apache.sis.internal.jaxb.gco.GO_GenericName;
import org.apache.sis.internal.metadata.ReferencingServices;
import org.apache.sis.internal.metadata.NameToIdentifier;
diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultMetadata.java
index f1c6f0b,6635325..b16b150
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultMetadata.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultMetadata.java
@@@ -188,14 -187,9 +187,9 @@@ public class DefaultMetadata extends IS
/**
* Serial number for inter-operability with different versions.
*/
- private static final long serialVersionUID = -4935599812744534502L;
+ private static final long serialVersionUID = 7337533776231004504L;
/**
- * Unique identifier for this metadata record, or {@code null} if none.
- */
- private Identifier metadataIdentifier;
-
- /**
* Language(s) used for documenting metadata.
*/
private Collection<Locale> languages;
diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatform.java
index 5e5e70c,34bed9c..3c11889
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatform.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatform.java
@@@ -24,10 -24,9 +24,9 @@@ import org.opengis.metadata.Identifier
import org.opengis.metadata.acquisition.Instrument;
import org.opengis.metadata.acquisition.Platform;
import org.opengis.metadata.citation.Citation;
-import org.opengis.metadata.citation.Responsibility;
+import org.opengis.metadata.citation.ResponsibleParty;
import org.opengis.util.InternationalString;
import org.apache.sis.metadata.iso.ISOMetadata;
- import org.apache.sis.internal.jaxb.NonMarshalledAuthority;
/**
diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequirement.java
index 8374339,f7bbc0b..2da1294
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequirement.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequirement.java
@@@ -27,9 -27,8 +27,8 @@@ import org.opengis.metadata.acquisition
import org.opengis.metadata.acquisition.RequestedDate;
import org.opengis.metadata.acquisition.Requirement;
import org.opengis.metadata.citation.Citation;
-import org.opengis.metadata.citation.Responsibility;
+import org.opengis.metadata.citation.ResponsibleParty;
import org.apache.sis.metadata.iso.ISOMetadata;
- import org.apache.sis.internal.jaxb.NonMarshalledAuthority;
import static org.apache.sis.internal.metadata.MetadataUtilities.toDate;
import static org.apache.sis.internal.metadata.MetadataUtilities.toMilliseconds;
diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultDataQuality.java
index 237466c,4149399..862495b
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultDataQuality.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultDataQuality.java
@@@ -23,11 -23,12 +23,11 @@@ import javax.xml.bind.annotation.XmlRoo
import org.opengis.metadata.lineage.Lineage;
import org.opengis.metadata.quality.DataQuality;
import org.opengis.metadata.quality.Element;
-import org.opengis.metadata.maintenance.Scope;
+import org.opengis.metadata.quality.Scope;
import org.opengis.metadata.maintenance.ScopeCode;
import org.apache.sis.metadata.iso.ISOMetadata;
-import org.apache.sis.metadata.iso.maintenance.DefaultScope;
import org.apache.sis.internal.jaxb.FilterByVersion;
- import org.apache.sis.internal.jaxb.LegacyNamespaces;
+ import org.apache.sis.internal.xml.LegacyNamespaces;
/**
diff --cc core/sis-metadata/src/test/java/org/apache/sis/metadata/HashCodeTest.java
index 0000000,bf2f284..6e49ec9
mode 000000,100644..100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/HashCodeTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/HashCodeTest.java
@@@ -1,0 -1,154 +1,155 @@@
+ /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ package org.apache.sis.metadata;
+
+ import java.util.Arrays;
+ import org.opengis.util.InternationalString;
+ import org.opengis.metadata.Identifier;
+ import org.opengis.metadata.citation.Role;
+ import org.opengis.metadata.citation.Citation;
+ import org.opengis.metadata.citation.Individual;
-import org.opengis.metadata.citation.Responsibility;
++import org.opengis.metadata.citation.ResponsibleParty;
+ import org.opengis.metadata.acquisition.Instrument;
+ import org.opengis.metadata.acquisition.Platform;
+ import org.apache.sis.util.iso.SimpleInternationalString;
+ import org.apache.sis.metadata.iso.DefaultIdentifier;
+ import org.apache.sis.metadata.iso.citation.DefaultCitation;
+ import org.apache.sis.metadata.iso.citation.DefaultIndividual;
-import org.apache.sis.metadata.iso.citation.DefaultResponsibility;
++import org.apache.sis.metadata.iso.citation.DefaultResponsibleParty;
+ import org.apache.sis.metadata.iso.acquisition.DefaultInstrument;
+ import org.apache.sis.metadata.iso.acquisition.DefaultPlatform;
+ import org.apache.sis.test.DependsOnMethod;
+ import org.apache.sis.test.DependsOn;
+ import org.apache.sis.test.TestCase;
+ import org.junit.Test;
+
+ import static java.util.Collections.singleton;
+ import static org.junit.Assert.*;
+
+
+ /**
+ * Tests the {@link HashCode} class. This is also used as a relatively simple {@link MetadataVisitor} test.
+ * The entry point is the {@link HashCode#walk(MetadataStandard, Class, Object, boolean)} method.
+ *
+ *
+ * @author Martin Desruisseaux (Geomatys)
+ * @version 1.0
+ * @since 1.0
+ * @module
+ */
+ @DependsOn(PropertyAccessorTest.class)
+ public final strictfp class HashCodeTest extends TestCase {
+ /**
+ * Computes the hash code value of the given object.
+ */
+ private static Integer hash(final Object metadata) {
+ return HashCode.getOrCreate().walk(MetadataStandard.ISO_19115, null, metadata, true);
+ }
+
+ /**
+ * Tests hash code computation of an object that do not contain other metadata.
+ */
+ @Test
+ public void testSimple() {
+ final DefaultCitation instance = new DefaultCitation();
+ final int baseCode = Citation.class.hashCode();
+ assertEquals("Empty metadata.", Integer.valueOf(baseCode), hash(instance));
+
+ final InternationalString title = new SimpleInternationalString("Some title");
+ instance.setTitle(title);
+ assertEquals("Metadata with a single value.", Integer.valueOf(baseCode + title.hashCode()), hash(instance));
+
+ final InternationalString alternateTitle = new SimpleInternationalString("An other title");
+ instance.setAlternateTitles(singleton(alternateTitle));
+ assertEquals("Metadata with two values.",
+ Integer.valueOf(baseCode + title.hashCode() + Arrays.asList(alternateTitle).hashCode()),
+ hash(instance));
+ }
+
+ /**
+ * Tests hash code computation of an object containing another metadata object.
+ */
+ @Test
+ @DependsOnMethod("testSimple")
+ public void testNested() {
+ final InternationalString title = new SimpleInternationalString("Some title");
+ final InternationalString person = new SimpleInternationalString("Illustre inconnu");
+ final DefaultIndividual party = new DefaultIndividual(person, null, null);
- final DefaultResponsibility resp = new DefaultResponsibility(Role.AUTHOR, null, party);
++ final DefaultResponsibleParty resp = new DefaultResponsibleParty(Role.AUTHOR);
+ final DefaultCitation instance = new DefaultCitation(title);
++ resp.getParties().add(party);
+ instance.getCitedResponsibleParties().add(resp);
+ /*
+ * Individual hash code is the sum of all its properties, none of them being a collection.
+ */
+ int expected = Individual.class.hashCode() + person.hashCode();
+ assertEquals("Individual", Integer.valueOf(expected), hash(party));
+ /*
+ * The +31 below come from java.util.List contract, since above Individual is a list member.
+ */
- expected += Responsibility.class.hashCode() + Role.AUTHOR.hashCode() + 31;
++ expected += ResponsibleParty.class.hashCode() + Role.AUTHOR.hashCode() + 31;
+ assertEquals("Responsibility", Integer.valueOf(expected), hash(resp));
+ /*
+ * The +31 below come from java.util.List contract, since above Responsibility is a list member.
+ */
+ expected += Citation.class.hashCode() + title.hashCode() + 31;
+ assertEquals("Citation", Integer.valueOf(expected), hash(instance));
+ }
+
+ /**
+ * Tests hash code computation of an object graph containing a cycle.
+ */
+ @Test
+ @DependsOnMethod("testNested")
+ public void testCycle() {
+ /*
+ * We will create a Platform and an Instrument, both of them with no other property than an identifier.
+ * The assertions verifying Identifier hash codes are not the main purpose of this test, but we perform
+ * those verifications for making sure that the assertion done at the end of this method has good premises.
+ */
+ final DefaultIdentifier platformID = new DefaultIdentifier("P1");
+ final DefaultIdentifier instrumentID = new DefaultIdentifier("I1");
+ int platformHash = Identifier.class.hashCode() + platformID.getCode().hashCode();
+ int instrumentHash = Identifier.class.hashCode() + instrumentID.getCode().hashCode();
+ assertEquals("platformID", Integer.valueOf(platformHash), hash(platformID));
+ assertEquals("instrumentID", Integer.valueOf(instrumentHash), hash(instrumentID));
+ /*
+ * Verify Platform and Instrument hash codes before we link them together.
+ */
+ final DefaultPlatform platform = new DefaultPlatform();
+ final DefaultInstrument instrument = new DefaultInstrument();
+ platform .setIdentifier(platformID);
+ instrument.setIdentifier(instrumentID);
+ platformHash += Platform.class.hashCode();
+ instrumentHash += Instrument.class.hashCode();
+ assertEquals("Platform", Integer.valueOf(platformHash), hash(platform));
+ assertEquals("Instrument", Integer.valueOf(instrumentHash), hash(instrument));
+ /*
+ * Add the instrument to the platform. The +31 below come from java.util.List contract,
+ * since the Instrument is contained in a list.
+ */
+ platform.getInstruments().add(instrument);
+ platformHash += instrumentHash + 31;
+ assertEquals("Platform", Integer.valueOf(platformHash), hash(platform));
+ /*
+ * Add a reference from the instrument back to the platform. This is where the graph become cyclic.
+ * The hash code computation is expected to behave as if the platform was not specified.
+ */
+ instrument.setMountedOn(platform);
+ assertEquals("Platform", Integer.valueOf(platformHash), hash(platform));
+ }
+ }
diff --cc core/sis-utility/src/test/java/org/apache/sis/internal/util/CitationMock.java
index c8513b9,5632c55..4b203ad
--- a/core/sis-utility/src/test/java/org/apache/sis/internal/util/CitationMock.java
+++ b/core/sis-utility/src/test/java/org/apache/sis/internal/util/CitationMock.java
@@@ -25,13 -25,11 +25,12 @@@ import org.opengis.metadata.citation.Ci
import org.opengis.metadata.citation.CitationDate;
import org.opengis.metadata.citation.OnlineResource;
import org.opengis.metadata.citation.PresentationForm;
-import org.opengis.metadata.citation.Responsibility;
+import org.opengis.metadata.citation.ResponsibleParty;
import org.opengis.metadata.citation.Series;
import org.opengis.metadata.identification.BrowseGraphic;
+import org.opengis.referencing.ReferenceIdentifier;
import org.opengis.util.InternationalString;
import org.apache.sis.util.iso.SimpleInternationalString;
- import org.apache.sis.util.Debug;
/**
diff --cc ide-project/NetBeans/nbproject/genfiles.properties
index c89c1fe,f1aa966..11e6a4b
--- a/ide-project/NetBeans/nbproject/genfiles.properties
+++ b/ide-project/NetBeans/nbproject/genfiles.properties
@@@ -3,6 -3,6 +3,6 @@@
build.xml.data.CRC32=58e6b21c
build.xml.script.CRC32=462eaba0
build.xml.stylesheet.CRC32=28e38971@1.53.1.46
- nbproject/build-impl.xml.data.CRC32=5a0e9d09
-nbproject/build-impl.xml.data.CRC32=fe2883d9
-nbproject/build-impl.xml.script.CRC32=b7ab89c5
++nbproject/build-impl.xml.data.CRC32=5c9f3b18
+nbproject/build-impl.xml.script.CRC32=fb8d24ed
nbproject/build-impl.xml.stylesheet.CRC32=830a3534@1.80.1.48
diff --cc storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/MetadataReader.java
index b3b6c0d,4f0a4e2..f9d9c9c
--- a/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/MetadataReader.java
+++ b/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/MetadataReader.java
@@@ -619,13 -630,9 +631,9 @@@ split: while ((start = CharSequences.s
if (contributor != pointOfContact) {
addCitedResponsibleParty(contributor, null);
}
- final Responsibility r = createResponsibleParty(PUBLISHER, false);
+ final ResponsibleParty r = createResponsibleParty(PUBLISHER, false);
if (r != null) {
addDistributor(r);
- /*
- * TODO: There is some transfert option, etc. that we could set there.
- * See UnidataDD2MI.xsl for options for OPeNDAP, THREDDS, etc.
- */
for (final Party party : r.getParties()) {
publisher = addIfNonNull(publisher, party.getName());
}