Add ability to remove feature types - STEMLab/geotools GitHub Wiki
-
Motivation: Complete the schema management API with a remove schema call
-
Contact: Daniele Romagnoli
-
Tagline: We add, we update... we don't remove?
The current DataAccess/DataStore API provides means to create and update a schema, but not a way to
remove it.
The DataAccess interface will be modified as follows:
interface DataAccess {
...
/**
* Used to permanently remove a schema from the underlying storage
* <p>
* This functionality is similar to an "drop table" statement in SQL. Implementation
* is optional; it may not be supported by all servers or files.
* @param typeName
* @throws IOException if the operation failed
* @throws UnsupportedOperation if functionality is not available
*/
void removeSchema(Name typeName) throws IOException;
...
}
Whilst the DataStore interface will see the following new method:
interface DataStore {
...
/**
* Used to permanently remove a schema from the underlying storage
* <p>
* This functionality is similar to an "drop table" statement in SQL. Implementation
* is optional; it may not be supported by all servers or files.
* @param typeName
* @throws IOException if the operation failed
* @throws UnsupportedOperation if functionality is not available
*/
void removeSchema(String typeName) throws IOException;
...
}
The code base will be modified, on trunk only, so that the new methods are implemented by throwing
an UnsupportedOperationException in the common base classes, and making sure all the code base keeps
on building.
Moreover, the support to actually drop the schemas will be implemented in the JDBC data stores.
This proposal was approved, but has been on hold waiting funding:
- Andrea Aime +1
- Ben Caradoc-Davies +1
- Christian Mueller +1
- Ian Turton +1
- Justin Deoliveira
- Jody Garnett +1
- Michael Bedward +1
- Simone Giannecchini +1
This section is used to make sure your proposal is complete (did you remember documentation?) and has enough paid or volunteer time lined up to be a success
| :white_check_mark: | :no_entry: | :warning: | :negative_squared_cross_mark: |
------------|--------------------|------------|-------------------------|-------------------------------| no progress | done | impeded | lack mandate/funds/time | volunteer needed |
-
DataStore API changed based on Description\
- ✅Update Interfaces
- ✅Unsupported Operation for ContentDataStore and AbstractDataStore
-
Implement for JDBCDataStore
- ✅ Implement using drop table
⚠️ Individual Dialects may need additional hooks to allow for spatial index maintenance, geometry columns and so on- ✅ https://github.com/geotools/geotools/pull/308
-
⚠️ User Guide - datastore code example -
Implement Shapefile DataStore
⚠️ Implementation will need to remove associated sidecar files- https://osgeo-org.atlassian.net/browse/GEOT-4613
-
Implement DirectoryDataStore
⚠️ Implementation will need to delegate to FileDataStore (and may require API change)
-
⚠️ Implement PropertyDataStore -
⚠️ Backport JDBCDataStore implementation to stable series