add some javadoc and checks for arguments and apply geotools code refactoring to GeoServerRESTStructuredGridCoverageReaderManager

This commit is contained in:
carlo cancellieri 2013-05-10 16:55:13 +02:00
parent a81cf80f3f
commit 9e17fda833

View File

@ -38,9 +38,8 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Manage GeoTools StructuredGridCoverageReader. It allows to create a store from a file or harvest
* the coverages contained in a file, to delete granules from an existing coverage and eventually
* to get information about the granules inside a StructuredGridCoverageReader.
* Manage GeoTools StructuredGridCoverageReader. It allows to create a store from a file or harvest the coverages contained in a file, to delete
* granules from an existing coverage and eventually to get information about the granules inside a StructuredGridCoverageReader.
*
* @author Simone Giannecchini, GeoSolutions
*/
@ -49,7 +48,8 @@ public class GeoServerRESTStructuredGridCoverageReaderManager extends GeoServerR
/**
* Default logger
*/
private final static Logger LOGGER = LoggerFactory.getLogger(GeoServerRESTStructuredGridCoverageReaderManager.class);
private final static Logger LOGGER = LoggerFactory
.getLogger(GeoServerRESTStructuredGridCoverageReaderManager.class);
/**
* Default constructor.
@ -59,7 +59,8 @@ public class GeoServerRESTStructuredGridCoverageReaderManager extends GeoServerR
* @param password GeoServer REST API password for the former username
* @throws IllegalArgumentException
*/
public GeoServerRESTStructuredGridCoverageReaderManager(URL restURL, String username, String password) throws IllegalArgumentException, MalformedURLException{
public GeoServerRESTStructuredGridCoverageReaderManager(URL restURL, String username,
String password) throws IllegalArgumentException, MalformedURLException {
super(restURL, username, password);
}
@ -72,19 +73,22 @@ public class GeoServerRESTStructuredGridCoverageReaderManager extends GeoServerR
* @param the absolut path to the file to upload
*
* @return <code>true</code> if the call succeeds or <code>false</code> otherwise.
* @since geoserver-2.4.0, geoserver-mng-1.6.0
*/
public boolean createOrHarvestExternal(String workspace, String coverageStore, String format, String path) {
public boolean createOrHarvestExternal(String workspace, String coverageStore, String format,
String path) {
// checks
checkString(workspace);
checkString(coverageStore);
checkString(format);
checkString(path);
// create URL
String sUrl = HTTPUtils.append(restURL, "/rest/workspaces/", workspace, "/coveragestores/",coverageStore,"/",UploadMethod.EXTERNAL.toString(),".", format).toString();
String sUrl = HTTPUtils.append(restURL, "/rest/workspaces/", workspace, "/coveragestores/",
coverageStore, "/", UploadMethod.EXTERNAL.toString(), ".", format).toString();
// POST request
String result = HTTPUtils.post(sUrl, "file:/"+path, "text/plain", gsuser, gspass);
String result = HTTPUtils.post(sUrl, "file:/" + path, "text/plain", gsuser, gspass);
return result != null;
}
@ -97,13 +101,13 @@ public class GeoServerRESTStructuredGridCoverageReaderManager extends GeoServerR
* @param string the {@link String} to be checked
*/
private static void checkString(String string) {
if(string==null){
if (string == null) {
throw new NullPointerException("Provided string is is null!");
}
if(string.length()<=0){
if (string.length() <= 0) {
throw new IllegalArgumentException("Provided string is is empty!");
}
}
/**
@ -118,59 +122,65 @@ public class GeoServerRESTStructuredGridCoverageReaderManager extends GeoServerR
*
* @throws MalformedURLException
* @throws UnsupportedEncodingException
*
* @since geoserver-2.4.0, geoserver-mng-1.6.0
*/
public boolean removeGranulesByCQL(final String workspace, String coverageStore,String coverage, String filter) throws UnsupportedEncodingException{
public boolean removeGranulesByCQL(final String workspace, String coverageStore,
String coverage, String filter) throws UnsupportedEncodingException {
// checks
checkString(workspace);
checkString(coverage);
checkString(filter);
checkString(coverageStore);
// does it exist?
RESTStructuredCoverageGranulesList granulesList=null;
RESTStructuredCoverageGranulesList granulesList = null;
try {
granulesList = getGranules(workspace, coverageStore, coverageStore, filter, null, 1);
} catch (MalformedURLException e) {
if(LOGGER.isTraceEnabled()){
if (LOGGER.isTraceEnabled()) {
LOGGER.trace(e.getMessage(), e);
}
} catch (UnsupportedEncodingException e) {
if(LOGGER.isTraceEnabled()){
if (LOGGER.isTraceEnabled()) {
LOGGER.trace(e.getMessage(), e);
}
}
if (granulesList == null||granulesList.isEmpty()) {
if(LOGGER.isTraceEnabled()){
LOGGER.trace("Granules for filter: "+filter+ " does not exist for coverage "+coverage);
}
if (granulesList == null || granulesList.isEmpty()) {
if (LOGGER.isTraceEnabled()) {
LOGGER.trace("Granules for filter: " + filter + " does not exist for coverage "
+ coverage);
}
return true; // nothing to remove
}
// method
String sUrl = HTTPUtils.append(restURL, "/rest/workspaces/", workspace, "/coveragestores", "/",coverageStore,"/coverages/",coverage,"/index/granules?filter=",URLEncoder.encode(filter, "UTF-8")).toString();
if(!HTTPUtils.delete(sUrl, gsuser, gspass)){
String sUrl = HTTPUtils.append(restURL, "/rest/workspaces/", workspace, "/coveragestores",
"/", coverageStore, "/coverages/", coverage, "/index/granules?filter=",
URLEncoder.encode(filter, "UTF-8")).toString();
if (!HTTPUtils.delete(sUrl, gsuser, gspass)) {
return false;
}
}
// does it exist?
granulesList=null;
granulesList = null;
try {
granulesList = getGranules(workspace, coverageStore, coverageStore, filter, null, 1);
} catch (MalformedURLException e) {
if(LOGGER.isTraceEnabled()){
if (LOGGER.isTraceEnabled()) {
LOGGER.trace(e.getMessage(), e);
}
} catch (UnsupportedEncodingException e) {
if(LOGGER.isTraceEnabled()){
if (LOGGER.isTraceEnabled()) {
LOGGER.trace(e.getMessage(), e);
}
}
if (granulesList == null||granulesList.isEmpty()) {
if (granulesList == null || granulesList.isEmpty()) {
return true; // nothing to remove
}
return false;
}
/**
* Remove a granule from a structured coverage by id.
*
@ -183,8 +193,11 @@ public class GeoServerRESTStructuredGridCoverageReaderManager extends GeoServerR
*
* @throws MalformedURLException
* @throws UnsupportedEncodingException
*
* @since geoserver-2.4.0, geoserver-mng-1.6.0
*/
public boolean removeGranuleById(final String workspace, String coverageStore, String coverage, String granuleId) {
public boolean removeGranuleById(final String workspace, String coverageStore, String coverage,
String granuleId) {
// checks
checkString(workspace);
checkString(coverage);
@ -192,22 +205,23 @@ public class GeoServerRESTStructuredGridCoverageReaderManager extends GeoServerR
checkString(coverageStore);
// does it exist?
RESTStructuredCoverageGranulesList granule=null;
RESTStructuredCoverageGranulesList granule = null;
try {
granule = getGranuleById(workspace, coverageStore, coverage, granuleId);
} catch (MalformedURLException e) {
if(LOGGER.isTraceEnabled()){
if (LOGGER.isTraceEnabled()) {
LOGGER.trace(e.getMessage(), e);
}
} catch (UnsupportedEncodingException e) {
if(LOGGER.isTraceEnabled()){
if (LOGGER.isTraceEnabled()) {
LOGGER.trace(e.getMessage(), e);
}
}
if (granule == null) {
if(LOGGER.isTraceEnabled()){
LOGGER.trace("Granule for id: "+granuleId+ " does not exist for coverage "+coverage);
}
if (LOGGER.isTraceEnabled()) {
LOGGER.trace("Granule for id: " + granuleId + " does not exist for coverage "
+ coverage);
}
return true; // nothing to remove
}
@ -215,58 +229,62 @@ public class GeoServerRESTStructuredGridCoverageReaderManager extends GeoServerR
String sUrl = HTTPUtils.append(restURL, "/rest/workspaces/", workspace, "/coveragestores",
"/", coverageStore, "/coverages/", coverage, "/index/granules/", granuleId)
.toString();
if(!HTTPUtils.delete(sUrl, gsuser, gspass)){
if (!HTTPUtils.delete(sUrl, gsuser, gspass)) {
return false;
}
// has it been canceled?
// does it exist?
granule=null;
granule = null;
try {
granule = getGranuleById(workspace, coverageStore, coverage, granuleId);
} catch (MalformedURLException e) {
if(LOGGER.isTraceEnabled()){
if (LOGGER.isTraceEnabled()) {
LOGGER.trace(e.getMessage(), e);
}
} catch (UnsupportedEncodingException e) {
if(LOGGER.isTraceEnabled()){
if (LOGGER.isTraceEnabled()) {
LOGGER.trace(e.getMessage(), e);
}
}
if (granule == null) {
return true;
}
}
return false;
}
/**
* Get information about the schema of the index for a structured coverage.
*
* @param workspace the GeoServer workspace
* @param coverageStore the GeoServer coverageStore
* @param format the format of the file to upload
*
* @return <code>null</code> in case the call does not succeed, or an instance of {@link RESTStructuredCoverageGranulesList}.
*
* @throws MalformedURLException
* @throws UnsupportedEncodingException
*/
public RESTStructuredCoverageIndexSchema getGranuleIndexSchema(final String workspace, String coverageStore, String coverage) throws MalformedURLException {
/**
* Get information about the schema of the index for a structured coverage.
*
* @param workspace the GeoServer workspace
* @param coverageStore the GeoServer coverageStore
* @param format the format of the file to upload
*
* @return <code>null</code> in case the call does not succeed, or an instance of {@link RESTStructuredCoverageGranulesList}.
*
* @throws MalformedURLException
* @throws UnsupportedEncodingException
*
* @since geoserver-2.4.0, geoserver-mng-1.6.0
*/
public RESTStructuredCoverageIndexSchema getGranuleIndexSchema(final String workspace,
String coverageStore, String coverage) throws MalformedURLException {
// checks
checkString(workspace);
checkString(coverage);
checkString(coverageStore);
// create URL and then call it
String sUrl = HTTPUtils.append(restURL, "/rest/workspaces/", workspace, "/coveragestores/", coverageStore, "/coverages/", coverage, "/index.xml").toString();
String sUrl = HTTPUtils.append(restURL, "/rest/workspaces/", workspace, "/coveragestores/",
coverageStore, "/coverages/", coverage, "/index.xml").toString();
String result = HTTPUtils.get(sUrl, gsuser, gspass);
if (result != null) {
return RESTStructuredCoverageIndexSchema.build(result);
}
return null;
}
/**
* Get information about the granules for a coverage with optional filter and paging.
*
@ -281,8 +299,11 @@ public class GeoServerRESTStructuredGridCoverageReaderManager extends GeoServerR
*
* @throws MalformedURLException
* @throws UnsupportedEncodingException
*
* @since geoserver-2.4.0, geoserver-mng-1.6.0
*/
public RESTStructuredCoverageGranulesList getGranules(final String workspace, String coverageStore, String coverage, String filter, Integer offset, Integer limit)
public RESTStructuredCoverageGranulesList getGranules(final String workspace,
String coverageStore, String coverage, String filter, Integer offset, Integer limit)
throws MalformedURLException, UnsupportedEncodingException {
// checks
checkString(workspace);
@ -291,17 +312,26 @@ public class GeoServerRESTStructuredGridCoverageReaderManager extends GeoServerR
// method
boolean append = false;
String sUrl = HTTPUtils.append(restURL, "/rest/workspaces/", workspace, "/coveragestores/", coverageStore, "/coverages/", coverage, "/index/granules.xml").toString();
String sUrl = HTTPUtils.append(restURL, "/rest/workspaces/", workspace, "/coveragestores/",
coverageStore, "/coverages/", coverage, "/index/granules.xml").toString();
if (filter != null && !filter.isEmpty()) {
append = true;
sUrl = HTTPUtils.append(sUrl, "?filter=", URLEncoder.encode(filter, "UTF-8")).toString();
sUrl = HTTPUtils.append(sUrl, "?filter=", URLEncoder.encode(filter, "UTF-8"))
.toString();
}
if (offset != null) {
sUrl = HTTPUtils.append(sUrl, append ? "&offset=" : "?offset=", offset.toString()).toString();
if (offset < 0)
offset = 0;
sUrl = HTTPUtils.append(sUrl, append ? "&offset=" : "?offset=", offset.toString())
.toString();
append = true;
}
if (limit != null) {
sUrl = HTTPUtils.append(sUrl, append ? "&limit=" : "?limit=", limit.toString()).toString();
if (limit < 1) {
limit = 1;
}
sUrl = HTTPUtils.append(sUrl, append ? "&limit=" : "?limit=", limit.toString())
.toString();
append = true;
}
String result = HTTPUtils.get(sUrl, gsuser, gspass);
@ -310,7 +340,7 @@ public class GeoServerRESTStructuredGridCoverageReaderManager extends GeoServerR
}
return null;
}
/**
* Get information about a granule for a structured coverage.
*
@ -324,6 +354,8 @@ public class GeoServerRESTStructuredGridCoverageReaderManager extends GeoServerR
*
* @throws MalformedURLException
* @throws UnsupportedEncodingException
*
* @since geoserver-2.4.0, geoserver-mng-1.6.0
*/
public RESTStructuredCoverageGranulesList getGranuleById(final String workspace,
String coverageStore, String coverage, String id) throws MalformedURLException,
@ -333,14 +365,15 @@ public class GeoServerRESTStructuredGridCoverageReaderManager extends GeoServerR
checkString(coverage);
checkString(coverageStore);
checkString(id);
try{
try {
Integer.parseInt(id);
}catch (NumberFormatException e) {
} catch (NumberFormatException e) {
throw new IllegalArgumentException(e);
}
// method
String sUrl = HTTPUtils.append(restURL, "/rest/workspaces/", workspace, "/coveragestores/", coverageStore, "/coverages/", coverage, "/index/granules/", id, ".xml").toString();
String sUrl = HTTPUtils.append(restURL, "/rest/workspaces/", workspace, "/coveragestores/",
coverageStore, "/coverages/", coverage, "/index/granules/", id, ".xml").toString();
String result = HTTPUtils.get(sUrl, gsuser, gspass);
if (result != null) {
return RESTStructuredCoverageGranulesList.build(result);