This is an automated email from the ASF dual-hosted git repository. jsorel pushed a commit to branch geoapi-4.0 in repository https://gitbox.apache.org/repos/asf/sis.git
The following commit(s) were added to refs/heads/geoapi-4.0 by this push: new 2f1112858c Implement getFileSet() on landsat resources 2f1112858c is described below commit 2f1112858c45f0a8aa600f53dfdfee1ac004d705 Author: jsorel <johann.so...@geomatys.com> AuthorDate: Wed Apr 30 09:45:44 2025 +0200 Implement getFileSet() on landsat resources --- .../main/org/apache/sis/storage/landsat/Band.java | 27 ++++++++++++++++------ .../org/apache/sis/storage/landsat/BandGroup.java | 15 ++++++++++++ .../apache/sis/storage/landsat/LandsatStore.java | 17 ++++++++++++++ 3 files changed, 52 insertions(+), 7 deletions(-) diff --git a/endorsed/src/org.apache.sis.storage.earthobservation/main/org/apache/sis/storage/landsat/Band.java b/endorsed/src/org.apache.sis.storage.earthobservation/main/org/apache/sis/storage/landsat/Band.java index a5c222f2ac..40fe5d7143 100644 --- a/endorsed/src/org.apache.sis.storage.earthobservation/main/org/apache/sis/storage/landsat/Band.java +++ b/endorsed/src/org.apache.sis.storage.earthobservation/main/org/apache/sis/storage/landsat/Band.java @@ -115,13 +115,7 @@ final class Band extends GridResourceWrapper implements CoverageModifier { */ @Override protected GridCoverageResource createSource() throws DataStoreException { - final Path file; - if (parent.directory != null) { - file = parent.directory.resolve(filename); - } else { - file = Path.of(filename); - } - final StorageConnector connector = new StorageConnector(file); + final StorageConnector connector = new StorageConnector(getDataPath()); connector.setOption(DataOptionKey.COVERAGE_MODIFIER, this); return new GeoTiffStore(parent, parent.getProvider(), connector, true).components().get(0); } @@ -224,4 +218,23 @@ final class Band extends GridResourceWrapper implements CoverageModifier { public boolean isElectromagneticMeasurement(final Source source) { return isMain(source) && band.wavelength != 0; } + + /** + * Returns the path to the file containing this band. + */ + @Override + public Optional<FileSet> getFileSet() throws DataStoreException { + return Optional.of(new FileSet(getDataPath())); + } + + /** + * Resolve Path to image file. + */ + private Path getDataPath() { + if (parent.directory != null) { + return parent.directory.resolve(filename); + } else { + return Path.of(filename); + } + } } diff --git a/endorsed/src/org.apache.sis.storage.earthobservation/main/org/apache/sis/storage/landsat/BandGroup.java b/endorsed/src/org.apache.sis.storage.earthobservation/main/org/apache/sis/storage/landsat/BandGroup.java index de51932a48..3f7d3106c2 100644 --- a/endorsed/src/org.apache.sis.storage.earthobservation/main/org/apache/sis/storage/landsat/BandGroup.java +++ b/endorsed/src/org.apache.sis.storage.earthobservation/main/org/apache/sis/storage/landsat/BandGroup.java @@ -16,11 +16,14 @@ */ package org.apache.sis.storage.landsat; +import java.nio.file.Path; import java.util.List; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.HashSet; import java.util.Optional; +import java.util.Set; import org.opengis.util.GenericName; import org.opengis.metadata.Metadata; import org.apache.sis.storage.Resource; @@ -133,6 +136,18 @@ final class BandGroup extends AbstractResource implements Aggregate, StoreResour return UnmodifiableArrayList.wrap(components); } + /** + * Returns the paths to the files containing each band. + */ + @Override + public Optional<FileSet> getFileSet() throws DataStoreException { + final Set<Path> paths = new HashSet<>(); + for (Band b : components) { + b.getFileSet().map(FileSet::getPaths).ifPresent(paths::addAll); + } + return Optional.of(new FileSet(paths)); + } + /** * Returns all bands in the given array of aggregates. */ diff --git a/endorsed/src/org.apache.sis.storage.earthobservation/main/org/apache/sis/storage/landsat/LandsatStore.java b/endorsed/src/org.apache.sis.storage.earthobservation/main/org/apache/sis/storage/landsat/LandsatStore.java index 6dab2cb236..f6adab64fe 100644 --- a/endorsed/src/org.apache.sis.storage.earthobservation/main/org/apache/sis/storage/landsat/LandsatStore.java +++ b/endorsed/src/org.apache.sis.storage.earthobservation/main/org/apache/sis/storage/landsat/LandsatStore.java @@ -28,7 +28,10 @@ import java.net.URI; import java.nio.charset.Charset; import java.nio.file.Path; import java.nio.file.Files; +import java.nio.file.Paths; import java.nio.file.StandardOpenOption; +import java.util.HashSet; +import java.util.Set; import org.opengis.util.NameSpace; import org.opengis.util.GenericName; import org.opengis.util.NameFactory; @@ -298,6 +301,20 @@ public class LandsatStore extends DataStore implements Aggregate { } } + /** + * Returns the list of band files and the *_MTL.txt file. + */ + @Override + public Optional<FileSet> getFileSet() throws DataStoreException { + components(); //force loading bands + final Set<Path> paths = new HashSet<>(); + paths.add(Paths.get(location)); + for (BandGroup b : components) { + b.getFileSet().map(FileSet::getPaths).ifPresent(paths::addAll); + } + return Optional.of(new FileSet(paths)); + } + /** * Closes this Landsat store and releases any underlying resources. * This method can be invoked asynchronously for interrupting a long reading process.