diff --git a/src/main/java/it/geosolutions/geoserver/rest/GeoServerRESTPublisher.java b/src/main/java/it/geosolutions/geoserver/rest/GeoServerRESTPublisher.java index 50e4dfe..67e24eb 100644 --- a/src/main/java/it/geosolutions/geoserver/rest/GeoServerRESTPublisher.java +++ b/src/main/java/it/geosolutions/geoserver/rest/GeoServerRESTPublisher.java @@ -35,7 +35,7 @@ import it.geosolutions.geoserver.rest.encoder.GSResourceEncoder.ProjectionPolicy import it.geosolutions.geoserver.rest.encoder.GSWorkspaceEncoder; import it.geosolutions.geoserver.rest.encoder.coverage.GSCoverageEncoder; import it.geosolutions.geoserver.rest.encoder.datastore.GSAbstractDatastoreEncoder; -import it.geosolutions.geoserver.rest.encoder.datastore.GSPostGISDatastoreEncoder; +import it.geosolutions.geoserver.rest.encoder.GSPostGISDatastoreEncoder; import it.geosolutions.geoserver.rest.encoder.feature.GSFeatureTypeEncoder; import java.io.File; @@ -694,6 +694,8 @@ public class GeoServerRESTPublisher { * * @return true if the PostGIS datastore has been successfully * created, false otherwise + * @deprecated Will be deleted in next version 1.5.x. + * Use {@link #createDatastore(String, GSAbstractDatastoreEncoder)} instead. */ public boolean createPostGISDatastore(String workspace, GSPostGISDatastoreEncoder datastoreEncoder) { @@ -705,7 +707,7 @@ public class GeoServerRESTPublisher { } /** - * Create a datastore (any datastore extending GSAbstractDatastoreEncoder). + * Create a datastore (any datastore extending {@link GSAbstractDatastoreEncoder}). * * @param workspace * Name of the workspace to contain the datastore. This will also @@ -726,7 +728,7 @@ public class GeoServerRESTPublisher { } /** - * Update a datastore (any datastore extending GSAbstractDatastoreEncoder). + * Update a datastore (any datastore extending {@link GSAbstractDatastoreEncoder}). * * @param workspace * Name of the workspace that contains the datastore. diff --git a/src/main/java/it/geosolutions/geoserver/rest/encoder/GSPostGISDatastoreEncoder.java b/src/main/java/it/geosolutions/geoserver/rest/encoder/GSPostGISDatastoreEncoder.java new file mode 100644 index 0000000..0d85ff0 --- /dev/null +++ b/src/main/java/it/geosolutions/geoserver/rest/encoder/GSPostGISDatastoreEncoder.java @@ -0,0 +1,260 @@ +/* + * GeoServer-Manager - Simple Manager Library for GeoServer + * + * Copyright (C) 2007,2011 GeoSolutions S.A.S. + * http://www.geo-solutions.it + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package it.geosolutions.geoserver.rest.encoder; + +import it.geosolutions.geoserver.rest.encoder.utils.NestedElementEncoder; +import it.geosolutions.geoserver.rest.encoder.utils.PropertyXMLEncoder; + +/** + * Geoserver datastore XML encoder. + * + * @author Eric Grosso + * @author ETj + * @author Carlo Cancellieri - carlo.cancellieri@geo-solutions.it + * + * @deprecated Will be removed in next version 1.5.x. + * Use {@link it.geosolutions.geoserver.rest.encoder.datastore.GSPostGISDatastoreEncoder} instead. + */ +public class GSPostGISDatastoreEncoder extends PropertyXMLEncoder { + + private NestedElementEncoder connectionParameters = new NestedElementEncoder("connectionParameters"); + + public GSPostGISDatastoreEncoder() { + super("dataStore"); + addContent(connectionParameters.getRoot()); + + addType("PostGIS"); // may be overwritten with e.g. "PostGIS (JNDI)" + addDatabaseType("postgis"); + } + + /** + * Set some initial defaults. + *

+ * The default parameters are as follows: + */ + public void defaultInit() { + setMinConnections(1); + setMaxConnections(10); + setFetchSize(1000); + setConnectionTimeout(20); + setLooseBBox(true); + setPreparedStatements(false); + setMaxOpenPreparedStatements(50); + } + + protected void addName(String name) { + add("name", name); + } + + public void setName(String name) { + set("name", name); + } + + protected void addDescription(String description) { + add("description", description); + } + + public void setDescription(String description) { + set("description", description); + } + + protected void addType(String type) { + add("type", type); + } + + public void setType(String type) { + set("type", type); + } + + protected void addEnabled(boolean enabled) { + add("enabled", Boolean.toString(enabled)); + } + + public void setEnabled(boolean enabled) { + set("enabled", Boolean.toString(enabled)); + } + + protected void addNamespace(String namespace) { + connectionParameters.add("namespace", namespace); + } + + public void setNamespace(String namespace) { + connectionParameters.set("namespace", namespace); + } + + protected void addHost(String host) { + connectionParameters.add("host", host); + } + + public void setHost(String host) { + connectionParameters.set("host", host); + } + + protected void addPort(int port) { + connectionParameters.add("port", Integer.toString(port)); + } + + public void setPort(int port) { + connectionParameters.set("port", Integer.toString(port)); + } + + protected void addDatabase(String database) { + connectionParameters.add("database", database); + } + + public void setDatabase(String database) { + connectionParameters.set("database", database); + } + + protected void addSchema(String schema) { + connectionParameters.add("schema", schema); + } + + public void setSchema(String schema) { + connectionParameters.set("schema", schema); + } + + protected void addUser(String user) { + connectionParameters.add("user", user); + } + + public void setUser(String user) { + connectionParameters.set("user", user); + } + + protected void addPassword(String password) { + connectionParameters.add("passwd", password); + } + + public void setPassword(String password) { + connectionParameters.set("passwd", password); + } + + protected void addDatabaseType(String dbtype) { + connectionParameters.add("dbtype", dbtype); + } + + public void setDatabaseType(String dbtype) { + connectionParameters.set("dbtype", dbtype); + } + + protected void addJndiReferenceName(String jndiReferenceName) { + connectionParameters.add("jndiReferenceName", jndiReferenceName); + } + + public void setJndiReferenceName(String jndiReferenceName) { + connectionParameters.set("jndiReferenceName", jndiReferenceName); + } + + protected void addExposePrimaryKeys(boolean exposePrimaryKeys) { + connectionParameters.add("Expose primary keys", Boolean.toString(exposePrimaryKeys)); + } + + public void setExposePrimaryKeys(boolean exposePrimaryKeys) { + connectionParameters.set("Expose primary keys", Boolean.toString(exposePrimaryKeys)); + } + + protected void addMaxConnections(int maxConnections) { + connectionParameters.add("max connections", Integer.toString(maxConnections)); + } + + public void setMaxConnections(int maxConnections) { + connectionParameters.set("max connections", Integer.toString(maxConnections)); + } + + protected void addMinConnections(int minConnections) { + connectionParameters.add("min connections", Integer.toString(minConnections)); + } + + public void setMinConnections(int minConnections) { + connectionParameters.set("min connections", Integer.toString(minConnections)); + } + + protected void addFetchSize(int fetchSize) { + connectionParameters.add("fetch size", Integer.toString(fetchSize)); + } + + public void setFetchSize(int fetchSize) { + connectionParameters.set("fetch size", Integer.toString(fetchSize)); + } + + protected void addConnectionTimeout(int seconds) { + connectionParameters.add("Connection timeout", Integer.toString(seconds)); + } + + public void setConnectionTimeout(int seconds) { + connectionParameters.set("Connection timeout", Integer.toString(seconds)); + } + + protected void addValidateConnections(boolean validateConnections) { + connectionParameters.add("validate connections", Boolean.toString(validateConnections)); + } + + public void setValidateConnections(boolean validateConnections) { + connectionParameters.set("validate connections", Boolean.toString(validateConnections)); + } + + protected void addPrimaryKeyMetadataTable(String primaryKeyMetadataTable) { + connectionParameters.add("Primary key metadata table", primaryKeyMetadataTable); + } + + public void setPrimaryKeyMetadataTable(String primaryKeyMetadataTable) { + connectionParameters.set("Primary key metadata table", primaryKeyMetadataTable); + } + + protected void addLooseBBox(boolean looseBBox) { + connectionParameters.add("Loose bbox", Boolean.toString(looseBBox)); + } + + public void setLooseBBox(boolean looseBBox) { + connectionParameters.set("Loose bbox", Boolean.toString(looseBBox)); + } + + protected void addPreparedStatements(boolean preparedStatements) { + connectionParameters.add("preparedStatements", Boolean.toString(preparedStatements)); + } + + public void setPreparedStatements(boolean preparedStatements) { + connectionParameters.set("preparedStatements", Boolean.toString(preparedStatements)); + } + + protected void addMaxOpenPreparedStatements(int maxOpenPreparedStatements) { + connectionParameters.add("Max open prepared statements", Integer.toString(maxOpenPreparedStatements)); + } + + public void setMaxOpenPreparedStatements(int maxOpenPreparedStatements) { + connectionParameters.set("Max open prepared statements", Integer.toString(maxOpenPreparedStatements)); + } + +} \ No newline at end of file diff --git a/src/main/java/it/geosolutions/geoserver/rest/encoder/datastore/GSPostGISDatastoreEncoder.java b/src/main/java/it/geosolutions/geoserver/rest/encoder/datastore/GSPostGISDatastoreEncoder.java index 0323fb3..19978ee 100644 --- a/src/main/java/it/geosolutions/geoserver/rest/encoder/datastore/GSPostGISDatastoreEncoder.java +++ b/src/main/java/it/geosolutions/geoserver/rest/encoder/datastore/GSPostGISDatastoreEncoder.java @@ -1,7 +1,7 @@ /* * GeoServer-Manager - Simple Manager Library for GeoServer * - * Copyright (C) 2007,2011 GeoSolutions S.A.S. + * Copyright (C) 2007,2012 GeoSolutions S.A.S. * http://www.geo-solutions.it * * Permission is hereby granted, free of charge, to any person obtaining a copy @@ -22,236 +22,126 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ - package it.geosolutions.geoserver.rest.encoder.datastore; -import it.geosolutions.geoserver.rest.encoder.utils.NestedElementEncoder; -import it.geosolutions.geoserver.rest.encoder.utils.PropertyXMLEncoder; - /** - * Geoserver datastore XML encoder. + * Encoder for a {@value #TYPE} datastore. * * @author Eric Grosso * @author ETj * @author Carlo Cancellieri - carlo.cancellieri@geo-solutions.it + * @author Oscar Fonts */ -public class GSPostGISDatastoreEncoder extends PropertyXMLEncoder { +public class GSPostGISDatastoreEncoder extends GSAbstractDatastoreEncoder { - private NestedElementEncoder connectionParameters = new NestedElementEncoder("connectionParameters"); + static final String TYPE = "PostGIS"; - public GSPostGISDatastoreEncoder() { - super("dataStore"); - addContent(connectionParameters.getRoot()); + static final int DEFAULT_MIN_CONNECTIONS = 1; + static final int DEFAULT_MAX_CONNECTIONS = 10; + static final int DEFAULT_FETCH_SIZE = 1000; + static final int DEFAULT_CONNECTION_TIMEOUT = 20; + static final boolean DEFAULT_LOOSE_BBOX = true; + static final boolean DEFAULT_PREPARED_STATEMENTS = false; + static final int DEFAULT_MAX_OPEN_PREPARED_STATEMENTS = 50; + + public GSPostGISDatastoreEncoder(String name) { + super(name); + + // Set mandatory parameter + setType(TYPE); + setDatabaseType("postgis"); + + // Set default values + setMinConnections(DEFAULT_MIN_CONNECTIONS); + setMaxConnections(DEFAULT_MAX_CONNECTIONS); + setFetchSize(DEFAULT_FETCH_SIZE); + setConnectionTimeout(DEFAULT_CONNECTION_TIMEOUT); + setLooseBBox(DEFAULT_LOOSE_BBOX); + setPreparedStatements(DEFAULT_PREPARED_STATEMENTS); + setMaxOpenPreparedStatements(DEFAULT_MAX_OPEN_PREPARED_STATEMENTS); - addType("PostGIS"); // may be overwritten with e.g. "PostGIS (JNDI)" - addDatabaseType("postgis"); - } - - /** - * Set some initial defaults. - *

- * The default parameters are as follows: - */ - public void defaultInit() { - setMinConnections(1); - setMaxConnections(10); - setFetchSize(1000); - setConnectionTimeout(20); - setLooseBBox(true); - setPreparedStatements(false); - setMaxOpenPreparedStatements(50); - } - - protected void addName(String name) { - add("name", name); - } - - public void setName(String name) { - set("name", name); - } - - protected void addDescription(String description) { - add("description", description); - } - - public void setDescription(String description) { - set("description", description); - } - - protected void addType(String type) { - add("type", type); - } - - public void setType(String type) { - set("type", type); - } - - protected void addEnabled(boolean enabled) { - add("enabled", Boolean.toString(enabled)); - } - - public void setEnabled(boolean enabled) { - set("enabled", Boolean.toString(enabled)); - } - - protected void addNamespace(String namespace) { - connectionParameters.add("namespace", namespace); } public void setNamespace(String namespace) { connectionParameters.set("namespace", namespace); } - protected void addHost(String host) { - connectionParameters.add("host", host); - } - public void setHost(String host) { connectionParameters.set("host", host); } - - protected void addPort(int port) { - connectionParameters.add("port", Integer.toString(port)); - } public void setPort(int port) { connectionParameters.set("port", Integer.toString(port)); } - - protected void addDatabase(String database) { - connectionParameters.add("database", database); - } public void setDatabase(String database) { connectionParameters.set("database", database); } - protected void addSchema(String schema) { - connectionParameters.add("schema", schema); - } - public void setSchema(String schema) { connectionParameters.set("schema", schema); } - - protected void addUser(String user) { - connectionParameters.add("user", user); - } public void setUser(String user) { connectionParameters.set("user", user); } - - protected void addPassword(String password) { - connectionParameters.add("passwd", password); - } public void setPassword(String password) { connectionParameters.set("passwd", password); } - protected void addDatabaseType(String dbtype) { - connectionParameters.add("dbtype", dbtype); - } - public void setDatabaseType(String dbtype) { connectionParameters.set("dbtype", dbtype); } - - protected void addJndiReferenceName(String jndiReferenceName) { - connectionParameters.add("jndiReferenceName", jndiReferenceName); - } public void setJndiReferenceName(String jndiReferenceName) { connectionParameters.set("jndiReferenceName", jndiReferenceName); } - - protected void addExposePrimaryKeys(boolean exposePrimaryKeys) { - connectionParameters.add("Expose primary keys", Boolean.toString(exposePrimaryKeys)); - } public void setExposePrimaryKeys(boolean exposePrimaryKeys) { connectionParameters.set("Expose primary keys", Boolean.toString(exposePrimaryKeys)); } - protected void addMaxConnections(int maxConnections) { - connectionParameters.add("max connections", Integer.toString(maxConnections)); - } - public void setMaxConnections(int maxConnections) { connectionParameters.set("max connections", Integer.toString(maxConnections)); } - protected void addMinConnections(int minConnections) { - connectionParameters.add("min connections", Integer.toString(minConnections)); - } - public void setMinConnections(int minConnections) { connectionParameters.set("min connections", Integer.toString(minConnections)); } - protected void addFetchSize(int fetchSize) { - connectionParameters.add("fetch size", Integer.toString(fetchSize)); - } - public void setFetchSize(int fetchSize) { connectionParameters.set("fetch size", Integer.toString(fetchSize)); } - protected void addConnectionTimeout(int seconds) { - connectionParameters.add("Connection timeout", Integer.toString(seconds)); - } - public void setConnectionTimeout(int seconds) { connectionParameters.set("Connection timeout", Integer.toString(seconds)); } - protected void addValidateConnections(boolean validateConnections) { - connectionParameters.add("validate connections", Boolean.toString(validateConnections)); - } - public void setValidateConnections(boolean validateConnections) { connectionParameters.set("validate connections", Boolean.toString(validateConnections)); } - protected void addPrimaryKeyMetadataTable(String primaryKeyMetadataTable) { - connectionParameters.add("Primary key metadata table", primaryKeyMetadataTable); - } - public void setPrimaryKeyMetadataTable(String primaryKeyMetadataTable) { connectionParameters.set("Primary key metadata table", primaryKeyMetadataTable); } - protected void addLooseBBox(boolean looseBBox) { - connectionParameters.add("Loose bbox", Boolean.toString(looseBBox)); - } - public void setLooseBBox(boolean looseBBox) { connectionParameters.set("Loose bbox", Boolean.toString(looseBBox)); } - protected void addPreparedStatements(boolean preparedStatements) { - connectionParameters.add("preparedStatements", Boolean.toString(preparedStatements)); - } - public void setPreparedStatements(boolean preparedStatements) { connectionParameters.set("preparedStatements", Boolean.toString(preparedStatements)); } - protected void addMaxOpenPreparedStatements(int maxOpenPreparedStatements) { - connectionParameters.add("Max open prepared statements", Integer.toString(maxOpenPreparedStatements)); - } - public void setMaxOpenPreparedStatements(int maxOpenPreparedStatements) { connectionParameters.set("Max open prepared statements", Integer.toString(maxOpenPreparedStatements)); } - -} \ No newline at end of file + + /** + * @return {@value #TYPE} + */ + String getValidType() { + return TYPE; + } +} diff --git a/src/test/java/it/geosolutions/geoserver/rest/publisher/GeoserverRESTPostgisDatastoreTest.java b/src/test/java/it/geosolutions/geoserver/rest/publisher/GeoserverRESTPostgisDatastoreTest.java index 2bceb7b..2d76af5 100644 --- a/src/test/java/it/geosolutions/geoserver/rest/publisher/GeoserverRESTPostgisDatastoreTest.java +++ b/src/test/java/it/geosolutions/geoserver/rest/publisher/GeoserverRESTPostgisDatastoreTest.java @@ -28,7 +28,7 @@ package it.geosolutions.geoserver.rest.publisher; import it.geosolutions.geoserver.rest.GeoserverRESTTest; import it.geosolutions.geoserver.rest.decoder.RESTDataStore; -import it.geosolutions.geoserver.rest.encoder.datastore.GSPostGISDatastoreEncoder; +import it.geosolutions.geoserver.rest.encoder.GSPostGISDatastoreEncoder; import org.slf4j.Logger; import org.slf4j.LoggerFactory;