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 7d5dfd074ed1d8aa9a5f5a90c30fbf33a4015aff Merge: 6c713fd637 1437fa191c Author: Martin Desruisseaux <martin.desruisse...@geomatys.com> AuthorDate: Sun Feb 26 16:35:30 2023 +0100 Merge branch 'geoapi-3.1' .../org/apache/sis/console/MimeTypeCommand.java | 4 +- .../apache/sis/gui/coverage/CoverageCanvas.java | 2 +- .../java/org/apache/sis/gui/map/MapCanvas.java | 55 +++- .../java/org/apache/sis/gui/map/MapCanvasAWT.java | 9 +- .../map/RenderingTask.java} | 29 +- .../apache/sis/internal/gui/BackgroundThreads.java | 13 +- .../apache/sis/internal/gui/DataStoreOpener.java | 62 ++-- .../apache/sis/internal/gui/io/FileAccessItem.java | 365 +++++++++++++++++---- .../apache/sis/internal/gui/io/FileAccessView.java | 41 ++- .../apache/sis/internal/gui/io/package-info.java | 2 +- .../org/apache/sis/internal/setup/FXFinder.java | 5 +- .../apache/sis/cloud/aws/s3/CachedByteChannel.java | 20 +- core/sis-build-helper/pom.xml | 1 + .../apache/sis/internal/book/CodeColorizer.java | 16 +- .../org/apache/sis/internal/doclet/Doclet.java | 3 +- .../org/apache/sis/internal/doclet/Rewriter.java | 4 +- .../org/apache/sis/internal/doclet/Taglet.java | 3 +- .../org/apache/sis/internal/unopkg/JavaMaker.java | 5 +- .../sis/coverage/grid/BufferedGridCoverage.java | 17 +- .../org/apache/sis/coverage/grid/GridExtent.java | 2 +- .../java/org/apache/sis/image/MaskedImage.java | 2 +- .../java/org/apache/sis/image/PlanarImage.java | 2 +- .../org/apache/sis/image/PixelIteratorTest.java | 4 +- .../sis/internal/metadata/sql/LocalDataSource.java | 7 +- .../org/apache/sis/metadata/sql/Citations.sql | 2 +- .../sis/metadata/iso/citation/CitationsTest.java | 2 +- .../sis/metadata/sql/MetadataSourceTest.java | 2 +- .../sis/internal/map/coverage/RenderingData.java | 31 +- .../org/apache/sis/geometry/AbstractEnvelope.java | 16 +- .../org/apache/sis/geometry/GeneralEnvelope.java | 10 +- .../referencing/PositionalAccuracyConstant.java | 2 +- .../apache/sis/internal/referencing/Resources.java | 5 + .../sis/internal/referencing/Resources.properties | 1 + .../internal/referencing/Resources_fr.properties | 1 + .../apache/sis/internal/referencing/j2d/Tile.java | 5 +- .../internal/referencing/j2d/TileOrganizer.java | 5 +- .../referencing/provider/DatumShiftGridFile.java | 16 +- .../referencing/provider/DatumShiftGridLoader.java | 26 +- .../provider/FranceGeocentricInterpolation.java | 25 +- .../sis/internal/referencing/provider/NADCON.java | 25 +- .../sis/internal/referencing/provider/NTv2.java | 16 +- .../referencing/provider/PolarStereographicA.java | 21 +- .../referencing/provider/PolarStereographicB.java | 26 +- .../main/java/org/apache/sis/io/wkt/Colors.java | 2 +- .../java/org/apache/sis/io/wkt/WKTDictionary.java | 2 +- .../sis/referencing/AbstractIdentifiedObject.java | 1 + .../java/org/apache/sis/referencing/Builder.java | 2 + .../apache/sis/referencing/GeodeticCalculator.java | 4 - .../operation/transform/AbstractMathTransform.java | 1 + .../FranceGeocentricInterpolationTest.java | 6 +- .../internal/referencing/provider/NADCONTest.java | 17 +- .../internal/referencing/provider/NTv2Test.java | 27 +- .../factory/sql/epsg/DataScriptFormatter.java | 3 +- .../sis/test/integration/DatumShiftTest.java | 15 +- .../sis/internal/converter/PathConverter.java | 5 +- .../sis/internal/converter/StringConverter.java | 2 +- .../apache/sis/internal/system/CommonExecutor.java | 2 +- .../apache/sis/internal/system/DataDirectory.java | 3 +- .../internal/util/ArgumentCheckByAssertion.java | 30 +- .../org/apache/sis/internal/util/DoubleDouble.java | 2 +- .../src/main/java/org/apache/sis/io/IO.java | 2 +- .../main/java/org/apache/sis/measure/Range.java | 43 +-- .../src/main/java/org/apache/sis/util/Static.java | 100 +++--- .../java/org/apache/sis/util/collection/Cache.java | 2 +- .../org/apache/sis/util/collection/RangeSet.java | 45 ++- .../org/apache/sis/util/logging/Initializer.java | 3 +- .../apache/sis/util/logging/MonolineFormatter.java | 18 +- .../internal/converter/StringConverterTest.java | 3 +- .../org/apache/sis/test/ProjectDirectories.java | 3 +- .../apache/sis/util/collection/RangeSetTest.java | 51 ++- pom.xml | 5 - .../java/org/apache/sis/storage/landsat/Band.java | 3 +- .../apache/sis/storage/landsat/LandsatStore.java | 56 ++-- .../sis/storage/landsat/LandsatStoreProvider.java | 3 +- .../apache/sis/storage/landsat/package-info.java | 2 +- .../org/apache/sis/internal/geotiff/Resources.java | 6 + .../sis/internal/geotiff/Resources.properties | 1 + .../sis/internal/geotiff/Resources_fr.properties | 1 + .../storage/inflater/CompressionChannel.java | 2 +- .../org/apache/sis/storage/geotiff/CRSBuilder.java | 72 +++- .../org/apache/sis/storage/geotiff/DataCube.java | 2 +- .../org/apache/sis/storage/geotiff/DataSubset.java | 47 ++- .../org/apache/sis/storage/geotiff/GeoCodes.java | 8 +- .../apache/sis/storage/geotiff/GeoTiffStore.java | 26 +- .../org/apache/sis/storage/geotiff/Reader.java | 1 + .../apache/sis/storage/geotiff/GeoCodesTest.java | 73 +++++ .../apache/sis/test/suite/GeoTiffTestSuite.java | 1 + .../org/apache/sis/internal/netcdf/Decoder.java | 11 +- .../sis/internal/netcdf/impl/ChannelDecoder.java | 7 +- .../sis/internal/netcdf/impl/package-info.java | 2 +- .../sis/internal/netcdf/ucar/DecoderWrapper.java | 20 +- .../sis/internal/netcdf/ucar/package-info.java | 2 +- .../org/apache/sis/storage/netcdf/NetcdfStore.java | 22 +- .../org/apache/sis/internal/netcdf/TestCase.java | 6 +- .../sis/storage/netcdf/MetadataReaderTest.java | 17 +- .../storage/netcdf/NetcdfStoreProviderTest.java | 15 +- .../sis/internal/sql/postgis/RasterReader.java | 14 +- .../sis/internal/storage/GridResourceWrapper.java | 26 +- .../apache/sis/internal/storage/URIDataStore.java | 3 +- .../sis/internal/storage/csv/package-info.java | 2 +- .../sis/internal/storage/esri/AsciiGridStore.java | 29 +- .../sis/internal/storage/esri/RasterStore.java | 2 +- .../sis/internal/storage/esri/RawRasterStore.java | 32 +- .../sis/internal/storage/esri/WritableStore.java | 3 + .../internal/storage/folder/ConcurrentCloser.java | 113 +++++++ .../apache/sis/internal/storage/folder/Store.java | 38 +-- .../internal/storage/image/SingleImageStore.java | 37 +-- .../sis/internal/storage/image/WorldFileStore.java | 51 +-- .../storage/image/WorldFileStoreProvider.java | 4 +- ...ageStore.java => WritableSingleImageStore.java} | 61 ++-- .../sis/internal/storage/image/WritableStore.java | 3 + .../sis/internal/storage/image/package-info.java | 2 +- .../sis/internal/storage/io/ByteRangeChannel.java | 46 +++ .../sis/internal/storage/io/ChannelDataInput.java | 45 +-- .../sis/internal/storage/io/ChannelFactory.java | 32 +- .../internal/storage/io/FileCacheByteChannel.java | 252 ++++++++++---- .../sis/internal/storage/io/HttpByteChannel.java | 14 +- .../sis/internal/storage/io/IOUtilities.java | 16 +- .../storage/io/InputStreamArrayGetter.java | 135 ++++++++ .../org/apache/sis/internal/storage/wkt/Store.java | 25 +- .../org/apache/sis/internal/storage/xml/Store.java | 24 +- .../java/org/apache/sis/storage/DataStore.java | 5 + .../org/apache/sis/storage/StorageConnector.java | 31 +- .../sis/storage/aggregate/MergeStrategy.java | 2 +- .../apache/sis/storage/event/StoreListeners.java | 9 +- .../apache/sis/storage/tiling/TileMatrixSet.java | 1 + .../sis/internal/storage/folder/StoreTest.java | 3 +- .../internal/storage/io/ComputedInputStream.java | 4 +- .../storage/io/FileCacheByteChannelTest.java | 18 +- .../storage/io/InputStreamArrayGetterTest.java | 62 ++++ .../apache/sis/test/suite/StorageTestSuite.java | 1 + .../org/apache/sis/internal/storage/gpx/Store.java | 3 + .../internal/storage/xml/stream/StaxDataStore.java | 27 +- 133 files changed, 2026 insertions(+), 864 deletions(-) diff --cc storage/sis-geotiff/src/test/java/org/apache/sis/storage/geotiff/GeoCodesTest.java index 0000000000,95cfdb46c5..533f06f2b4 mode 000000,100644..100644 --- a/storage/sis-geotiff/src/test/java/org/apache/sis/storage/geotiff/GeoCodesTest.java +++ b/storage/sis-geotiff/src/test/java/org/apache/sis/storage/geotiff/GeoCodesTest.java @@@ -1,0 -1,73 +1,73 @@@ + /* + * 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.storage.geotiff; + + import org.opengis.util.FactoryException; + import org.opengis.parameter.ParameterDescriptorGroup; + import org.opengis.referencing.IdentifiedObject; -import org.opengis.referencing.operation.CoordinateOperationFactory; ++import org.opengis.referencing.operation.MathTransformFactory; + import org.apache.sis.internal.system.DefaultFactories; + import org.apache.sis.metadata.iso.citation.Citations; + import org.apache.sis.referencing.IdentifiedObjects; + import org.apache.sis.test.TestCase; + import org.junit.Test; + + import static org.junit.Assert.*; + + + /** + * Verifies some {@link GeoCodes} values. + * + * @author Martin Desruisseaux (Geomatys) + * @version 1.4 + * @since 1.4 + */ + public final class GeoCodesTest extends TestCase { + /** + * Verifies the constants relative to the polar stereographic projection. + * + * @throws FactoryException if the operation method is not found. + */ + @Test + public void verifyPolarStereographic() throws FactoryException { + ParameterDescriptorGroup parameters = parameters("Polar Stereographic (Variant B)"); + assertEquals(GeoCodes.PolarStereographic, parseCode(parameters)); + /* + * Following are testing `GeoKeys` rather than `GeoCodes`, + * but we do that as an additional consistency check. + */ + ParameterDescriptorGroup alternative = parameters("Polar Stereographic (Variant A)"); + assertEquals(GeoKeys.StdParallel1, parseCode(parameters .descriptor("Latitude of standard parallel"))); + assertEquals(GeoKeys.NatOriginLat, parseCode(alternative.descriptor("Latitude of natural origin"))); + + } + + /** + * Returns the parameters for the operation method of the given name. + */ + private static ParameterDescriptorGroup parameters(final String method) throws FactoryException { - final CoordinateOperationFactory factory = DefaultFactories.forBuildin(CoordinateOperationFactory.class); - return factory.getOperationMethod(method).getParameters(); ++ final MathTransformFactory factory = DefaultFactories.forBuildin(MathTransformFactory.class); ++ return factory.getDefaultParameters(method).getDescriptor(); + } + + /** + * Returns the GeoTIFF code declared in the given object. + */ + private static int parseCode(final IdentifiedObject object) { + return Integer.parseInt(IdentifiedObjects.getIdentifier(object, Citations.GEOTIFF).getCode()); + } + } diff --cc storage/sis-netcdf/src/test/java/org/apache/sis/internal/netcdf/TestCase.java index 645b428a39,ebe37c7989..62a21d5c34 --- a/storage/sis-netcdf/src/test/java/org/apache/sis/internal/netcdf/TestCase.java +++ b/storage/sis-netcdf/src/test/java/org/apache/sis/internal/netcdf/TestCase.java @@@ -27,6 -27,8 +27,7 @@@ import org.apache.sis.storage.DataStore import org.apache.sis.internal.netcdf.ucar.DecoderWrapper; import org.apache.sis.setup.GeometryLibrary; import org.apache.sis.storage.event.StoreListeners; + import org.apache.sis.storage.DataStoreMock; -import org.opengis.test.dataset.TestData; import ucar.nc2.dataset.NetcdfDataset; import ucar.nc2.NetcdfFile; import org.junit.AfterClass; diff --cc storage/sis-netcdf/src/test/java/org/apache/sis/storage/netcdf/MetadataReaderTest.java index 4ca122a2d1,df2b33fbbb..efd18500f8 --- a/storage/sis-netcdf/src/test/java/org/apache/sis/storage/netcdf/MetadataReaderTest.java +++ b/storage/sis-netcdf/src/test/java/org/apache/sis/storage/netcdf/MetadataReaderTest.java @@@ -32,7 -33,7 +32,8 @@@ import org.apache.sis.internal.netcdf.T import org.apache.sis.internal.netcdf.Decoder; import org.apache.sis.internal.netcdf.impl.ChannelDecoderTest; import org.apache.sis.storage.DataStoreException; +import org.apache.sis.test.ContentVerifier; + import org.apache.sis.storage.DataStoreMock; import org.apache.sis.test.DependsOn; import org.junit.Test; @@@ -71,11 -72,10 +72,10 @@@ public final class MetadataReaderTest e */ @Test public void testEmbedded() throws IOException, DataStoreException { - final Metadata metadata; - try (Decoder input = ChannelDecoderTest.createChannelDecoder(TestData.NETCDF_2D_GEOGRAPHIC)) { - metadata = new MetadataReader(input).read(); - } + final Decoder input = ChannelDecoderTest.createChannelDecoder(TestData.NETCDF_2D_GEOGRAPHIC); + final Metadata metadata = new MetadataReader(input).read(); + input.close(new DataStoreMock("lock")); - compareToExpected(metadata).assertMetadataEquals(); + compareToExpected(metadata); } /** @@@ -87,11 -87,12 +87,10 @@@ */ @Test public void testUCAR() throws IOException, DataStoreException { - final Metadata metadata; - try (Decoder input = createDecoder(TestData.NETCDF_2D_GEOGRAPHIC)) { - metadata = new MetadataReader(input).read(); - } + final Decoder input = createDecoder(TestData.NETCDF_2D_GEOGRAPHIC); + final Metadata metadata = new MetadataReader(input).read(); + input.close(new DataStoreMock("lock")); - final ContentVerifier verifier = compareToExpected(metadata); - verifier.addExpectedValue("identificationInfo[0].resourceFormat[0].formatSpecificationCitation.alternateTitle[1]", "NetCDF-3/CDM"); - verifier.assertMetadataEquals(); + compareToExpected(metadata); } /** diff --cc storage/sis-netcdf/src/test/java/org/apache/sis/storage/netcdf/NetcdfStoreProviderTest.java index bd1bb5664c,c31b9ae8c8..986fefab29 --- a/storage/sis-netcdf/src/test/java/org/apache/sis/storage/netcdf/NetcdfStoreProviderTest.java +++ b/storage/sis-netcdf/src/test/java/org/apache/sis/storage/netcdf/NetcdfStoreProviderTest.java @@@ -26,9 -26,10 +26,10 @@@ import org.apache.sis.internal.netcdf.i import org.apache.sis.storage.ProbeResult; import org.apache.sis.storage.StorageConnector; import org.apache.sis.storage.DataStoreException; + import org.apache.sis.storage.DataStoreMock; import org.apache.sis.util.Version; import org.apache.sis.test.DependsOn; -import org.opengis.test.dataset.TestData; +import org.apache.sis.internal.netcdf.TestData; import org.junit.Test; import static org.opengis.test.Assert.*; diff --cc storage/sis-storage/src/main/java/org/apache/sis/internal/storage/folder/Store.java index a80941387a,0e1d24c903..b9b37b2e23 --- a/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/folder/Store.java +++ b/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/folder/Store.java @@@ -271,9 -271,10 +271,10 @@@ class Store extends DataStore implement public synchronized Metadata getMetadata() { if (metadata == null) { final MetadataBuilder mb = new MetadataBuilder(); - mb.addResourceScope(ScopeCode.COLLECTION, Resources.formatInternational(Resources.Keys.DirectoryContent_1, getDisplayName())); + mb.addResourceScope(ScopeCode.valueOf("COLLECTION"), Resources.formatInternational(Resources.Keys.DirectoryContent_1, getDisplayName())); mb.addLanguage(locale, MetadataBuilder.Scope.RESOURCE); mb.addEncoding(encoding, MetadataBuilder.Scope.RESOURCE); + final GenericName identifier = identifier(null); String name = null; if (identifier != null) { name = identifier.toString();