Package org.apache.sis.storage

## Interface WritableAggregate

- All Superinterfaces:
    `Aggregate`, `Resource`

      public interface WritableAggregate
      extends Aggregate

  An `Aggregate` with writing capabilities. `WritableAggregate` inherits the reading capabilities from its parent and adds the capabilities to add or remove resources.
  Since:
    1.0

  Defined in the `sis-storage` module

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `Resource` | `add​(Resource resource)` | Adds a new `Resource` in this `Aggregate`.
    `void` | `remove​(Resource resource)` | Removes a `Resource` from this `Aggregate`.

    - ### Methods inherited from interface Aggregate

      `components`

    - ### Methods inherited from interface Resource

      `addListener, getIdentifier, getMetadata, removeListener`

- - ### Method Detail

    - #### add

          Resource add​(Resource resource)
                throws DataStoreException

      Adds a new `Resource` in this `Aggregate`. The given `Resource` will be copied, and the effectively added resource returned. The effectively added resource may differ from the given resource in many aspects. The possible changes may include the followings but not only:
      - types and properties names
      - `CoordinateReferenceSystem`
      - `Metadata`
      Warning: copying information between stores may produce differences in many aspects. The range of changes depends both on the original `Resource` structure and the target `Resource` structure. If the differences are too large, then this `Aggregate` may throw an exception.
      Parameters:
        `resource` - the resource to copy in this `Aggregate`.
      Returns:
        the effectively added resource. May be `resource` itself if it has been added verbatim.
      Throws:
        `DataStoreException` - if the given resource can not be stored in this `Aggregate`.

    - #### remove

          void remove​(Resource resource)
               throws DataStoreException

      Removes a `Resource` from this `Aggregate`. The given resource should be one of the instances returned by `Aggregate​.components()`. This operation is destructive in two aspects:
      - The `Resource` and it's data will be deleted from the `DataStore`.
      - The given resource may become invalid and should not be used anymore after this method call.
      Parameters:
        `resource` - child resource to remove from this `Aggregate`.
      Throws:
        `DataStoreException` - if the given resource could not be removed.