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.

Reply via email to