sis-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From desruisse...@apache.org
Subject svn commit: r1830965 - in /sis/branches/JDK8/storage/sis-storage/src: main/java/org/apache/sis/internal/storage/ main/java/org/apache/sis/storage/ test/java/org/apache/sis/internal/storage/ test/java/org/apache/sis/internal/storage/query/
Date Sat, 05 May 2018 11:54:07 GMT
Author: desruisseaux
Date: Sat May  5 11:54:07 2018
New Revision: 1830965

URL: http://svn.apache.org/viewvc?rev=1830965&view=rev
Log:
Rename ArrayFeatureSet as MemoryFeatureSet, add javadoc and move some implementation to super-class.

Added:
    sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/MemoryFeatureSet.java
      - copied, changed from r1830964, sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/ArrayFeatureSet.java
Removed:
    sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/ArrayFeatureSet.java
Modified:
    sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/AbstractFeatureSet.java
    sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/AbstractResource.java
    sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/JoinFeatureSet.java
    sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/storage/FeatureSet.java
    sis/branches/JDK8/storage/sis-storage/src/test/java/org/apache/sis/internal/storage/JoinFeatureSetTest.java
    sis/branches/JDK8/storage/sis-storage/src/test/java/org/apache/sis/internal/storage/query/SimpleQueryTest.java

Modified: sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/AbstractFeatureSet.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/AbstractFeatureSet.java?rev=1830965&r1=1830964&r2=1830965&view=diff
==============================================================================
--- sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/AbstractFeatureSet.java
[UTF-8] (original)
+++ sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/AbstractFeatureSet.java
[UTF-8] Sat May  5 11:54:07 2018
@@ -17,15 +17,20 @@
 package org.apache.sis.internal.storage;
 
 import org.apache.sis.storage.DataStore;
+import org.apache.sis.storage.DataStoreException;
 import org.apache.sis.storage.FeatureSet;
+import org.apache.sis.storage.Query;
+import org.apache.sis.storage.UnsupportedQueryException;
+import org.apache.sis.internal.storage.query.SimpleQuery;
 import org.apache.sis.util.logging.WarningListeners;
 
 
 /**
  * Base implementation of feature sets contained in data stores.
  *
+ * @author  Johann Sorel (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
- * @version 0.8
+ * @version 1.0
  * @since   0.8
  * @module
  */
@@ -33,9 +38,29 @@ public abstract class AbstractFeatureSet
     /**
      * Creates a new resource.
      *
-     * @param listeners  the set of registered warning listeners for the data store.
+     * @param listeners  the set of registered warning listeners for the data store, or {@code
null} if none.
      */
     protected AbstractFeatureSet(final WarningListeners<DataStore> listeners) {
         super(listeners);
     }
+
+    /**
+     * Requests a subset of features and/or feature properties from this resource.
+     * The default implementation try to execute the queries by filtering the
+     * {@linkplain #features(boolean) stream of features}, which may be inefficient.
+     * Subclasses are encouraged to override.
+     *
+     * @param  query  definition of feature and feature properties filtering applied at reading
time.
+     * @return resulting subset of features (never {@code null}).
+     * @throws UnsupportedQueryException if this {@code FeatureSet} can not execute the
given query.
+     * @throws DataStoreException if another error occurred while processing the query.
+     */
+    @Override
+    public FeatureSet subset(final Query query) throws DataStoreException {
+        if (query instanceof SimpleQuery) {
+            return SimpleQuery.executeOnCPU(this, (SimpleQuery) query);
+        } else {
+            return FeatureSet.super.subset(query);
+        }
+    }
 }

Modified: sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/AbstractResource.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/AbstractResource.java?rev=1830965&r1=1830964&r2=1830965&view=diff
==============================================================================
--- sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/AbstractResource.java
[UTF-8] (original)
+++ sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/AbstractResource.java
[UTF-8] Sat May  5 11:54:07 2018
@@ -43,14 +43,14 @@ import org.apache.sis.storage.event.Chan
  */
 public abstract class AbstractResource implements Resource, Localized {
     /**
-     * The set of registered warning listeners for the data store.
+     * The set of registered warning listeners for the data store, or {@code null} if none.
      */
     protected final WarningListeners<DataStore> listeners;
 
     /**
      * Creates a new resource.
      *
-     * @param listeners  the set of registered warning listeners for the data store.
+     * @param listeners  the set of registered warning listeners for the data store, or {@code
null} if none.
      */
     protected AbstractResource(final WarningListeners<DataStore> listeners) {
         this.listeners = listeners;

Modified: sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/JoinFeatureSet.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/JoinFeatureSet.java?rev=1830965&r1=1830964&r2=1830965&view=diff
==============================================================================
--- sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/JoinFeatureSet.java
[UTF-8] (original)
+++ sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/JoinFeatureSet.java
[UTF-8] Sat May  5 11:54:07 2018
@@ -34,8 +34,6 @@ import org.apache.sis.referencing.NamedI
 import org.apache.sis.storage.DataStore;
 import org.apache.sis.storage.DataStoreException;
 import org.apache.sis.storage.FeatureSet;
-import org.apache.sis.storage.Query;
-import org.apache.sis.storage.UnsupportedQueryException;
 import org.apache.sis.util.collection.BackingStoreException;
 import org.apache.sis.util.iso.SimpleInternationalString;
 import org.apache.sis.util.logging.WarningListeners;
@@ -187,14 +185,6 @@ public class JoinFeatureSet extends Abst
     }
 
     @Override
-    public FeatureSet subset(Query query) throws UnsupportedQueryException, DataStoreException
{
-        if (query instanceof SimpleQuery) {
-            return SimpleQuery.executeOnCPU(this, (SimpleQuery) query);
-        }
-        return FeatureSet.super.subset(query);
-    }
-
-    @Override
     public Stream<Feature> features(boolean parallel) throws DataStoreException {
         final JoinIterator ite;
         switch (joinType) {

Copied: sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/MemoryFeatureSet.java
(from r1830964, sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/ArrayFeatureSet.java)
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/MemoryFeatureSet.java?p2=sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/MemoryFeatureSet.java&p1=sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/ArrayFeatureSet.java&r1=1830964&r2=1830965&rev=1830965&view=diff
==============================================================================
--- sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/ArrayFeatureSet.java
[UTF-8] (original)
+++ sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/MemoryFeatureSet.java
[UTF-8] Sat May  5 11:54:07 2018
@@ -17,94 +17,105 @@
 package org.apache.sis.internal.storage;
 
 import java.util.Collection;
-import java.util.Collections;
 import java.util.stream.Stream;
-import org.apache.sis.internal.storage.query.SimpleQuery;
 import org.apache.sis.metadata.iso.DefaultMetadata;
 import org.apache.sis.metadata.iso.citation.DefaultCitation;
 import org.apache.sis.metadata.iso.identification.DefaultDataIdentification;
 import org.apache.sis.referencing.NamedIdentifier;
 import org.apache.sis.storage.DataStore;
-import org.apache.sis.storage.DataStoreException;
-import org.apache.sis.storage.FeatureSet;
-import org.apache.sis.storage.Query;
-import org.apache.sis.storage.UnsupportedQueryException;
 import org.apache.sis.util.ArgumentChecks;
 import org.apache.sis.util.logging.WarningListeners;
 import org.opengis.feature.Feature;
 import org.opengis.feature.FeatureType;
 import org.opengis.metadata.Metadata;
 
+
 /**
- * FeatureSet implementation stored in memory.
- *
- * <p>
- * Note-1 : This implementation is read-only for now but will become writable.
- * </p>
- * <p>
- * Note-2 : this class is experimental.
- * </p>
+ * Set of features stored in memory.
+ * Metadata and features are specified at construction time.
  *
- * @author Johann Sorel (Geomatys)
+ * @author  Johann Sorel (Geomatys)
+ * @author  Martin Desruisseaux (Geomatys)
+ * @version 1.0
+ * @since   1.0
+ * @module
  */
-public final class ArrayFeatureSet extends AbstractFeatureSet implements FeatureSet {
-
+public final class MemoryFeatureSet extends AbstractFeatureSet {
+    /**
+     * The metadata to be returned by {@link #getMetadata()}.
+     */
     private final Metadata metadata;
+
+    /**
+     * The type specified at construction time and returned by {@link #getType()}.
+     */
     private final FeatureType type;
+
+    /**
+     * The features specified at construction time, potentially as a modifiable collection.
+     * For all features in this collection, {@link Feature#getType()} shall be {@link #type}.
+     */
     private final Collection<Feature> features;
 
     /**
-     * Creates a new feature set in memory.
+     * Creates a new set of features stored in memory. It is caller responsibility to ensure
that
+     * <code>{@linkplain Feature#getType()} == type</code> for all elements in
the given collection
+     * (this is not verified).
      *
-     * @param listeners the set of registered warning listeners for the data store.
-     * @param type stored features type.
-     * @param features collection of stored features, this collection will not be copied.
-     * @param metadata can be null
+     * @param listeners  the set of registered warning listeners for the data store, or {@code
null} if none.
+     * @param metadata   information about this resource, or {@code null} for inferring default
metadata.
+     * @param type       the type of all features in the given collection.
+     * @param features   collection of stored features. This collection will not be copied.
      */
-    public ArrayFeatureSet(final WarningListeners<DataStore> listeners, FeatureType
type, Collection<Feature> features, Metadata metadata) {
+    public MemoryFeatureSet(final WarningListeners<DataStore> listeners, Metadata metadata,
+                            final FeatureType type, final Collection<Feature> features)
+    {
         super(listeners);
-        ArgumentChecks.ensureNonNull("type", type);
-        ArgumentChecks.ensureNonNull("features", type);
-        this.type = type;
+        ArgumentChecks.ensureNonNull("type",     type);
+        ArgumentChecks.ensureNonNull("features", features);
+        this.type     = type;
         this.features = features;
-
         if (metadata == null) {
             final DefaultDataIdentification identification = new DefaultDataIdentification();
-            final NamedIdentifier identifier = new NamedIdentifier(type.getName());
             final DefaultCitation citation = new DefaultCitation(type.getName().toString());
-            citation.setIdentifiers(Collections.singleton(identifier));
+            citation.getIdentifiers().add(new NamedIdentifier(type.getName()));
             identification.setCitation(citation);
 
-            final DefaultMetadata md = new DefaultMetadata();
-            md.setIdentificationInfo(Collections.singleton(identification));
+            final DefaultMetadata md = new DefaultMetadata(null, null, identification);
             md.freeze();
             metadata = md;
         }
-
         this.metadata = metadata;
     }
 
+    /**
+     * Returns the metadata given or inferred at construction time.
+     *
+     * @return information about this resource.
+     */
     @Override
-    public FeatureType getType() throws DataStoreException {
-        return type;
-    }
-
-    @Override
-    public Metadata getMetadata() throws DataStoreException {
+    public Metadata getMetadata() {
         return metadata;
     }
 
+    /**
+     * Returns the type common to all feature instances in this set.
+     *
+     * @return a description of properties that are common to all features in this dataset.
+     */
     @Override
-    public Stream<Feature> features(boolean bln) throws DataStoreException {
-        return bln ? features.parallelStream() : features.stream();
+    public FeatureType getType() {
+        return type;
     }
 
+    /**
+     * Returns a stream of all features contained in this dataset.
+     *
+     * @param  parallel  {@code true} for a parallel stream (if supported), or {@code false}
for a sequential stream.
+     * @return all features contained in this dataset.
+     */
     @Override
-    public FeatureSet subset(Query query) throws UnsupportedQueryException, DataStoreException
{
-        if (query instanceof SimpleQuery) {
-            return SimpleQuery.executeOnCPU(this, (SimpleQuery) query);
-        }
-        return FeatureSet.super.subset(query);
+    public Stream<Feature> features(final boolean parallel) {
+        return parallel ? features.parallelStream() : features.stream();
     }
-
 }

Modified: sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/storage/FeatureSet.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/storage/FeatureSet.java?rev=1830965&r1=1830964&r2=1830965&view=diff
==============================================================================
--- sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/storage/FeatureSet.java
[UTF-8] (original)
+++ sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/storage/FeatureSet.java
[UTF-8] Sat May  5 11:54:07 2018
@@ -17,6 +17,7 @@
 package org.apache.sis.storage;
 
 import java.util.stream.Stream;
+import org.apache.sis.util.ArgumentChecks;
 
 // Branch-dependent imports
 import org.opengis.feature.Feature;
@@ -71,7 +72,7 @@ public interface FeatureSet extends Data
     FeatureType getType() throws DataStoreException;
 
     /**
-     * Requests a subset of features and feature properties from this resource.
+     * Requests a subset of features and/or feature properties from this resource.
      * The filtering can be applied in two domains:
      *
      * <ul>
@@ -101,6 +102,7 @@ public interface FeatureSet extends Data
      * @throws DataStoreException if another error occurred while processing the query.
      */
     default FeatureSet subset(Query query) throws UnsupportedQueryException, DataStoreException
{
+        ArgumentChecks.ensureNonNull("query", query);
         throw new UnsupportedQueryException();
     }
 

Modified: sis/branches/JDK8/storage/sis-storage/src/test/java/org/apache/sis/internal/storage/JoinFeatureSetTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/storage/sis-storage/src/test/java/org/apache/sis/internal/storage/JoinFeatureSetTest.java?rev=1830965&r1=1830964&r2=1830965&view=diff
==============================================================================
--- sis/branches/JDK8/storage/sis-storage/src/test/java/org/apache/sis/internal/storage/JoinFeatureSetTest.java
[UTF-8] (original)
+++ sis/branches/JDK8/storage/sis-storage/src/test/java/org/apache/sis/internal/storage/JoinFeatureSetTest.java
[UTF-8] Sat May  5 11:54:07 2018
@@ -113,7 +113,7 @@ public class JoinFeatureSetTest extends
         fid_1_4 = getId(sf);
         features1.add(sf);
 
-        featureSet1 = new ArrayFeatureSet(null, sft1, features1, null);
+        featureSet1 = new MemoryFeatureSet(null, null, sft1, features1);
 
 
         //----------------------------------------------------------------------
@@ -169,7 +169,7 @@ public class JoinFeatureSetTest extends
         fid_2_5 = getId(sf);
         features2.add(sf);
 
-        featureSet2 = new ArrayFeatureSet(null, sft2, features2, null);
+        featureSet2 = new MemoryFeatureSet(null, null, sft2, features2);
 
     }
 

Modified: sis/branches/JDK8/storage/sis-storage/src/test/java/org/apache/sis/internal/storage/query/SimpleQueryTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK8/storage/sis-storage/src/test/java/org/apache/sis/internal/storage/query/SimpleQueryTest.java?rev=1830965&r1=1830964&r2=1830965&view=diff
==============================================================================
--- sis/branches/JDK8/storage/sis-storage/src/test/java/org/apache/sis/internal/storage/query/SimpleQueryTest.java
[UTF-8] (original)
+++ sis/branches/JDK8/storage/sis-storage/src/test/java/org/apache/sis/internal/storage/query/SimpleQueryTest.java
[UTF-8] Sat May  5 11:54:07 2018
@@ -23,7 +23,7 @@ import org.apache.sis.filter.DefaultLite
 import org.apache.sis.filter.DefaultPropertyIsEqualTo;
 import org.apache.sis.filter.DefaultPropertyName;
 import org.apache.sis.filter.DefaultSortBy;
-import org.apache.sis.internal.storage.ArrayFeatureSet;
+import org.apache.sis.internal.storage.MemoryFeatureSet;
 import org.apache.sis.storage.DataStoreException;
 import org.apache.sis.storage.FeatureSet;
 import org.apache.sis.test.TestCase;
@@ -73,7 +73,7 @@ public class SimpleQueryTest extends Tes
         f5.setPropertyValue("value2", 1);
 
         FEATURES = new Feature[]{f1,f2,f3,f4,f5};
-        FEATURESET = new ArrayFeatureSet(null, TYPE, Arrays.asList(FEATURES), null);
+        FEATURESET = new MemoryFeatureSet(null, null, TYPE, Arrays.asList(FEATURES));
     }
 
     /**



Mime
View raw message