Adding REST test to delete and re-harvest tiff mosaic granules
This commit is contained in:
parent
715fb71508
commit
c3a437de20
@ -26,6 +26,7 @@ package it.geosolutions.geoserver.rest;
|
|||||||
|
|
||||||
import it.geosolutions.geoserver.rest.manager.GeoServerRESTAbstractManager;
|
import it.geosolutions.geoserver.rest.manager.GeoServerRESTAbstractManager;
|
||||||
import it.geosolutions.geoserver.rest.manager.GeoServerRESTStoreManager;
|
import it.geosolutions.geoserver.rest.manager.GeoServerRESTStoreManager;
|
||||||
|
import it.geosolutions.geoserver.rest.manager.GeoServerRESTStructuredGridCoverageReaderManager;
|
||||||
|
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
@ -51,6 +52,8 @@ public class GeoServerRESTManager extends GeoServerRESTAbstractManager {
|
|||||||
|
|
||||||
private final GeoServerRESTStoreManager store;
|
private final GeoServerRESTStoreManager store;
|
||||||
|
|
||||||
|
private final GeoServerRESTStructuredGridCoverageReaderManager structuredGridCoverageReader;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default constructor.
|
* Default constructor.
|
||||||
*
|
*
|
||||||
@ -69,6 +72,7 @@ public class GeoServerRESTManager extends GeoServerRESTAbstractManager {
|
|||||||
// Internal publisher and reader, provide simple access methods.
|
// Internal publisher and reader, provide simple access methods.
|
||||||
publisher = new GeoServerRESTPublisher(restURL.toString(), username, password);
|
publisher = new GeoServerRESTPublisher(restURL.toString(), username, password);
|
||||||
reader = new GeoServerRESTReader(restURL, username, password);
|
reader = new GeoServerRESTReader(restURL, username, password);
|
||||||
|
structuredGridCoverageReader = new GeoServerRESTStructuredGridCoverageReaderManager(restURL, username, password);
|
||||||
store = new GeoServerRESTStoreManager(restURL, gsuser, gspass);
|
store = new GeoServerRESTStoreManager(restURL, gsuser, gspass);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,4 +88,8 @@ public class GeoServerRESTManager extends GeoServerRESTAbstractManager {
|
|||||||
return store;
|
return store;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public GeoServerRESTStructuredGridCoverageReaderManager getStructuredGridCoverageReader() {
|
||||||
|
return structuredGridCoverageReader;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -38,7 +38,7 @@ import it.geosolutions.geoserver.rest.encoder.GSResourceEncoder.ProjectionPolicy
|
|||||||
import it.geosolutions.geoserver.rest.encoder.GSWorkspaceEncoder;
|
import it.geosolutions.geoserver.rest.encoder.GSWorkspaceEncoder;
|
||||||
import it.geosolutions.geoserver.rest.encoder.coverage.GSCoverageEncoder;
|
import it.geosolutions.geoserver.rest.encoder.coverage.GSCoverageEncoder;
|
||||||
import it.geosolutions.geoserver.rest.encoder.feature.GSFeatureTypeEncoder;
|
import it.geosolutions.geoserver.rest.encoder.feature.GSFeatureTypeEncoder;
|
||||||
import it.geosolutions.geoserver.rest.manager.GeoServerRESTStructuredCoverageGridReaderManager;
|
import it.geosolutions.geoserver.rest.manager.GeoServerRESTStructuredGridCoverageReaderManager;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
@ -2665,8 +2665,8 @@ public class GeoServerRESTPublisher {
|
|||||||
*/
|
*/
|
||||||
public boolean createOrHarvestExternal(String workspace, String coverageStore, String format, String path) {
|
public boolean createOrHarvestExternal(String workspace, String coverageStore, String format, String path) {
|
||||||
try {
|
try {
|
||||||
GeoServerRESTStructuredCoverageGridReaderManager manager =
|
GeoServerRESTStructuredGridCoverageReaderManager manager =
|
||||||
new GeoServerRESTStructuredCoverageGridReaderManager(new URL(restURL), gsuser, gspass);
|
new GeoServerRESTStructuredGridCoverageReaderManager(new URL(restURL), gsuser, gspass);
|
||||||
return manager.createOrHarvestExternal(workspace, coverageStore, format, path);
|
return manager.createOrHarvestExternal(workspace, coverageStore, format, path);
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
if(LOGGER.isInfoEnabled()){
|
if(LOGGER.isInfoEnabled()){
|
||||||
@ -2695,8 +2695,8 @@ public class GeoServerRESTPublisher {
|
|||||||
*/
|
*/
|
||||||
public boolean removeGranuleById(final String workspace, String coverageStore, String coverage, String granuleId) {
|
public boolean removeGranuleById(final String workspace, String coverageStore, String coverage, String granuleId) {
|
||||||
try {
|
try {
|
||||||
GeoServerRESTStructuredCoverageGridReaderManager manager =
|
GeoServerRESTStructuredGridCoverageReaderManager manager =
|
||||||
new GeoServerRESTStructuredCoverageGridReaderManager(new URL(restURL), gsuser, gspass);
|
new GeoServerRESTStructuredGridCoverageReaderManager(new URL(restURL), gsuser, gspass);
|
||||||
return manager.removeGranuleById(workspace, coverageStore, coverage, granuleId);
|
return manager.removeGranuleById(workspace, coverageStore, coverage, granuleId);
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
if(LOGGER.isInfoEnabled()){
|
if(LOGGER.isInfoEnabled()){
|
||||||
@ -2724,8 +2724,8 @@ public class GeoServerRESTPublisher {
|
|||||||
*/
|
*/
|
||||||
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{
|
||||||
try {
|
try {
|
||||||
GeoServerRESTStructuredCoverageGridReaderManager manager =
|
GeoServerRESTStructuredGridCoverageReaderManager manager =
|
||||||
new GeoServerRESTStructuredCoverageGridReaderManager(new URL(restURL), gsuser, gspass);
|
new GeoServerRESTStructuredGridCoverageReaderManager(new URL(restURL), gsuser, gspass);
|
||||||
return manager.removeGranulesByCQL(workspace, coverageStore, coverage, filter);
|
return manager.removeGranulesByCQL(workspace, coverageStore, coverage, filter);
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
if(LOGGER.isInfoEnabled()){
|
if(LOGGER.isInfoEnabled()){
|
||||||
|
|||||||
@ -43,7 +43,7 @@ import it.geosolutions.geoserver.rest.decoder.RESTStructuredCoverageGranulesList
|
|||||||
import it.geosolutions.geoserver.rest.decoder.RESTStructuredCoverageIndexSchema;
|
import it.geosolutions.geoserver.rest.decoder.RESTStructuredCoverageIndexSchema;
|
||||||
import it.geosolutions.geoserver.rest.decoder.RESTStyleList;
|
import it.geosolutions.geoserver.rest.decoder.RESTStyleList;
|
||||||
import it.geosolutions.geoserver.rest.decoder.RESTWorkspaceList;
|
import it.geosolutions.geoserver.rest.decoder.RESTWorkspaceList;
|
||||||
import it.geosolutions.geoserver.rest.manager.GeoServerRESTStructuredCoverageGridReaderManager;
|
import it.geosolutions.geoserver.rest.manager.GeoServerRESTStructuredGridCoverageReaderManager;
|
||||||
|
|
||||||
import java.io.UnsupportedEncodingException;
|
import java.io.UnsupportedEncodingException;
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
@ -52,7 +52,6 @@ import java.util.ArrayList;
|
|||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@ -597,8 +596,8 @@ public class GeoServerRESTReader {
|
|||||||
String coverageStore, String coverage, String id) throws MalformedURLException,
|
String coverageStore, String coverage, String id) throws MalformedURLException,
|
||||||
UnsupportedEncodingException {
|
UnsupportedEncodingException {
|
||||||
try {
|
try {
|
||||||
GeoServerRESTStructuredCoverageGridReaderManager manager =
|
GeoServerRESTStructuredGridCoverageReaderManager manager =
|
||||||
new GeoServerRESTStructuredCoverageGridReaderManager(new URL(baseurl), username, password);
|
new GeoServerRESTStructuredGridCoverageReaderManager(new URL(baseurl), username, password);
|
||||||
return manager.getGranuleById(workspace, coverageStore, coverage, id);
|
return manager.getGranuleById(workspace, coverageStore, coverage, id);
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
if(LOGGER.isInfoEnabled()){
|
if(LOGGER.isInfoEnabled()){
|
||||||
@ -624,11 +623,10 @@ public class GeoServerRESTReader {
|
|||||||
* @throws MalformedURLException
|
* @throws MalformedURLException
|
||||||
* @throws UnsupportedEncodingException
|
* @throws UnsupportedEncodingException
|
||||||
*/
|
*/
|
||||||
@Test
|
|
||||||
public RESTStructuredCoverageIndexSchema getGranuleIndexSchema(final String workspace, String coverageStore, String coverage) throws MalformedURLException {
|
public RESTStructuredCoverageIndexSchema getGranuleIndexSchema(final String workspace, String coverageStore, String coverage) throws MalformedURLException {
|
||||||
try {
|
try {
|
||||||
GeoServerRESTStructuredCoverageGridReaderManager manager =
|
GeoServerRESTStructuredGridCoverageReaderManager manager =
|
||||||
new GeoServerRESTStructuredCoverageGridReaderManager(new URL(baseurl), username, password);
|
new GeoServerRESTStructuredGridCoverageReaderManager(new URL(baseurl), username, password);
|
||||||
return manager.getGranuleIndexSchema(workspace, coverageStore, coverage);
|
return manager.getGranuleIndexSchema(workspace, coverageStore, coverage);
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
if(LOGGER.isInfoEnabled()){
|
if(LOGGER.isInfoEnabled()){
|
||||||
@ -657,12 +655,11 @@ public class GeoServerRESTReader {
|
|||||||
* @throws MalformedURLException
|
* @throws MalformedURLException
|
||||||
* @throws UnsupportedEncodingException
|
* @throws UnsupportedEncodingException
|
||||||
*/
|
*/
|
||||||
@Test
|
public RESTStructuredCoverageGranulesList getGranules(final String workspace, String coverageStore, String coverage, String filter, String offset, String limit)
|
||||||
public RESTStructuredCoverageGranulesList getGranules(final String workspace, String coverageStore, String coverage, String filter, String offset, String limit)
|
|
||||||
throws MalformedURLException, UnsupportedEncodingException {
|
throws MalformedURLException, UnsupportedEncodingException {
|
||||||
try {
|
try {
|
||||||
GeoServerRESTStructuredCoverageGridReaderManager manager =
|
GeoServerRESTStructuredGridCoverageReaderManager manager =
|
||||||
new GeoServerRESTStructuredCoverageGridReaderManager(new URL(baseurl), username, password);
|
new GeoServerRESTStructuredGridCoverageReaderManager(new URL(baseurl), username, password);
|
||||||
return manager.getGranules(workspace, coverageStore, coverage, filter, offset, limit);
|
return manager.getGranules(workspace, coverageStore, coverage, filter, offset, limit);
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
if(LOGGER.isInfoEnabled()){
|
if(LOGGER.isInfoEnabled()){
|
||||||
|
|||||||
@ -76,15 +76,23 @@ public class RESTCoverageStore {
|
|||||||
return new RESTCoverageStore(pb);
|
return new RESTCoverageStore(pb);
|
||||||
else
|
else
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return cs.getChildText("name");
|
return cs.getChildText("name");
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getWorkspaceName() {
|
public String getWorkspaceName() {
|
||||||
return cs.getChild("workspace").getChildText("name");
|
return cs.getChild("workspace").getChildText("name");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getURL() {
|
||||||
|
return cs.getChildText("url");
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getType() {
|
||||||
|
return cs.getChildText("type");
|
||||||
|
}
|
||||||
|
|
||||||
public String toString() {
|
public String toString() {
|
||||||
StringBuilder sb = new StringBuilder(getClass().getSimpleName())
|
StringBuilder sb = new StringBuilder(getClass().getSimpleName())
|
||||||
|
|||||||
@ -34,23 +34,22 @@ import java.net.MalformedURLException;
|
|||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.net.URLEncoder;
|
import java.net.URLEncoder;
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Manage GeoTools StructuredCoverageGridReader. It allows to create a store from a file or harvest
|
* 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
|
* the coverages contained in a file, to delete granules from an existing coverage and eventually
|
||||||
* to get information about the granules insi a StructuredCoverageGridReader.
|
* to get information about the granules inside a StructuredGridCoverageReader.
|
||||||
*
|
*
|
||||||
* @author Simone Giannecchini, GeoSolutions
|
* @author Simone Giannecchini, GeoSolutions
|
||||||
*/
|
*/
|
||||||
public class GeoServerRESTStructuredCoverageGridReaderManager extends GeoServerRESTAbstractManager {
|
public class GeoServerRESTStructuredGridCoverageReaderManager extends GeoServerRESTAbstractManager {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default logger
|
* Default logger
|
||||||
*/
|
*/
|
||||||
private final static Logger LOGGER = LoggerFactory.getLogger(GeoServerRESTStructuredCoverageGridReaderManager.class);
|
private final static Logger LOGGER = LoggerFactory.getLogger(GeoServerRESTStructuredGridCoverageReaderManager.class);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default constructor.
|
* Default constructor.
|
||||||
@ -60,7 +59,7 @@ public class GeoServerRESTStructuredCoverageGridReaderManager extends GeoServerR
|
|||||||
* @param password GeoServer REST API password for the former username
|
* @param password GeoServer REST API password for the former username
|
||||||
* @throws IllegalArgumentException
|
* @throws IllegalArgumentException
|
||||||
*/
|
*/
|
||||||
public GeoServerRESTStructuredCoverageGridReaderManager(URL restURL, String username, String password) throws IllegalArgumentException, MalformedURLException{
|
public GeoServerRESTStructuredGridCoverageReaderManager(URL restURL, String username, String password) throws IllegalArgumentException, MalformedURLException{
|
||||||
super(restURL, username, password);
|
super(restURL, username, password);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -253,7 +252,6 @@ public class GeoServerRESTStructuredCoverageGridReaderManager extends GeoServerR
|
|||||||
* @throws MalformedURLException
|
* @throws MalformedURLException
|
||||||
* @throws UnsupportedEncodingException
|
* @throws UnsupportedEncodingException
|
||||||
*/
|
*/
|
||||||
@Test
|
|
||||||
public RESTStructuredCoverageIndexSchema getGranuleIndexSchema(final String workspace, String coverageStore, String coverage) throws MalformedURLException {
|
public RESTStructuredCoverageIndexSchema getGranuleIndexSchema(final String workspace, String coverageStore, String coverage) throws MalformedURLException {
|
||||||
// checks
|
// checks
|
||||||
checkString(workspace);
|
checkString(workspace);
|
||||||
@ -284,7 +282,6 @@ public class GeoServerRESTStructuredCoverageGridReaderManager extends GeoServerR
|
|||||||
* @throws MalformedURLException
|
* @throws MalformedURLException
|
||||||
* @throws UnsupportedEncodingException
|
* @throws UnsupportedEncodingException
|
||||||
*/
|
*/
|
||||||
@Test
|
|
||||||
public RESTStructuredCoverageGranulesList getGranules(final String workspace, String coverageStore, String coverage, String filter, String offset, String limit)
|
public RESTStructuredCoverageGranulesList getGranules(final String workspace, String coverageStore, String coverage, String filter, String offset, String limit)
|
||||||
throws MalformedURLException, UnsupportedEncodingException {
|
throws MalformedURLException, UnsupportedEncodingException {
|
||||||
// checks
|
// checks
|
||||||
@ -328,7 +325,6 @@ public class GeoServerRESTStructuredCoverageGridReaderManager extends GeoServerR
|
|||||||
* @throws MalformedURLException
|
* @throws MalformedURLException
|
||||||
* @throws UnsupportedEncodingException
|
* @throws UnsupportedEncodingException
|
||||||
*/
|
*/
|
||||||
@Test
|
|
||||||
public RESTStructuredCoverageGranulesList getGranuleById(final String workspace,
|
public RESTStructuredCoverageGranulesList getGranuleById(final String workspace,
|
||||||
String coverageStore, String coverage, String id) throws MalformedURLException,
|
String coverageStore, String coverage, String id) throws MalformedURLException,
|
||||||
UnsupportedEncodingException {
|
UnsupportedEncodingException {
|
||||||
@ -0,0 +1,265 @@
|
|||||||
|
/*
|
||||||
|
* GeoTools - The Open Source Java GIS Toolkit
|
||||||
|
* http://geotools.org
|
||||||
|
*
|
||||||
|
* (C) 2002-2011, Open Source Geospatial Foundation (OSGeo)
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation;
|
||||||
|
* version 2.1 of the License.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*/
|
||||||
|
package it.geosolutions.geoserver.rest.manager;
|
||||||
|
|
||||||
|
import it.geosolutions.geoserver.rest.GeoServerRESTReader;
|
||||||
|
import it.geosolutions.geoserver.rest.datastore.StoreIntegrationTest;
|
||||||
|
import it.geosolutions.geoserver.rest.decoder.RESTCoverageStore;
|
||||||
|
import it.geosolutions.geoserver.rest.decoder.RESTStructuredCoverageGranulesList;
|
||||||
|
import it.geosolutions.geoserver.rest.decoder.RESTStructuredCoverageGranulesList.RESTStructuredCoverageGranule;
|
||||||
|
import it.geosolutions.geoserver.rest.decoder.RESTStructuredCoverageIndexSchema;
|
||||||
|
import it.geosolutions.geoserver.rest.decoder.RESTStructuredCoverageIndexSchema.RESTStructuredCoverageIndexAttribute;
|
||||||
|
import it.geosolutions.geoserver.rest.encoder.GSAbstractStoreEncoder;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.UnsupportedEncodingException;
|
||||||
|
import java.net.MalformedURLException;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.net.URLDecoder;
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* In order to test that class, make sure to configure a geoserver with a "mosaic" store.
|
||||||
|
*
|
||||||
|
* 1) take the mosaic.zip archive contained on src/test/resources/testdata.granules
|
||||||
|
* 2) extract it on disk
|
||||||
|
* 3) configure an ImageMosaic store on geoserver (name the store as "mosaic"), use the "it.geosolutions" workspace
|
||||||
|
* 4) configure a layer on that store (name the coverage as "mosaic" again).
|
||||||
|
* 5) on dimensions configuration tab, make sure to enable custom depth and date dimensions.
|
||||||
|
* 6) publish it.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @author Simone Giannecchini, simone.giannecchini@geo-solutions.it
|
||||||
|
* @author Daniele Romagnoli, GeoSolutions SAS
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class GeoServerRESTImageMosaicManagerTest extends StoreIntegrationTest {
|
||||||
|
|
||||||
|
private final static Logger LOGGER = LoggerFactory.getLogger(GeoServerRESTImageMosaicManagerTest.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param ignore
|
||||||
|
* @throws IllegalArgumentException
|
||||||
|
* @throws MalformedURLException
|
||||||
|
*/
|
||||||
|
public GeoServerRESTImageMosaicManagerTest()
|
||||||
|
throws IllegalArgumentException, MalformedURLException {
|
||||||
|
super(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public GSAbstractStoreEncoder getStoreEncoderTest() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void createAndDelete() throws IllegalArgumentException, MalformedURLException, UnsupportedEncodingException{
|
||||||
|
GeoServerRESTStructuredGridCoverageReaderManager manager =
|
||||||
|
new GeoServerRESTStructuredGridCoverageReaderManager(new URL(RESTURL), RESTUSER, RESTPW);
|
||||||
|
GeoServerRESTReader reader = new GeoServerRESTReader(new URL(RESTURL), RESTUSER, RESTPW);
|
||||||
|
|
||||||
|
// check index format
|
||||||
|
RESTStructuredCoverageIndexSchema indexFormat = manager.getGranuleIndexSchema("it.geosolutions", "mosaic","mosaic");
|
||||||
|
if (indexFormat == null) {
|
||||||
|
if (LOGGER.isWarnEnabled()) {
|
||||||
|
LOGGER.warn("sample coverage hasn't been found. Make sure to configure the layer before running this test");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
assertNotNull(indexFormat);
|
||||||
|
assertFalse(indexFormat.isEmpty());
|
||||||
|
assertEquals(5, indexFormat.size());
|
||||||
|
Iterator<RESTStructuredCoverageIndexAttribute> iterator = indexFormat.iterator();
|
||||||
|
while (iterator.hasNext()) {
|
||||||
|
final RESTStructuredCoverageIndexAttribute element = iterator.next();
|
||||||
|
final String elementName = element.getName();
|
||||||
|
if (elementName.equals("location")) {
|
||||||
|
assertEquals("0", element.getMinOccurs());
|
||||||
|
assertEquals("1", element.getMaxOccurs());
|
||||||
|
assertEquals("true", element.getNillable());
|
||||||
|
assertEquals("java.lang.String", element.getBinding());
|
||||||
|
} else if (elementName.equals("time")) {
|
||||||
|
assertEquals("0", element.getMinOccurs());
|
||||||
|
assertEquals("1", element.getMaxOccurs());
|
||||||
|
assertEquals("true", element.getNillable());
|
||||||
|
assertEquals("java.sql.Timestamp", element.getBinding());
|
||||||
|
} else if (elementName.equals("date")) {
|
||||||
|
assertEquals("0", element.getMinOccurs());
|
||||||
|
assertEquals("1", element.getMaxOccurs());
|
||||||
|
assertEquals("true", element.getNillable());
|
||||||
|
assertEquals("java.lang.String", element.getBinding());
|
||||||
|
} else if (elementName.equals("depth")) {
|
||||||
|
assertEquals("0", element.getMinOccurs());
|
||||||
|
assertEquals("1", element.getMaxOccurs());
|
||||||
|
assertEquals("true", element.getNillable());
|
||||||
|
assertEquals("java.lang.Integer", element.getBinding());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
RESTStructuredCoverageGranulesList granulesList = null;
|
||||||
|
RESTStructuredCoverageGranule granule = null;
|
||||||
|
// get some granules by id
|
||||||
|
// manager.getGranuleById("it.geosolutions", "mosaic","mosaic","2");
|
||||||
|
// assertNotNull(granulesList);
|
||||||
|
// assertSame(1, granulesList.size());
|
||||||
|
// assertFalse(granulesList.isEmpty());
|
||||||
|
// RESTStructuredCoverageGranule granule = granulesList.get(0);
|
||||||
|
// assertNotNull(granule);
|
||||||
|
// assertEquals(granule.getAttributeByIndex(4), "1250.0");
|
||||||
|
// assertEquals(granule.getAttributeByName("elevation"), "1250.0");
|
||||||
|
|
||||||
|
|
||||||
|
// get with paging
|
||||||
|
granulesList = manager.getGranules("it.geosolutions", "mosaic", "mosaic" , null, "0", "1");
|
||||||
|
assertNotNull(granulesList);
|
||||||
|
assertEquals(1, granulesList.size());
|
||||||
|
assertFalse(granulesList.isEmpty());
|
||||||
|
granule = granulesList.get(0);
|
||||||
|
assertNotNull(granule);
|
||||||
|
|
||||||
|
granulesList = manager.getGranules("it.geosolutions", "mosaic", "mosaic", null, null, "2");
|
||||||
|
assertNotNull(granulesList);
|
||||||
|
assertEquals(2, granulesList.size());
|
||||||
|
assertFalse(granulesList.isEmpty());
|
||||||
|
granule = granulesList.get(0);
|
||||||
|
assertNotNull(granule);
|
||||||
|
|
||||||
|
granulesList = manager.getGranules("it.geosolutions", "mosaic", "mosaic", null, null, null);
|
||||||
|
assertNotNull(granulesList);
|
||||||
|
assertEquals(4, granulesList.size());
|
||||||
|
assertFalse(granulesList.isEmpty());
|
||||||
|
granule = granulesList.get(0);
|
||||||
|
assertNotNull(granule);
|
||||||
|
|
||||||
|
granulesList = manager.getGranules("it.geosolutions", "mosaic", "mosaic", "depth = 100", null, null);
|
||||||
|
assertNotNull(granulesList);
|
||||||
|
assertEquals(2, granulesList.size());
|
||||||
|
assertFalse(granulesList.isEmpty());
|
||||||
|
granule = granulesList.get(0);
|
||||||
|
assertNotNull(granule);
|
||||||
|
|
||||||
|
granulesList = manager.getGranules("it.geosolutions", "mosaic", "mosaic", "depth = 100 AND date='20081101T0000000'", null, null);
|
||||||
|
assertNotNull(granulesList);
|
||||||
|
assertEquals(1, granulesList.size());
|
||||||
|
assertFalse(granulesList.isEmpty());
|
||||||
|
granule = granulesList.get(0);
|
||||||
|
assertNotNull(granule);
|
||||||
|
|
||||||
|
// remove by filter
|
||||||
|
final String fileLocation = "NCOM_wattemp_100_20081101T0000000_12.tiff";
|
||||||
|
boolean result = manager.removeGranulesByCQL("it.geosolutions", "mosaic", "mosaic", "location = '" + fileLocation + "'");
|
||||||
|
Assert.assertTrue(result);
|
||||||
|
|
||||||
|
granulesList = manager.getGranules("it.geosolutions", "mosaic", "mosaic", null, null, null);
|
||||||
|
assertNotNull(granulesList);
|
||||||
|
assertEquals(3, granulesList.size());
|
||||||
|
assertFalse(granulesList.isEmpty());
|
||||||
|
granule = granulesList.get(0);
|
||||||
|
assertNotNull(granule);
|
||||||
|
|
||||||
|
// Readding that granule
|
||||||
|
RESTCoverageStore store = reader.getCoverageStore("it.geosolutions", "mosaic");
|
||||||
|
final String urlString = store.getURL();
|
||||||
|
final URL url = new URL(urlString);
|
||||||
|
final File file = urlToFile(url);
|
||||||
|
final String filePath = file.getAbsolutePath();
|
||||||
|
|
||||||
|
int i=0;
|
||||||
|
i++;
|
||||||
|
|
||||||
|
|
||||||
|
// use reflection to get the store URL since coveragestore only returns name and workspace
|
||||||
|
result = manager.createOrHarvestExternal("it.geosolutions", "mosaic", "imagemosaic", filePath + File.separatorChar + fileLocation );
|
||||||
|
Assert.assertTrue(result);
|
||||||
|
|
||||||
|
granulesList = manager.getGranules("it.geosolutions", "mosaic", "mosaic", null, null, null);
|
||||||
|
assertNotNull(granulesList);
|
||||||
|
assertEquals(4, granulesList.size());
|
||||||
|
assertFalse(granulesList.isEmpty());
|
||||||
|
granule = granulesList.get(0);
|
||||||
|
assertNotNull(granule);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method has been copied from org.geotools.data.DataUtilities
|
||||||
|
*
|
||||||
|
* Takes a URL and converts it to a File. The attempts to deal with Windows UNC format specific
|
||||||
|
* problems, specifically files located on network shares and different drives.
|
||||||
|
*
|
||||||
|
* If the URL.getAuthority() returns null or is empty, then only the url's path property is used
|
||||||
|
* to construct the file. Otherwise, the authority is prefixed before the path.
|
||||||
|
*
|
||||||
|
* It is assumed that url.getProtocol returns "file".
|
||||||
|
*
|
||||||
|
* Authority is the drive or network share the file is located on. Such as "C:", "E:",
|
||||||
|
* "\\fooServer"
|
||||||
|
*
|
||||||
|
* @param url
|
||||||
|
* a URL object that uses protocol "file"
|
||||||
|
* @return a File that corresponds to the URL's location
|
||||||
|
*/
|
||||||
|
private static File urlToFile(URL url) {
|
||||||
|
if (!"file".equals(url.getProtocol())) {
|
||||||
|
return null; // not a File URL
|
||||||
|
}
|
||||||
|
String string = url.toExternalForm();
|
||||||
|
if (string.contains("+")) {
|
||||||
|
// this represents an invalid URL created using either
|
||||||
|
// file.toURL(); or
|
||||||
|
// file.toURI().toURL() on a specific version of Java 5 on Mac
|
||||||
|
string = string.replace("+", "%2B");
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
string = URLDecoder.decode(string, "UTF-8");
|
||||||
|
} catch (UnsupportedEncodingException e) {
|
||||||
|
throw new RuntimeException("Could not decode the URL to UTF-8 format", e);
|
||||||
|
}
|
||||||
|
|
||||||
|
String path3;
|
||||||
|
|
||||||
|
String simplePrefix = "file:/";
|
||||||
|
String standardPrefix = "file://";
|
||||||
|
String os = System.getProperty("os.name");
|
||||||
|
|
||||||
|
if (os.toUpperCase().contains("WINDOWS") && string.startsWith(standardPrefix)) {
|
||||||
|
// win32: host/share reference
|
||||||
|
path3 = string.substring(standardPrefix.length() - 2);
|
||||||
|
} else if (string.startsWith(standardPrefix)) {
|
||||||
|
path3 = string.substring(standardPrefix.length());
|
||||||
|
} else if (string.startsWith(simplePrefix)) {
|
||||||
|
path3 = string.substring(simplePrefix.length() - 1);
|
||||||
|
} else {
|
||||||
|
String auth = url.getAuthority();
|
||||||
|
String path2 = url.getPath().replace("%20", " ");
|
||||||
|
if (auth != null && !auth.equals("")) {
|
||||||
|
path3 = "//" + auth + path2;
|
||||||
|
} else {
|
||||||
|
path3 = path2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return new File(path3);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,136 +0,0 @@
|
|||||||
/*
|
|
||||||
* GeoTools - The Open Source Java GIS Toolkit
|
|
||||||
* http://geotools.org
|
|
||||||
*
|
|
||||||
* (C) 2002-2011, Open Source Geospatial Foundation (OSGeo)
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation;
|
|
||||||
* version 2.1 of the License.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*/
|
|
||||||
package it.geosolutions.geoserver.rest.manager;
|
|
||||||
|
|
||||||
import it.geosolutions.geoserver.rest.datastore.StoreIntegrationTest;
|
|
||||||
import it.geosolutions.geoserver.rest.decoder.RESTStructuredCoverageGranulesList;
|
|
||||||
import it.geosolutions.geoserver.rest.decoder.RESTStructuredCoverageGranulesList.RESTStructuredCoverageGranule;
|
|
||||||
import it.geosolutions.geoserver.rest.decoder.RESTStructuredCoverageIndexSchema;
|
|
||||||
import it.geosolutions.geoserver.rest.decoder.RESTStructuredCoverageIndexSchema.RESTStructuredCoverageIndexAttribute;
|
|
||||||
import it.geosolutions.geoserver.rest.encoder.GSAbstractStoreEncoder;
|
|
||||||
|
|
||||||
import java.io.UnsupportedEncodingException;
|
|
||||||
import java.net.MalformedURLException;
|
|
||||||
import java.net.URL;
|
|
||||||
import java.util.Iterator;
|
|
||||||
|
|
||||||
import junit.framework.Assert;
|
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Simone Giannecchini, simone.giannecchini@geo-solutions.it
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class GeoServerRESTStructuredCoverageGridReaderManagerTest extends StoreIntegrationTest {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param ignore
|
|
||||||
* @throws IllegalArgumentException
|
|
||||||
* @throws MalformedURLException
|
|
||||||
*/
|
|
||||||
public GeoServerRESTStructuredCoverageGridReaderManagerTest()
|
|
||||||
throws IllegalArgumentException, MalformedURLException {
|
|
||||||
super(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public GSAbstractStoreEncoder getStoreEncoderTest() {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void createAndDelete() throws IllegalArgumentException, MalformedURLException, UnsupportedEncodingException{
|
|
||||||
GeoServerRESTStructuredCoverageGridReaderManager manager =
|
|
||||||
new GeoServerRESTStructuredCoverageGridReaderManager(new URL("http://localhost:8080/geoserver"), "admin", "geoserver");
|
|
||||||
// boolean result=manager.createOrHarvestExternal("it.geosolutions", "polyphemus", "imagemosaic", "D:\\DLR\\Geoserver-MD\\polyphemus\\polyphemus_20130301.nc");
|
|
||||||
// Assert.assertTrue(result);
|
|
||||||
|
|
||||||
// check index format
|
|
||||||
RESTStructuredCoverageIndexSchema indexFormat = manager.getGranuleIndexSchema("it.geosolutions", "polyphemus","V");
|
|
||||||
assertNotNull(indexFormat);
|
|
||||||
assertFalse(indexFormat.isEmpty());
|
|
||||||
assertEquals(7, indexFormat.size());
|
|
||||||
Iterator<RESTStructuredCoverageIndexAttribute> iterator = indexFormat.iterator();
|
|
||||||
while(iterator.hasNext()){
|
|
||||||
final RESTStructuredCoverageIndexAttribute element = iterator.next();
|
|
||||||
if(element.getName().equals("location")){
|
|
||||||
assertEquals("0", element.getMinOccurs());
|
|
||||||
assertEquals("1", element.getMaxOccurs());
|
|
||||||
assertEquals("true", element.getNillable());
|
|
||||||
assertEquals("java.lang.String", element.getBinding());
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// get some granules by id
|
|
||||||
RESTStructuredCoverageGranulesList granulesList = manager.getGranuleById("it.geosolutions", "polyphemus","V","348");
|
|
||||||
assertNotNull(granulesList);
|
|
||||||
assertSame(1, granulesList.size());
|
|
||||||
assertFalse(granulesList.isEmpty());
|
|
||||||
RESTStructuredCoverageGranule granule = granulesList.get(0);
|
|
||||||
assertNotNull(granule);
|
|
||||||
assertEquals(granule.getAttributeByIndex(4), "1250.0");
|
|
||||||
assertEquals(granule.getAttributeByName("elevation"), "1250.0");
|
|
||||||
|
|
||||||
|
|
||||||
// get with paging
|
|
||||||
granulesList = manager.getGranules("it.geosolutions", "polyphemus","V",null,"0","10");
|
|
||||||
assertNotNull(granulesList);
|
|
||||||
assertEquals(10, granulesList.size());
|
|
||||||
assertFalse(granulesList.isEmpty());
|
|
||||||
granule = granulesList.get(0);
|
|
||||||
assertNotNull(granule);
|
|
||||||
|
|
||||||
granulesList = manager.getGranules("it.geosolutions", "polyphemus","V",null,null,"10");
|
|
||||||
assertNotNull(granulesList);
|
|
||||||
assertEquals(10, granulesList.size());
|
|
||||||
assertFalse(granulesList.isEmpty());
|
|
||||||
granule = granulesList.get(0);
|
|
||||||
assertNotNull(granule);
|
|
||||||
|
|
||||||
granulesList = manager.getGranules("it.geosolutions", "polyphemus","V",null,null,null);
|
|
||||||
assertNotNull(granulesList);
|
|
||||||
assertEquals(1007, granulesList.size());
|
|
||||||
assertFalse(granulesList.isEmpty());
|
|
||||||
granule = granulesList.get(0);
|
|
||||||
assertNotNull(granule);
|
|
||||||
|
|
||||||
granulesList = manager.getGranules("it.geosolutions", "polyphemus","V","elevation = 10",null,null);
|
|
||||||
assertNotNull(granulesList);
|
|
||||||
assertEquals(72, granulesList.size());
|
|
||||||
assertFalse(granulesList.isEmpty());
|
|
||||||
granule = granulesList.get(0);
|
|
||||||
assertNotNull(granule);
|
|
||||||
|
|
||||||
granulesList = manager.getGranules("it.geosolutions", "polyphemus","V","elevation = 10","0","10");
|
|
||||||
assertNotNull(granulesList);
|
|
||||||
assertEquals(10, granulesList.size());
|
|
||||||
assertFalse(granulesList.isEmpty());
|
|
||||||
granule = granulesList.get(0);
|
|
||||||
assertNotNull(granule);
|
|
||||||
|
|
||||||
// remove by id
|
|
||||||
boolean result = manager.removeGranuleById("it.geosolutions", "polyphemus","V", "349");
|
|
||||||
assertTrue(result);
|
|
||||||
|
|
||||||
// remove by filter
|
|
||||||
result = manager.removeGranulesByCQL("it.geosolutions", "polyphemus","V", "location = 'polyphemus_20130301.nc'");
|
|
||||||
Assert.assertTrue(result);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
BIN
src/test/resources/testdata/granules/mosaic.zip
vendored
Normal file
BIN
src/test/resources/testdata/granules/mosaic.zip
vendored
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user