PostgisIndexer bugfixes
This commit is contained in:
parent
bffae85071
commit
f106045775
|
@ -21,8 +21,9 @@ public class BaseExecutionRequest extends BaseRequest{
|
||||||
this.document = document;
|
this.document = document;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void validate() throws InvalidPluginRequestException {
|
public BaseExecutionRequest validate() throws InvalidPluginRequestException {
|
||||||
super.validate();
|
super.validate();
|
||||||
if(document==null) throw new InvalidPluginRequestException("Document cannot be null");
|
if(document==null) throw new InvalidPluginRequestException("Document cannot be null");
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package org.gcube.application.cms.plugins.requests;
|
package org.gcube.application.cms.plugins.requests;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.databind.ser.Serializers;
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
import org.bson.Document;
|
import org.bson.Document;
|
||||||
import org.gcube.application.cms.plugins.faults.InvalidPluginRequestException;
|
import org.gcube.application.cms.plugins.faults.InvalidPluginRequestException;
|
||||||
|
@ -32,8 +33,14 @@ public class BaseRequest {
|
||||||
return params.getString(param);
|
return params.getString(param);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void validate() throws InvalidPluginRequestException {
|
public BaseRequest validate() throws InvalidPluginRequestException {
|
||||||
if(useCaseDescriptor ==null)throw new InvalidPluginRequestException("UseCaseDescriptor cannot be null ");
|
if(useCaseDescriptor ==null)throw new InvalidPluginRequestException("UseCaseDescriptor cannot be null ");
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public BaseRequest setParameter(String key,Object value){
|
||||||
|
if(callParameters==null) callParameters=new Document();
|
||||||
|
callParameters.put(key, value);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,19 +3,22 @@ package org.gcube.application.cms.tests;
|
||||||
import org.gcube.application.cms.implementations.ISInterface;
|
import org.gcube.application.cms.implementations.ISInterface;
|
||||||
import org.gcube.application.cms.implementations.ImplementationProvider;
|
import org.gcube.application.cms.implementations.ImplementationProvider;
|
||||||
import org.gcube.application.cms.plugins.InitializablePlugin;
|
import org.gcube.application.cms.plugins.InitializablePlugin;
|
||||||
|
import org.gcube.application.cms.plugins.LifecycleManager;
|
||||||
import org.gcube.application.cms.plugins.Plugin;
|
import org.gcube.application.cms.plugins.Plugin;
|
||||||
import org.gcube.application.cms.plugins.PluginsReflections;
|
import org.gcube.application.cms.plugins.PluginsReflections;
|
||||||
import org.gcube.application.cms.plugins.faults.InitializationException;
|
import org.gcube.application.cms.plugins.faults.InitializationException;
|
||||||
import org.gcube.application.cms.plugins.faults.PluginExecutionException;
|
import org.gcube.application.cms.plugins.faults.PluginExecutionException;
|
||||||
import org.gcube.application.geoportal.common.model.document.accounting.Context;
|
import org.gcube.application.geoportal.common.model.document.accounting.Context;
|
||||||
import org.gcube.application.geoportal.common.model.document.accounting.User;
|
import org.gcube.application.geoportal.common.model.document.accounting.User;
|
||||||
|
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
||||||
import org.gcube.application.geoportal.common.utils.tests.GCubeTest;
|
import org.gcube.application.geoportal.common.utils.tests.GCubeTest;
|
||||||
import org.junit.Assert;
|
import org.junit.*;
|
||||||
import org.junit.BeforeClass;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import static org.junit.Assume.assumeTrue;
|
||||||
|
|
||||||
public class BasicPluginTest {
|
public class BasicPluginTest {
|
||||||
|
|
||||||
|
|
||||||
|
@ -69,9 +72,15 @@ public class BasicPluginTest {
|
||||||
|
|
||||||
System.out.println("Plugin Loading OK");
|
System.out.println("Plugin Loading OK");
|
||||||
|
|
||||||
if(GCubeTest.isTestInfrastructureEnabled()){
|
}
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void initContext(){
|
||||||
|
assumeTrue(GCubeTest.isTestInfrastructureEnabled());
|
||||||
|
TokenSetter.set(GCubeTest.getContext());
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -162,9 +162,7 @@ public class ConcessioniLifeCycleManager implements LifecycleManager {
|
||||||
|
|
||||||
IndexDocumentRequest indexRequest = new IndexDocumentRequest(request.getUseCaseDescriptor(),request.getCaller(), request.getContext(),request.getDocument());
|
IndexDocumentRequest indexRequest = new IndexDocumentRequest(request.getUseCaseDescriptor(),request.getCaller(), request.getContext(),request.getDocument());
|
||||||
|
|
||||||
Document callParameters = new Document();
|
Document callParameters = getPublicIndexParams(request);
|
||||||
callParameters.put("workspace",Files.fixFilename("gna_concessioni_"+request.getContext().getId()));
|
|
||||||
callParameters.put("indexName",Files.fixFilename("gna_concessioni_centroids_"+request.getContext().getId()));
|
|
||||||
indexRequest.setCallParameters(callParameters);
|
indexRequest.setCallParameters(callParameters);
|
||||||
|
|
||||||
IndexDocumentReport indexReport = indexerPlugin.index(indexRequest);
|
IndexDocumentReport indexReport = indexerPlugin.index(indexRequest);
|
||||||
|
@ -254,19 +252,18 @@ public class ConcessioniLifeCycleManager implements LifecycleManager {
|
||||||
@Override
|
@Override
|
||||||
public Configuration getCurrentConfiguration(BaseRequest req) throws ConfigurationException {
|
public Configuration getCurrentConfiguration(BaseRequest req) throws ConfigurationException {
|
||||||
Configuration toReturn = new Configuration();
|
Configuration toReturn = new Configuration();
|
||||||
toReturn.setArchives(new ArrayList<>());
|
toReturn.setIndexes(new ArrayList<>());
|
||||||
|
|
||||||
IndexerPluginInterface indexerPlugin;
|
IndexerPluginInterface indexerPlugin;
|
||||||
indexerPlugin = (IndexerPluginInterface) pluginManager.getById("SDI-Indexer-Plugin");
|
indexerPlugin = (IndexerPluginInterface) pluginManager.getById("SDI-Indexer-Plugin");
|
||||||
|
|
||||||
Document callParameters = new Document();
|
|
||||||
callParameters.put("workspace",Files.fixFilename("gna_concessioni_"+req.getContext()));
|
|
||||||
callParameters.put("indexName",Files.fixFilename("gna_concessioni_centroids_"+req.getContext()));
|
|
||||||
|
|
||||||
|
|
||||||
BaseRequest indexRequest = new BaseRequest(req.getUseCaseDescriptor(),req.getCaller(),req.getContext());
|
BaseRequest indexRequest = new BaseRequest(req.getUseCaseDescriptor(),req.getCaller(),req.getContext());
|
||||||
indexRequest.setCallParameters(callParameters);
|
|
||||||
|
|
||||||
|
// Info on Public index
|
||||||
|
indexRequest.setCallParameters(getPublicIndexParams(req));
|
||||||
|
toReturn.getIndexes().add(indexerPlugin.getIndex(indexRequest));
|
||||||
|
|
||||||
|
// Info on internal_index
|
||||||
|
indexRequest.setCallParameters(getInternalIndexParams(req));
|
||||||
toReturn.getIndexes().add(indexerPlugin.getIndex(indexRequest));
|
toReturn.getIndexes().add(indexerPlugin.getIndex(indexRequest));
|
||||||
|
|
||||||
return toReturn;
|
return toReturn;
|
||||||
|
@ -278,6 +275,21 @@ public class ConcessioniLifeCycleManager implements LifecycleManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private Document getInternalIndexParams(BaseRequest req){
|
||||||
|
Document callParameters = new Document();
|
||||||
|
|
||||||
|
callParameters.put("workspace",Files.fixFilename(req.getUseCaseDescriptor().getId()+"_internal_"+req.getContext().getName()));
|
||||||
|
callParameters.put("indexName",Files.fixFilename(req.getUseCaseDescriptor().getId()+"_internal_"+req.getContext().getName()+"_centroids"));
|
||||||
|
return callParameters;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Document getPublicIndexParams(BaseRequest req){
|
||||||
|
Document callParameters = new Document();
|
||||||
|
callParameters.put("workspace",Files.fixFilename(req.getUseCaseDescriptor().getId()+req.getContext().getName()));
|
||||||
|
callParameters.put("indexName",Files.fixFilename(req.getUseCaseDescriptor().getId()+req.getContext().getName()+"_centroids"));
|
||||||
|
return callParameters;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// STATIC ROUTINES
|
// STATIC ROUTINES
|
||||||
|
|
||||||
|
|
|
@ -88,17 +88,17 @@ public class GCubeSDILayer extends Materialization{
|
||||||
}
|
}
|
||||||
|
|
||||||
@JsonIgnore
|
@JsonIgnore
|
||||||
public void setMaxX(Double d){this.put(MAX_X,d);}
|
public BBOX setMaxX(Double d){this.put(MAX_X,d);return this;}
|
||||||
@JsonIgnore
|
@JsonIgnore
|
||||||
public void setMaxY(Double d){this.put(MAX_Y,d);}
|
public BBOX setMaxY(Double d){this.put(MAX_Y,d);return this;}
|
||||||
@JsonIgnore
|
@JsonIgnore
|
||||||
public void setMaxZ(Double d){this.put(MAX_Z,d);}
|
public BBOX setMaxZ(Double d){this.put(MAX_Z,d);return this;}
|
||||||
@JsonIgnore
|
@JsonIgnore
|
||||||
public void setMinX(Double d){this.put(MIN_X,d);}
|
public BBOX setMinX(Double d){this.put(MIN_X,d);return this;}
|
||||||
@JsonIgnore
|
@JsonIgnore
|
||||||
public void setMinY(Double d){this.put(MIN_Y,d);}
|
public BBOX setMinY(Double d){this.put(MIN_Y,d);return this;}
|
||||||
@JsonIgnore
|
@JsonIgnore
|
||||||
public void setMinZ(Double d){this.put(MIN_Z,d);}
|
public BBOX setMinZ(Double d){this.put(MIN_Z,d);return this;}
|
||||||
@JsonIgnore
|
@JsonIgnore
|
||||||
public Double getMinY(){return (Double) this.getOrDefault(MIN_Y,-90d);}
|
public Double getMinY(){return (Double) this.getOrDefault(MIN_Y,-90d);}
|
||||||
@JsonIgnore
|
@JsonIgnore
|
||||||
|
@ -135,4 +135,5 @@ public class GCubeSDILayer extends Materialization{
|
||||||
@JsonIgnore
|
@JsonIgnore
|
||||||
public List getPlatformInfo(){return this.get(PLATFORM_INFO,List.class);}
|
public List getPlatformInfo(){return this.get(PLATFORM_INFO,List.class);}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -96,6 +96,6 @@ public class Files {
|
||||||
toFix=toFix.substring(0,toFix.indexOf("."));
|
toFix=toFix.substring(0,toFix.indexOf("."));
|
||||||
}
|
}
|
||||||
return toFix.toLowerCase().
|
return toFix.toLowerCase().
|
||||||
replaceAll("[\\*\\+\\/\\\\ \\[\\]\\(\\)\\.\\\"\\:\\;\\|\\=]","_")+extension;
|
replaceAll("[\\-\\*\\+\\/\\\\ \\[\\]\\(\\)\\.\\\"\\:\\;\\|\\=]","_")+extension;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@ public class GCubeTest {
|
||||||
|
|
||||||
|
|
||||||
//testContext = "/pred4s/preprod/preVRE";
|
//testContext = "/pred4s/preprod/preVRE";
|
||||||
//testContext = "/gcube/devsec/devVRE";
|
testContext = "/gcube/devsec/devVRE";
|
||||||
|
|
||||||
|
|
||||||
System.out.println("TEST CONTEXT = "+testContext);
|
System.out.println("TEST CONTEXT = "+testContext);
|
||||||
|
|
|
@ -101,11 +101,18 @@ public class PostgisDBManager implements PostgisDBManagerI {
|
||||||
conn.createStatement().executeUpdate("TRUNCATE Table "+tableName);
|
conn.createStatement().executeUpdate("TRUNCATE Table "+tableName);
|
||||||
}
|
}
|
||||||
|
|
||||||
// @Override
|
@Override
|
||||||
// public ResultSet queryAll(PostgisTable table) throws SQLException {
|
public ResultSet queryAll(PostgisTable table) throws SQLException {
|
||||||
// // TODO Check schema
|
// TODO Check schema
|
||||||
// return conn.createStatement().executeQuery("Select * from "+table.getTablename());
|
return conn.createStatement().executeQuery("Select * from "+table.getTablename());
|
||||||
// }
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long count(PostgisTable table) throws SQLException {
|
||||||
|
ResultSet rs = conn.createStatement().executeQuery("Select count(*) from "+table.getTablename());
|
||||||
|
rs.next();
|
||||||
|
return rs.getLong(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// *********************** INNER UTILS CLASS
|
// *********************** INNER UTILS CLASS
|
||||||
|
|
|
@ -24,7 +24,7 @@ public interface PostgisDBManagerI {
|
||||||
void truncate(String tableName) throws SQLException;
|
void truncate(String tableName) throws SQLException;
|
||||||
int deleteByFieldValue(PostgisTable target, PostgisTable.Field field, Object value) throws SQLException;
|
int deleteByFieldValue(PostgisTable target, PostgisTable.Field field, Object value) throws SQLException;
|
||||||
|
|
||||||
|
long count(PostgisTable table)throws SQLException;
|
||||||
|
|
||||||
|
|
||||||
// DatabaseConnection getConnectionDescriptor();
|
// DatabaseConnection getConnectionDescriptor();
|
||||||
|
@ -32,7 +32,7 @@ public interface PostgisDBManagerI {
|
||||||
// PostgisTable.POINT evaluateCentroid(PostgisTable table) throws SQLException, DataParsingException;
|
// PostgisTable.POINT evaluateCentroid(PostgisTable table) throws SQLException, DataParsingException;
|
||||||
|
|
||||||
|
|
||||||
// ResultSet queryAll(PostgisTable table) throws SQLException;
|
ResultSet queryAll(PostgisTable table) throws SQLException;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,9 @@ import lombok.extern.slf4j.Slf4j;
|
||||||
import org.bson.Document;
|
import org.bson.Document;
|
||||||
import org.gcube.application.cms.plugins.requests.BaseRequest;
|
import org.gcube.application.cms.plugins.requests.BaseRequest;
|
||||||
import org.gcube.application.cms.sdi.faults.SDIInteractionException;
|
import org.gcube.application.cms.sdi.faults.SDIInteractionException;
|
||||||
|
import org.gcube.application.cms.sdi.model.CrossReferencedLayer;
|
||||||
import org.gcube.application.geoportal.common.model.configuration.Index;
|
import org.gcube.application.geoportal.common.model.configuration.Index;
|
||||||
|
import org.gcube.application.geoportal.common.model.document.filesets.GCubeSDILayer;
|
||||||
import org.gcube.application.geoportal.common.model.legacy.SDILayerDescriptor;
|
import org.gcube.application.geoportal.common.model.legacy.SDILayerDescriptor;
|
||||||
import org.gcube.application.geoportal.common.model.useCaseDescriptor.UseCaseDescriptor;
|
import org.gcube.application.geoportal.common.model.useCaseDescriptor.UseCaseDescriptor;
|
||||||
import org.gcube.application.geoportal.common.model.rest.DatabaseConnection;
|
import org.gcube.application.geoportal.common.model.rest.DatabaseConnection;
|
||||||
|
@ -22,6 +24,10 @@ import java.util.List;
|
||||||
public class PostgisIndexer {
|
public class PostgisIndexer {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static final String INDEX_TYPE="GIS-CENTROIDS";
|
||||||
|
|
||||||
|
|
||||||
public static void init() throws ClassNotFoundException {
|
public static void init() throws ClassNotFoundException {
|
||||||
|
|
||||||
Class.forName("org.postgresql.Driver");
|
Class.forName("org.postgresql.Driver");
|
||||||
|
@ -38,6 +44,12 @@ public class PostgisIndexer {
|
||||||
DatabaseConnection connectionParameters;
|
DatabaseConnection connectionParameters;
|
||||||
|
|
||||||
PostgisDBManagerI dbManager=null;
|
PostgisDBManagerI dbManager=null;
|
||||||
|
PostgisTable table = null;
|
||||||
|
GCubeSDILayer indexLayer = null;
|
||||||
|
String indexName = null;
|
||||||
|
|
||||||
|
private List<CrossReferencedLayer> crossReferenceableLayers= new ArrayList<>();
|
||||||
|
|
||||||
|
|
||||||
public PostgisIndexer(SDIManagerWrapper manager, UseCaseDescriptor useCaseDescriptor,
|
public PostgisIndexer(SDIManagerWrapper manager, UseCaseDescriptor useCaseDescriptor,
|
||||||
DatabaseConnection postgisConnection) throws SQLException {
|
DatabaseConnection postgisConnection) throws SQLException {
|
||||||
|
@ -52,13 +64,7 @@ public class PostgisIndexer {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PostgisTable table = null;
|
|
||||||
|
|
||||||
private String storeName = null;
|
|
||||||
private String workspace = null;
|
|
||||||
private SDILayerDescriptor indexLayer = null;
|
|
||||||
|
|
||||||
private List<SDILayerDescriptor> crossReferenceableLayers= new ArrayList<>();
|
|
||||||
|
|
||||||
|
|
||||||
public void initIndex(String indexName, List<PostgisTable.Field> fields, String workspace,String storeName) throws SQLException, SDIInteractionException {
|
public void initIndex(String indexName, List<PostgisTable.Field> fields, String workspace,String storeName) throws SQLException, SDIInteractionException {
|
||||||
|
@ -70,31 +76,28 @@ public class PostgisIndexer {
|
||||||
dbManager.create(table);
|
dbManager.create(table);
|
||||||
|
|
||||||
log.debug("Checking/ registering index layer in GS ");
|
log.debug("Checking/ registering index layer in GS ");
|
||||||
String wmsUrl=manager.configureCentroidLayer(indexName,workspace,storeName,table,connectionParameters);
|
indexName = indexName;
|
||||||
|
indexLayer = manager.configureCentroidLayer(indexName,workspace,storeName,table,connectionParameters);
|
||||||
|
|
||||||
|
|
||||||
// TODO Additional layers
|
// TODO Additional layers
|
||||||
// Create layer
|
// Create layer
|
||||||
// Publish cross related layers
|
// register cross related layers
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HashMap<String,GCubeSDILayer> crossReferenced = new HashMap<>();
|
||||||
HashMap<String,String> wmsUrls=new HashMap<>();
|
|
||||||
|
|
||||||
//private String wmsByIndex(String indexName){}
|
|
||||||
|
|
||||||
|
|
||||||
public Index getIndexConfiguration(){
|
public Index getIndexConfiguration(){
|
||||||
Index toReturn = new Index("GIS-CENTROIDS");
|
Index toReturn = new Index(INDEX_TYPE);
|
||||||
// SDI Layers
|
// SDI Layers
|
||||||
|
toReturn.put("layer",indexLayer);
|
||||||
|
toReturn.put("indexName",indexName);
|
||||||
|
try {
|
||||||
// cross reference info
|
toReturn.put("records", dbManager.count(table));
|
||||||
|
}catch (SQLException e) {
|
||||||
|
log.warn("Unable to count records for index " + indexName, e);
|
||||||
toReturn.put("",null);
|
}
|
||||||
|
toReturn.put("crossReferencedLayers",crossReferenced);
|
||||||
return toReturn;
|
return toReturn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -113,7 +113,6 @@ public class PostgisTable {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
private String tablename;
|
private String tablename;
|
||||||
|
|
||||||
|
|
|
@ -1,38 +1,22 @@
|
||||||
package org.gcube.application.cms.sdi.engine;
|
package org.gcube.application.cms.sdi.engine;
|
||||||
|
|
||||||
import it.geosolutions.geoserver.rest.GeoServerRESTPublisher;
|
|
||||||
import it.geosolutions.geoserver.rest.GeoServerRESTReader;
|
|
||||||
import it.geosolutions.geoserver.rest.decoder.RESTFeatureType;
|
|
||||||
import it.geosolutions.geoserver.rest.decoder.RESTLayer;
|
|
||||||
import it.geosolutions.geoserver.rest.encoder.datastore.GSPostGISDatastoreEncoder;
|
import it.geosolutions.geoserver.rest.encoder.datastore.GSPostGISDatastoreEncoder;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.bson.Document;
|
|
||||||
import org.gcube.application.cms.sdi.faults.SDIInteractionException;
|
import org.gcube.application.cms.sdi.faults.SDIInteractionException;
|
||||||
import org.gcube.application.cms.plugins.requests.BaseExecutionRequest;
|
|
||||||
import org.gcube.application.cms.serialization.Serialization;
|
import org.gcube.application.cms.serialization.Serialization;
|
||||||
import org.gcube.application.geoportal.common.model.document.filesets.GCubeSDILayer;
|
|
||||||
|
|
||||||
import org.gcube.application.geoportal.common.model.document.filesets.RegisteredFile;
|
import org.gcube.application.geoportal.common.model.document.filesets.RegisteredFile;
|
||||||
import org.gcube.application.geoportal.common.model.document.filesets.RegisteredFileSet;
|
import org.gcube.application.geoportal.common.model.document.filesets.RegisteredFileSet;
|
||||||
|
|
||||||
import org.gcube.application.geoportal.common.model.rest.DatabaseConnection;
|
import org.gcube.application.geoportal.common.model.rest.DatabaseConnection;
|
||||||
import org.gcube.application.geoportal.common.utils.Files;
|
import org.gcube.application.geoportal.common.utils.Files;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
import org.gcube.data.transfer.library.DataTransferClient;
|
import org.gcube.data.transfer.library.DataTransferClient;
|
||||||
import org.gcube.data.transfer.library.TransferResult;
|
|
||||||
import org.gcube.data.transfer.model.Destination;
|
|
||||||
import org.gcube.data.transfer.model.DestinationClashPolicy;
|
|
||||||
import org.gcube.spatial.data.gis.GISInterface;
|
import org.gcube.spatial.data.gis.GISInterface;
|
||||||
import org.gcube.spatial.data.gis.is.AbstractGeoServerDescriptor;
|
import org.gcube.spatial.data.gis.is.AbstractGeoServerDescriptor;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
@ -40,11 +24,6 @@ import java.util.regex.Pattern;
|
||||||
public class SDIManager {
|
public class SDIManager {
|
||||||
|
|
||||||
|
|
||||||
static protected final String EPSG_4326="EPSG:4326";
|
|
||||||
static final String WGS84_FULL="GEOGCS[\"WGS 84\", DATUM[\"World Geodetic System 1984\", SPHEROID[\"WGS 84\", 6378137.0, 298.257223563, AUTHORITY[\"EPSG\",\"7030\"]],"+
|
|
||||||
"AUTHORITY[\"EPSG\",\"6326\"]], PRIMEM[\"Greenwich\", 0.0, AUTHORITY[\"EPSG\",\"8901\"]], UNIT[\"degree\", 0.017453292519943295],"+
|
|
||||||
"AXIS[\"Geodetic longitude\", EAST], AXIS[\"Geodetic latitude\", NORTH], AUTHORITY[\"EPSG\",\"4326\"]]";
|
|
||||||
|
|
||||||
|
|
||||||
public static final Pattern HOSTNAME_PATTERN=Pattern.compile("(?<=\\:\\/\\/)[^\\:]*");
|
public static final Pattern HOSTNAME_PATTERN=Pattern.compile("(?<=\\:\\/\\/)[^\\:]*");
|
||||||
public static final Pattern PORT_PATTERN=Pattern.compile("(?<=\\:)[\\d]+");
|
public static final Pattern PORT_PATTERN=Pattern.compile("(?<=\\:)[\\d]+");
|
||||||
|
|
|
@ -11,6 +11,7 @@ import org.bson.Document;
|
||||||
import org.gcube.application.cms.caches.AbstractScopedMap;
|
import org.gcube.application.cms.caches.AbstractScopedMap;
|
||||||
import org.gcube.application.cms.plugins.requests.BaseExecutionRequest;
|
import org.gcube.application.cms.plugins.requests.BaseExecutionRequest;
|
||||||
import org.gcube.application.cms.sdi.faults.SDIInteractionException;
|
import org.gcube.application.cms.sdi.faults.SDIInteractionException;
|
||||||
|
import org.gcube.application.cms.sdi.model.GCubeSDILayerBuilder;
|
||||||
import org.gcube.application.cms.serialization.Serialization;
|
import org.gcube.application.cms.serialization.Serialization;
|
||||||
import org.gcube.application.geoportal.common.model.document.filesets.GCubeSDILayer;
|
import org.gcube.application.geoportal.common.model.document.filesets.GCubeSDILayer;
|
||||||
import org.gcube.application.geoportal.common.model.document.filesets.RegisteredFile;
|
import org.gcube.application.geoportal.common.model.document.filesets.RegisteredFile;
|
||||||
|
@ -28,6 +29,9 @@ import java.net.URL;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.gcube.application.cms.sdi.model.GCubeSDILayerBuilder.EPSG_4326;
|
||||||
|
import static org.gcube.application.cms.sdi.model.GCubeSDILayerBuilder.WGS84_FULL;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class SDIManagerWrapper extends SDIManager{
|
public class SDIManagerWrapper extends SDIManager{
|
||||||
|
|
||||||
|
@ -60,9 +64,10 @@ public class SDIManagerWrapper extends SDIManager{
|
||||||
if (fileSet.getPayloads().isEmpty()) throw new SDIInteractionException("No payload to materialize");
|
if (fileSet.getPayloads().isEmpty()) throw new SDIInteractionException("No payload to materialize");
|
||||||
|
|
||||||
|
|
||||||
Document geoserverInfo = new Document();
|
// Document geoserverInfo = new Document();
|
||||||
geoserverInfo.put("_type", "Geoserver");
|
GCubeSDILayerBuilder layerBuilder=new GCubeSDILayerBuilder();
|
||||||
geoserverInfo.put("workspace", workspace);
|
layerBuilder.setWorkspace(workspace);
|
||||||
|
layerBuilder.setHost(getGeoserverHostName());
|
||||||
|
|
||||||
|
|
||||||
// Evaluate Layer Name
|
// Evaluate Layer Name
|
||||||
|
@ -77,13 +82,13 @@ public class SDIManagerWrapper extends SDIManager{
|
||||||
toSetLayerName = baseName + "_" + count;
|
toSetLayerName = baseName + "_" + count;
|
||||||
log.debug("layer for " + baseName + " already existing, trying " + toSetLayerName);
|
log.debug("layer for " + baseName + " already existing, trying " + toSetLayerName);
|
||||||
}
|
}
|
||||||
geoserverInfo.put("layerName", toSetLayerName);
|
|
||||||
log.debug("Layer name will be {}", toSetLayerName);
|
log.debug("Layer name will be {}", toSetLayerName);
|
||||||
|
layerBuilder.setLayerName(toSetLayerName);
|
||||||
|
|
||||||
|
|
||||||
String folderRelativePath = basePersistencePAth + "/" + documentID + "/" + fileSet.getUUID() + "/" + toSetLayerName;
|
String folderRelativePath = basePersistencePAth + "/" + documentID + "/" + fileSet.getUUID() + "/" + toSetLayerName;
|
||||||
log.debug("GS Relative destination path is {}", folderRelativePath);
|
log.debug("GS Relative destination path is {}", folderRelativePath);
|
||||||
geoserverInfo.put("persistencePath", folderRelativePath);
|
layerBuilder.setPersistencePath(folderRelativePath);
|
||||||
|
|
||||||
List<String> filenames = new ArrayList<>();
|
List<String> filenames = new ArrayList<>();
|
||||||
|
|
||||||
|
@ -114,11 +119,12 @@ public class SDIManagerWrapper extends SDIManager{
|
||||||
//geoserverInfo.put(""result.getRemotePath().substring(0, result.getRemotePath().lastIndexOf("/")));
|
//geoserverInfo.put(""result.getRemotePath().substring(0, result.getRemotePath().lastIndexOf("/")));
|
||||||
absolutePath = result.getRemotePath().substring(0, result.getRemotePath().lastIndexOf("/"));
|
absolutePath = result.getRemotePath().substring(0, result.getRemotePath().lastIndexOf("/"));
|
||||||
}
|
}
|
||||||
geoserverInfo.put("files", filenames);
|
|
||||||
|
layerBuilder.setFiles(filenames);
|
||||||
|
|
||||||
// Publishing layer in GS
|
// Publishing layer in GS
|
||||||
String storeName = toSetLayerName + "_store";
|
String storeName = toSetLayerName + "_store";
|
||||||
geoserverInfo.put("storeName", storeName);
|
layerBuilder.setStoreName(storeName);
|
||||||
|
|
||||||
GeoServerRESTPublisher publisher = getCurrentGeoserver().getPublisher();
|
GeoServerRESTPublisher publisher = getCurrentGeoserver().getPublisher();
|
||||||
log.debug("Trying to create remote workspace : " + workspace);
|
log.debug("Trying to create remote workspace : " + workspace);
|
||||||
|
@ -150,35 +156,7 @@ public class SDIManagerWrapper extends SDIManager{
|
||||||
RESTFeatureType f = gsReader.getFeatureType(l);
|
RESTFeatureType f = gsReader.getFeatureType(l);
|
||||||
|
|
||||||
|
|
||||||
List<Document> ogcLinks = new ArrayList<>();
|
GCubeSDILayer materialization = layerBuilder.getLayer();
|
||||||
|
|
||||||
Document wmsLink = new Document();
|
|
||||||
wmsLink.put("wms", String.format("https://%1$s/geoserver/%2$s/wms?"
|
|
||||||
+ "service=WMS&version=1.1.0&request=GetMap&layers=%2$s:%3$s&"
|
|
||||||
+ "styles=&bbox=%4$f,%5$f,%6$f,%7$f&srs=%8$s&format=application/openlayers&width=%9$d&height=%10$d",
|
|
||||||
getGeoserverHostName(),
|
|
||||||
workspace,
|
|
||||||
toSetLayerName,
|
|
||||||
f.getMinX(),
|
|
||||||
f.getMinY(),
|
|
||||||
f.getMaxX(),
|
|
||||||
f.getMaxY(),
|
|
||||||
EPSG_4326,
|
|
||||||
400,
|
|
||||||
400));
|
|
||||||
ogcLinks.add(wmsLink);
|
|
||||||
|
|
||||||
List<Document> platformInfo = new ArrayList<>();
|
|
||||||
platformInfo.add(geoserverInfo);
|
|
||||||
// TODO Metadata
|
|
||||||
|
|
||||||
|
|
||||||
// Materialization object
|
|
||||||
GCubeSDILayer materialization = new GCubeSDILayer();
|
|
||||||
materialization.put(GCubeSDILayer.OGC_LINKS, ogcLinks);
|
|
||||||
materialization.put(GCubeSDILayer.B_BOX, new GCubeSDILayer.BBOX(f.getMaxX(), f.getMaxY(), f.getMinX(), f.getMinY()));
|
|
||||||
materialization.put(GCubeSDILayer.PLATFORM_INFO, platformInfo);
|
|
||||||
|
|
||||||
log.info("Generated Materialization {}", materialization);
|
log.info("Generated Materialization {}", materialization);
|
||||||
|
|
||||||
//Add Materialization to registered file set
|
//Add Materialization to registered file set
|
||||||
|
@ -196,7 +174,12 @@ public class SDIManagerWrapper extends SDIManager{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public String configureCentroidLayer(String name, String workspace, String storeName, PostgisTable table, DatabaseConnection connection) throws SDIInteractionException {
|
public GCubeSDILayer configureCentroidLayer(String name, String workspace, String storeName, PostgisTable table, DatabaseConnection connection) throws SDIInteractionException {
|
||||||
|
|
||||||
|
GCubeSDILayerBuilder builder = new GCubeSDILayerBuilder()
|
||||||
|
.setWorkspace(workspace)
|
||||||
|
.setStoreName(storeName)
|
||||||
|
.setHost(getGeoserverHostName());
|
||||||
|
|
||||||
GSFeatureTypeEncoder fte=new GSFeatureTypeEncoder();
|
GSFeatureTypeEncoder fte=new GSFeatureTypeEncoder();
|
||||||
fte.setAbstract("Centroid layer for "+name);
|
fte.setAbstract("Centroid layer for "+name);
|
||||||
|
@ -205,11 +188,6 @@ public class SDIManagerWrapper extends SDIManager{
|
||||||
fte.setTitle(name);
|
fte.setTitle(name);
|
||||||
fte.setName(name);
|
fte.setName(name);
|
||||||
|
|
||||||
|
|
||||||
// GeoServer loads all fields
|
|
||||||
// fte.setAttribute(attrs);
|
|
||||||
|
|
||||||
|
|
||||||
fte.setLatLonBoundingBox(-180.0, -90.0, 180.0, 90.0, WGS84_FULL);
|
fte.setLatLonBoundingBox(-180.0, -90.0, 180.0, 90.0, WGS84_FULL);
|
||||||
|
|
||||||
String style="clustered_centroids";
|
String style="clustered_centroids";
|
||||||
|
@ -233,25 +211,9 @@ public class SDIManagerWrapper extends SDIManager{
|
||||||
log.debug("layer "+name+" already exists");
|
log.debug("layer "+name+" already exists");
|
||||||
|
|
||||||
|
|
||||||
String link=String.format("https://%1$s/geoserver/%2$s/wms?"
|
return builder.getLayer();
|
||||||
+"service=WMS&version=1.1.0&request=GetMap&layers=%2$s:%3$s&"
|
|
||||||
+ "styles=&bbox=%4$s,%5$s,%6$s,%7$s&srs=%8$s&format=application/openlayers&width=%9$d&height=%10$d",
|
|
||||||
getGeoserverHostName(),
|
|
||||||
workspace,
|
|
||||||
name,
|
|
||||||
"-1563071.166172796",
|
|
||||||
"4789738.204048398",
|
|
||||||
"4334926.486925308",
|
|
||||||
"5828118.072551585",
|
|
||||||
EPSG_4326,
|
|
||||||
400,
|
|
||||||
400);
|
|
||||||
|
|
||||||
return name;
|
|
||||||
} catch (IllegalArgumentException | MalformedURLException e) {
|
} catch (IllegalArgumentException | MalformedURLException e) {
|
||||||
throw new SDIInteractionException("Unable to create layer "+name,e);
|
throw new SDIInteractionException("Unable to create layer "+name,e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
package org.gcube.application.cms.sdi.model;
|
||||||
|
|
||||||
|
public class CrossReferencedLayer {
|
||||||
|
}
|
|
@ -0,0 +1,121 @@
|
||||||
|
package org.gcube.application.cms.sdi.model;
|
||||||
|
|
||||||
|
import freemarker.core.PlainTextOutputFormat;
|
||||||
|
import lombok.Getter;
|
||||||
|
import org.bson.Document;
|
||||||
|
import org.gcube.application.geoportal.common.model.document.filesets.GCubeSDILayer;
|
||||||
|
import sun.misc.GC;
|
||||||
|
|
||||||
|
import javax.print.Doc;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class GCubeSDILayerBuilder {
|
||||||
|
|
||||||
|
public static enum OGC_TYPE{
|
||||||
|
wms,wfs,wcs,csw
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static final String EPSG_4326="EPSG:4326";
|
||||||
|
public static final String WGS84_FULL="GEOGCS[\"WGS 84\", DATUM[\"World Geodetic System 1984\", SPHEROID[\"WGS 84\", 6378137.0, 298.257223563, AUTHORITY[\"EPSG\",\"7030\"]],"+
|
||||||
|
"AUTHORITY[\"EPSG\",\"6326\"]], PRIMEM[\"Greenwich\", 0.0, AUTHORITY[\"EPSG\",\"8901\"]], UNIT[\"degree\", 0.017453292519943295],"+
|
||||||
|
"AXIS[\"Geodetic longitude\", EAST], AXIS[\"Geodetic latitude\", NORTH], AUTHORITY[\"EPSG\",\"4326\"]]";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static final String GS_PLATFORM="Geoserver";
|
||||||
|
|
||||||
|
|
||||||
|
GCubeSDILayer theObject = new GCubeSDILayer();
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
Document platformInfo= new Document(GCubeSDILayer.PLATFORM_INFO,GS_PLATFORM);
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
GCubeSDILayer.BBOX bbox = GCubeSDILayer.BBOX.WORLD;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
Map<OGC_TYPE,Document> ogcLinks = new HashMap<>();
|
||||||
|
|
||||||
|
public GCubeSDILayerBuilder(){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public GCubeSDILayer getLayer(){
|
||||||
|
theObject.put(GCubeSDILayer.PLATFORM_INFO,platformInfo);
|
||||||
|
theObject.put(GCubeSDILayer.B_BOX,bbox);
|
||||||
|
|
||||||
|
prepareOGCLinks();
|
||||||
|
theObject.put(GCubeSDILayer.OGC_LINKS,ogcLinks);
|
||||||
|
return theObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// @@@@@@@@@@@@@@@@@@ Platform info
|
||||||
|
public GCubeSDILayerBuilder setWorkspace(String ws){
|
||||||
|
platformInfo.put("workspace",ws);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GCubeSDILayerBuilder setHost(String ws){
|
||||||
|
platformInfo.put("host",ws);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GCubeSDILayerBuilder setEngineVersion(String ws){
|
||||||
|
platformInfo.put("engineVersion",ws);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GCubeSDILayerBuilder setLayerName(String ws){
|
||||||
|
platformInfo.put("layerName",ws);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GCubeSDILayerBuilder setPersistencePath(String ws){
|
||||||
|
platformInfo.put("persistencePath",ws);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GCubeSDILayerBuilder setStoreName(String ws){
|
||||||
|
platformInfo.put("storeName",ws);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GCubeSDILayerBuilder setFiles(List<String> ws){
|
||||||
|
platformInfo.put("files",ws);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void prepareOGCLinks(){
|
||||||
|
if(!ogcLinks.containsKey(OGC_TYPE.wms)){
|
||||||
|
addLink(OGC_TYPE.wms,String.format("https://%1$s/geoserver/%2$s/wms?"
|
||||||
|
+ "service=WMS&version=1.1.0&request=GetMap&layers=%2$s:%3$s&"
|
||||||
|
+ "styles=&bbox=%4$f,%5$f,%6$f,%7$f&srs=%8$s&format=application/openlayers&width=%9$d&height=%10$d",
|
||||||
|
platformInfo.get("host"),
|
||||||
|
platformInfo.get("workspace"),
|
||||||
|
platformInfo.get("layerName"),
|
||||||
|
bbox.getMinX(),
|
||||||
|
bbox.getMinY(),
|
||||||
|
bbox.getMaxX(),
|
||||||
|
bbox.getMaxY(),
|
||||||
|
EPSG_4326,
|
||||||
|
400,
|
||||||
|
400));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@ OGC
|
||||||
|
public GCubeSDILayerBuilder addLink(OGC_TYPE type,String link){
|
||||||
|
ogcLinks.put(type,new Document(type.name(),link));
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@ BBOX
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -215,6 +215,15 @@ public class SDIIndexerPlugin extends SDIAbstractPlugin implements IndexerPlugin
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Expected parameters :
|
||||||
|
* workspace
|
||||||
|
* indexName
|
||||||
|
*
|
||||||
|
* @param request
|
||||||
|
* @return
|
||||||
|
* @throws ConfigurationException
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Index getIndex(BaseRequest request) throws ConfigurationException {
|
public Index getIndex(BaseRequest request) throws ConfigurationException {
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -6,18 +6,27 @@ import org.gcube.application.cms.plugins.IndexerPluginInterface;
|
||||||
import org.gcube.application.cms.plugins.faults.PluginExecutionException;
|
import org.gcube.application.cms.plugins.faults.PluginExecutionException;
|
||||||
import org.gcube.application.cms.plugins.reports.IndexDocumentReport;
|
import org.gcube.application.cms.plugins.reports.IndexDocumentReport;
|
||||||
import org.gcube.application.cms.plugins.reports.Report;
|
import org.gcube.application.cms.plugins.reports.Report;
|
||||||
|
import org.gcube.application.cms.plugins.requests.BaseRequest;
|
||||||
import org.gcube.application.cms.plugins.requests.IndexDocumentRequest;
|
import org.gcube.application.cms.plugins.requests.IndexDocumentRequest;
|
||||||
|
import org.gcube.application.cms.sdi.engine.PostgisIndexer;
|
||||||
|
import org.gcube.application.cms.sdi.plugins.SDIIndexerPlugin;
|
||||||
import org.gcube.application.cms.serialization.Serialization;
|
import org.gcube.application.cms.serialization.Serialization;
|
||||||
import org.gcube.application.cms.tests.BasicPluginTest;
|
import org.gcube.application.cms.tests.BasicPluginTest;
|
||||||
import org.gcube.application.cms.tests.TestDocuments;
|
import org.gcube.application.cms.tests.TestDocuments;
|
||||||
import org.gcube.application.cms.tests.TestProfiles;
|
import org.gcube.application.cms.tests.TestProfiles;
|
||||||
|
import org.gcube.application.geoportal.common.model.configuration.Index;
|
||||||
import org.gcube.application.geoportal.common.model.document.Project;
|
import org.gcube.application.geoportal.common.model.document.Project;
|
||||||
import org.gcube.application.geoportal.common.model.document.accounting.Context;
|
import org.gcube.application.geoportal.common.model.document.accounting.Context;
|
||||||
import org.gcube.application.geoportal.common.model.document.accounting.User;
|
import org.gcube.application.geoportal.common.model.document.accounting.User;
|
||||||
|
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
|
||||||
|
import org.gcube.application.geoportal.common.model.useCaseDescriptor.UseCaseDescriptor;
|
||||||
|
import org.gcube.application.geoportal.common.utils.Files;
|
||||||
import org.gcube.application.geoportal.common.utils.tests.GCubeTest;
|
import org.gcube.application.geoportal.common.utils.tests.GCubeTest;
|
||||||
import org.gcube.spatial.data.geonetwork.utils.UserUtils;
|
import org.gcube.spatial.data.geonetwork.utils.UserUtils;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
import ucar.units.Base;
|
||||||
|
|
||||||
|
import static junit.framework.TestCase.assertEquals;
|
||||||
import static junit.framework.TestCase.assertTrue;
|
import static junit.framework.TestCase.assertTrue;
|
||||||
import static org.junit.Assume.assumeTrue;
|
import static org.junit.Assume.assumeTrue;
|
||||||
|
|
||||||
|
@ -47,4 +56,18 @@ public class IndexerTest extends BasicPluginTest {
|
||||||
assertTrue(response.prepareResult().getSpatialReference()!=null);
|
assertTrue(response.prepareResult().getSpatialReference()!=null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getIndex() throws ConfigurationException {
|
||||||
|
assumeTrue(GCubeTest.isTestInfrastructureEnabled());
|
||||||
|
IndexerPluginInterface plugin = (IndexerPluginInterface) plugins.get(SDIIndexerPlugin.DESCRIPTOR.getId());
|
||||||
|
UseCaseDescriptor descriptor=TestProfiles.profiles.get("profiledConcessioni");
|
||||||
|
|
||||||
|
Index index = plugin.getIndex(new BaseRequest(descriptor,getTestUser(),getTestContext())
|
||||||
|
.setParameter("workspace", Files.fixFilename(GCubeTest.getContext()+"_test-ws"))
|
||||||
|
.setParameter("indexName",Files.fixFilename(GCubeTest.getContext()+"test_index")));
|
||||||
|
System.out.println("Test Index Is "+index);
|
||||||
|
assertEquals(index.getType(), PostgisIndexer.INDEX_TYPE);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue