Author: desruisseaux
Date: Tue Feb 20 15:24:12 2018
New Revision: 1824890
URL: http://svn.apache.org/viewvc?rev=1824890&view=rev
Log:
Javadoc on org.apache.sis.storage.Resource and subtypes.
Modified:
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/FileSystemResource.java
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/ResourceTransaction.java
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/TransactionalResource.java
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/storage/Aggregate.java
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/storage/Capability.java
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/storage/FeatureSet.java
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/storage/Resource.java
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/storage/WritableAggregate.java
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/storage/WritableFeatureSet.java
Modified:
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/FileSystemResource.java
URL:
http://svn.apache.org/viewvc/sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/FileSystemResource.java?rev=1824890&r1=1824889&r2=1824890&view=diff
==============================================================================
---
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/FileSystemResource.java
[UTF-8] (original)
+++
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/FileSystemResource.java
[UTF-8] Tue Feb 20 15:24:12 2018
@@ -20,24 +20,28 @@ import java.nio.file.Path;
import org.apache.sis.storage.DataStoreException;
import org.apache.sis.storage.Resource;
+
/**
- * Files-related {@linkplain org.apache.sis.storage.Resource resource}.
- * This interface allows a resource to indicate it's used files, it
- * can then be used to improve data management.
+ * A resource which is loaded from one or many files on an arbitrary file
system. This interface
+ * allows a resource (typically a {@linkplain org.apache.sis.storage.DataStore
data store}) to
+ * list the files that it uses. This information can be used for improving
data management,
+ * for example copy operations.
*
- * @author Johann Sorel (Geomatys)
- * @since 1.0
+ * @author Johann Sorel (Geomatys)
+ * @version 1.0
+ * @since 1.0
* @module
+ *
+ * @todo Current name suggests resources provided by the file system (i.e.
files and directories).
+ * Rename as {@code FileBackedResource}, {@code ResourceBackedByFiles}
or {@code ResourceOnFileSystem}?
*/
public interface FileSystemResource extends Resource {
-
/**
- * Get all files used by this {@linkplain org.apache.sis.storage.DataStore
data store}.
+ * Gets the paths to all files used by this resource. This is typically the
+ * files opened by a {@linkplain org.apache.sis.storage.DataStore data
store}.
*
- * @return Files used by this store. Should never be {@code null}.
- * @throws org.apache.sis.storage.DataStoreException if an error on the
file system prevent
- * the creation of the list.
+ * @return files used by this resource. Should never be {@code null}.
+ * @throws DataStoreException if an error on the file system prevent the
creation of the list.
*/
Path[] getResourcePaths() throws DataStoreException;
-
}
Modified:
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/ResourceTransaction.java
URL:
http://svn.apache.org/viewvc/sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/ResourceTransaction.java?rev=1824890&r1=1824889&r2=1824890&view=diff
==============================================================================
---
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/ResourceTransaction.java
[UTF-8] (original)
+++
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/ResourceTransaction.java
[UTF-8] Tue Feb 20 15:24:12 2018
@@ -20,29 +20,36 @@ import org.apache.sis.storage.Aggregate;
import org.apache.sis.storage.DataStoreException;
import org.apache.sis.storage.Resource;
+
/**
- * A transaction resource.
- * This transaction include both this resource and all children resources
- * if it is an {@linkplain Aggregate}.
+ * A writable resource containing data (features or coverages) that can be
changed in a all-or-nothing way.
+ * Resource transaction shall also implement at least one of the {@code
Writable*} interfaces.
+ * If the resource is an {@link Aggregate}, then this transaction includes
both this resource
+ * and all children resources.
*
- * @author Johann Sorel (Geomatys)
- * @since 1.0
+ * @author Johann Sorel (Geomatys)
+ * @version 1.0
+ * @since 1.0
* @module
*/
public interface ResourceTransaction extends Resource {
-
/**
- * Apply all the changes made in this transaction.
+ * Makes permanent all changes that have been in current transaction.
+ * The current transaction contains the changes performed since the {@code
ResourceTransaction}
+ * creation, or since the last call to either the {@code commit()} or
{@link #rollback()} methods.
*
- * @throws DataStoreException
+ * @throws DataStoreException if an error occurred while committing the
transaction.
+ * In such case, the system shall be in state before the commit
attempt.
*/
void commit() throws DataStoreException;
/**
- * Revert all changes made in this session.
+ * Undoes all changes made in the current transaction.
+ * The current transaction contains the changes performed since the {@code
ResourceTransaction}
+ * creation, or since the last call to either the {@link #commit()} or
{@code rollback()} methods.
*
- * @throws DataStoreException
+ * @throws DataStoreException if an error occurred while rolling back the
transaction.
+ * In such case, the system shall be in state before the rollback
attempt.
*/
void rollback() throws DataStoreException;
-
}
Modified:
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/TransactionalResource.java
URL:
http://svn.apache.org/viewvc/sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/TransactionalResource.java?rev=1824890&r1=1824889&r2=1824890&view=diff
==============================================================================
---
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/TransactionalResource.java
[UTF-8] (original)
+++
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/TransactionalResource.java
[UTF-8] Tue Feb 20 15:24:12 2018
@@ -16,27 +16,32 @@
*/
package org.apache.sis.internal.storage;
+import org.apache.sis.storage.DataStore;
import org.apache.sis.storage.DataStoreException;
import org.apache.sis.storage.Resource;
+
/**
- * This interface identify resources which support a transactional procedure.
- * Example : Databases, WFS
+ * Identifies resources capable to create transactions. A {@code
TransactionalResource} is not directly writable,
+ * but the transactions created by {@link #newTransaction()} are writable.
Each transaction is a unit of work
+ * independent of other transactions until a commit or rollback operation is
performed.
+ *
+ * <p>Common cases of transactional resources are {@link DataStore} backed by
databases or by
+ * transactional Web Feature Services (WFS-T).</p>
*
- * @author Johann Sorel (Geomatys)
- * @since 1.0
+ * @author Johann Sorel (Geomatys)
+ * @version 1.0
+ * @since 1.0
* @module
*/
public interface TransactionalResource extends Resource {
-
/**
- * Start a new transaction on this resource.
- * The returned resource should have the same capabilities of this
- * resource and writing capabilities.
+ * Starts a new transaction on this resource.
+ * The returned resource should have the same capabilities than this
resource
+ * with the addition of write capabilities.
*
- * @return new TransactionResource
- * @throws org.apache.sis.storage.DataStoreException
+ * @return a new writable resource that can be changed in a all-or-nothing
way.
+ * @throws DataStoreException if an error occurred while creating the
transaction.
*/
ResourceTransaction newTransaction() throws DataStoreException;
-
}
Modified:
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/storage/Aggregate.java
URL:
http://svn.apache.org/viewvc/sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/storage/Aggregate.java?rev=1824890&r1=1824889&r2=1824890&view=diff
==============================================================================
---
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/storage/Aggregate.java
[UTF-8] (original)
+++
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/storage/Aggregate.java
[UTF-8] Tue Feb 20 15:24:12 2018
@@ -54,7 +54,7 @@ import java.util.Collection;
* associated resources} with an {@link
org.opengis.metadata.identification.AssociationType#IS_COMPOSED_OF} relation.
*
* @author Johann Sorel (Geomatys)
- * @version 0.8
+ * @version 1.0
* @since 0.8
* @module
*/
@@ -86,5 +86,4 @@ public interface Aggregate extends Resou
* @throws DataStoreException if an error occurred while fetching the
components.
*/
Collection<Resource> components() throws DataStoreException;
-
}
Modified:
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/storage/Capability.java
URL:
http://svn.apache.org/viewvc/sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/storage/Capability.java?rev=1824890&r1=1824889&r2=1824890&view=diff
==============================================================================
---
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/storage/Capability.java
[UTF-8] (original)
+++
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/storage/Capability.java
[UTF-8] Tue Feb 20 15:24:12 2018
@@ -17,18 +17,21 @@
package org.apache.sis.storage;
import java.util.ArrayList;
+import java.util.Iterator;
import java.util.List;
import org.opengis.util.CodeList;
+
import static org.opengis.util.CodeList.valueOf;
+
/**
- * A capability indicate a special behavior or information for a {@link
Resource}.
- * Capabilities are used as flags returned by the {@link
Resource#getCapabilities() } method.
+ * Indicates which optional behavior or information can be provided by a
{@link Resource}.
+ * Capabilities are used as flags returned by the {@link
Resource#getCapabilities()} method.
*
- * A common {@link Capability} is {@link Capability#WRITABLE} which should be
declared
- * accordingly by {@link Resource}s.
+ * A commonly used value is {@link Capability#WRITABLE}, which should be
declared by all
+ * {@link Resource}s implementing {@code add(…)} and {@code update(…)} methods.
*
- * @author Johann Sorel (Geomatys)
+ * @author Johann Sorel (Geomatys)
* @version 1.0
* @since 1.0
* @module
@@ -43,12 +46,12 @@ public final class Capability extends Co
* List of all enumerations of this type.
* Must be declared before any enum declaration.
*/
- private static final List<Capability> VALUES = new ArrayList<>();
+ private static final List<Capability> VALUES = new ArrayList<>(1);
/**
- * The resource support writing operations.
- * The methods related to writing such as {@link
org.apache.sis.storage.WritableFeatureSet#add(java.util.Iterator) }
- * should not throw any unsupported exception if this capability is set.
+ * The resource supports write operations.
+ * The methods related to writing such as {@link
org.apache.sis.storage.WritableFeatureSet#add(Iterator)}
+ * should not throw any {@link UnsupportedOperationException} if this
capability is set.
*/
public static final Capability WRITABLE = new Capability("WRITABLE");
@@ -100,4 +103,3 @@ public final class Capability extends Co
return valueOf(Capability.class, code);
}
}
-
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=1824890&r1=1824889&r2=1824890&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] Tue Feb 20 15:24:12 2018
@@ -16,8 +16,9 @@
*/
package org.apache.sis.storage;
-// Branch-dependent imports
import java.util.stream.Stream;
+
+// Branch-dependent imports
import org.opengis.feature.Feature;
import org.opengis.feature.FeatureType;
@@ -30,7 +31,7 @@ import org.opengis.feature.FeatureType;
* are also allowed.
*
* @author Johann Sorel (Geomatys)
- * @version 0.8
+ * @version 1.0
* @since 0.8
* @module
*/
@@ -135,5 +136,4 @@ public interface FeatureSet extends Data
* @throws DataStoreException if an error occurred while creating the
stream.
*/
Stream<Feature> features(boolean parallel) throws DataStoreException;
-
}
Modified:
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/storage/Resource.java
URL:
http://svn.apache.org/viewvc/sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/storage/Resource.java?rev=1824890&r1=1824889&r2=1824890&view=diff
==============================================================================
---
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/storage/Resource.java
[UTF-8] (original)
+++
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/storage/Resource.java
[UTF-8] Tue Feb 20 15:24:12 2018
@@ -107,17 +107,18 @@ public interface Resource {
Metadata getMetadata() throws DataStoreException;
/**
- * Returns the capabilities of this resource.
- * Resources may have different capabilites based on the type and
context.<br>
- * Example : {@link Capability#WRITABLE} can be found on {@link Aggregate}
or
- * {@link FeatureSet} to indicate the resource support writing operations.
+ * Indicates which optional behavior or information can be provided by
this resource.
+ * Resources may have different capabilites based on the type and context.
+ *
+ * <div class="note"><b>Example:</b>
+ * {@link Capability#WRITABLE} can be found on {@link WritableAggregate}
or {@link WritableFeatureSet}
+ * to indicate that the resource supports write operations.</div>
*
* <p>The default implementation returns an empty Set.</p>
*
- * @return Set of {@link Capability}, never null, unmodifiable, can be
empty.
+ * @return supported capabilities (never null). May be empty.
*/
default Set<Capability> getCapabilities() {
- return Collections.EMPTY_SET;
+ return Collections.emptySet();
}
-
}
Modified:
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/storage/WritableAggregate.java
URL:
http://svn.apache.org/viewvc/sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/storage/WritableAggregate.java?rev=1824890&r1=1824889&r2=1824890&view=diff
==============================================================================
---
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/storage/WritableAggregate.java
[UTF-8] (original)
+++
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/storage/WritableAggregate.java
[UTF-8] Tue Feb 20 15:24:12 2018
@@ -18,16 +18,16 @@ package org.apache.sis.storage;
import org.apache.sis.internal.storage.Resources;
+
/**
- * Subtype of {@linkplain Aggregate} with writing capabilities.
+ * An {@linkplain Aggregate} with writing capabilities.
*
- * @author Johann Sorel (Geomatys)
+ * @author Johann Sorel (Geomatys)
* @version 1.0
* @since 1.0
* @module
*/
public interface WritableAggregate extends Aggregate {
-
/**
* Adds a new {@code Resource} in this {@code Aggregate}.
* The given {@link Resource} will be copied, and the <cite>effectively
added</cite> resource returned.
@@ -46,8 +46,8 @@ public interface WritableAggregate exten
* then this {@code Aggregate} may throw an exception.
* </div>
*
- * <p>The {@link Capability#WRITABLE} flag if present in the {@link
Resource#getCapabilities() } set
- * indicate this method should be implemented</p>
+ * <p>The {@link Capability#WRITABLE} flag if presents in the {@link
#getCapabilities()} set
+ * indicates that this method should be implemented.</p>
*
* <p>The default implementation throws {@link
ReadOnlyStorageException}.</p>
*
@@ -64,8 +64,8 @@ public interface WritableAggregate exten
* Removes a {@code Resource} from this {@code Aggregate}.
* This operation is destructive: the {@link Resource} and it's related
data will be removed.
*
- * <p>The {@link Capability#WRITABLE} flag if present in the {@link
Resource#getCapabilities() } set
- * indicate this method should be implemented</p>
+ * <p>The {@link Capability#WRITABLE} flag if presents in the {@link
#getCapabilities()} set
+ * indicates that this method should be implemented.</p>
*
* <p>The default implementation throws {@link
ReadOnlyStorageException}.</p>
*
@@ -76,5 +76,4 @@ public interface WritableAggregate exten
default void remove(Resource resource) throws ReadOnlyStorageException,
DataStoreException {
throw new ReadOnlyStorageException(this,
Resources.Keys.StoreIsReadOnly);
}
-
}
Modified:
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/storage/WritableFeatureSet.java
URL:
http://svn.apache.org/viewvc/sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/storage/WritableFeatureSet.java?rev=1824890&r1=1824889&r2=1824890&view=diff
==============================================================================
---
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/storage/WritableFeatureSet.java
[UTF-8] (original)
+++
sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/storage/WritableFeatureSet.java
[UTF-8] Tue Feb 20 15:24:12 2018
@@ -20,41 +20,37 @@ import java.util.Iterator;
import java.util.function.Predicate;
import java.util.function.UnaryOperator;
import org.apache.sis.internal.storage.Resources;
+
+// Branch-dependent imports
import org.opengis.feature.Feature;
import org.opengis.feature.FeatureType;
+
/**
* Subtype of {@linkplain FeatureSet} with writing capabilities.
*
- * @author Johann Sorel (Geomatys)
+ * @author Johann Sorel (Geomatys)
* @version 1.0
* @since 1.0
* @module
*/
public interface WritableFeatureSet extends FeatureSet {
-
/**
- * Redefine the feature type of this feature set, including all features.
- * This operation may take an undefined time since all features in the set
must be transformed.
- *
- * <p>
- * An {@linkplain org.apache.sis.storage.IllegalFeatureTypeException}
will be throw
- * when the provided type contains incompatible attribute changes.
- * </p>
- *
- * <p>
- * In the case of a newly created feature set, this method can be used to
define
- * stored feature type.
- * </p>
- *
- * <p>
- * Default implementation throw a {@linkplain
org.apache.sis.storage.ReadOnlyStorageException}.
- * </p>
- *
- * @param newType new feature type definition, (not {@code null}).
- * @throws ReadOnlyStorageException if this instance does not support
schema update
- * @throws IllegalFeatureTypeException if the given type is not compatible
- * @throws DataStoreException if another error occurred while changing
feature type.
+ * Declares or redefines the type of all feature instances in this feature
set.
+ * In the case of a newly created feature set, this method can be used for
defining the type of features
+ * to be stored (this is not a required step however). In the case of a
feature set which already contains
+ * feature instances, this operation may take an undefined amount of time
to execute since all features in
+ * the set may need to be transformed.
+ *
+ * <p>Feature sets may restrict the kind of changes that are allowed. An
{@link IllegalFeatureTypeException}
+ * will be thrown if the given type contains incompatible property
changes.</p>
+ *
+ * <p>The default implementation throws a {@linkplain
ReadOnlyStorageException}.</p>
+ *
+ * @param newType new feature type definition (not {@code null}).
+ * @throws ReadOnlyStorageException if this instance does not support
schema update.
+ * @throws IllegalFeatureTypeException if the given type is not compatible
with the types supported by the store.
+ * @throws DataStoreException if another error occurred while changing the
feature type.
*/
default void updateType(FeatureType newType) throws
ReadOnlyStorageException, IllegalFeatureTypeException, DataStoreException {
throw new ReadOnlyStorageException(this,
Resources.Keys.StoreIsReadOnly);
@@ -70,8 +66,8 @@ public interface WritableFeatureSet exte
* than implementing a {@link java.util.stream.Stream}. On the other side
if the user has a {@link java.util.stream.Stream},
* obtaining an {@link java.util.Iterator} can be done by a call to {@link
java.util.stream.Stream#iterator()}.</div>
*
- * <p>The {@link Capability#WRITABLE} flag if present in the {@link
Resource#getCapabilities() } set
- * indicate this method should be implemented</p>
+ * <p>The {@link Capability#WRITABLE} flag if presents in the {@link
#getCapabilities()} set
+ * indicates that this method should be implemented.</p>
*
* <p>The default implementation throws {@link
ReadOnlyStorageException}.</p>
*
@@ -86,8 +82,8 @@ public interface WritableFeatureSet exte
/**
* Removes all features from this {@code FeatureSet} which matches the
given predicate.
*
- * <p>The {@link Capability#WRITABLE} flag if present in the {@link
Resource#getCapabilities() } set
- * indicate this method should be implemented</p>
+ * <p>The {@link Capability#WRITABLE} flag if presents in the {@link
#getCapabilities()} set
+ * indicates that this method should be implemented.</p>
*
* <p>The default implementation throws {@link
ReadOnlyStorageException}.</p>
*
@@ -112,8 +108,8 @@ public interface WritableFeatureSet exte
* <li>If the operator returns {@code null}, then the feature will be
removed from the {@code FeatureSet}.</li>
* </ul>
*
- * <p>The {@link Capability#WRITABLE} flag if present in the {@link
Resource#getCapabilities() } set
- * indicate this method should be implemented</p>
+ * <p>The {@link Capability#WRITABLE} flag if presents in the {@link
#getCapabilities()} set
+ * indicates that this method should be implemented.</p>
*
* <p>The default implementation throws {@link
ReadOnlyStorageException}.</p>
*