Support to Display Flag and CQL

This commit is contained in:
Fabio Sinibaldi 2022-10-27 16:04:13 +02:00
parent 0efb397af9
commit 40597d5769
4 changed files with 37 additions and 6 deletions

View File

@ -15,6 +15,11 @@ public class DBConstants {
public static final String DEFAULT_GEOMETRY_COLUMN_NAME="geom"; public static final String DEFAULT_GEOMETRY_COLUMN_NAME="geom";
public static final String INTERNAL_ID="internal_id"; public static final String INTERNAL_ID="internal_id";
public static final String PROJECT_ID="projectid";
public static final String DISPLAYED="displayed_project";
public static final String XCOORD_FIELD="xcoord"; public static final String XCOORD_FIELD="xcoord";
public static final String YCOORD_FIELD="ycoord"; public static final String YCOORD_FIELD="ycoord";
} }

View File

@ -7,6 +7,7 @@ import org.gcube.application.geoportal.common.model.legacy.BBOX;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.Types;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.text.NumberFormat; import java.text.NumberFormat;
import java.util.HashMap; import java.util.HashMap;
@ -55,6 +56,7 @@ public class PostgisTable {
@AllArgsConstructor @AllArgsConstructor
public enum FieldType{ public enum FieldType{
INT("int",java.sql.Types.INTEGER), INT("int",java.sql.Types.INTEGER),
BOOLEAN("boolean", java.sql.Types.BOOLEAN),
TEXT("text",java.sql.Types.LONGVARCHAR), TEXT("text",java.sql.Types.LONGVARCHAR),
FLOAT("float",java.sql.Types.FLOAT), FLOAT("float",java.sql.Types.FLOAT),
GEOMETRY("",0), GEOMETRY("",0),

View File

@ -5,6 +5,7 @@ import it.geosolutions.geoserver.rest.GeoServerRESTReader;
import it.geosolutions.geoserver.rest.decoder.RESTFeatureType; import it.geosolutions.geoserver.rest.decoder.RESTFeatureType;
import it.geosolutions.geoserver.rest.decoder.RESTLayer; import it.geosolutions.geoserver.rest.decoder.RESTLayer;
import it.geosolutions.geoserver.rest.encoder.GSLayerEncoder; import it.geosolutions.geoserver.rest.encoder.GSLayerEncoder;
import it.geosolutions.geoserver.rest.encoder.feature.GSAttributeEncoder;
import it.geosolutions.geoserver.rest.encoder.feature.GSFeatureTypeEncoder; import it.geosolutions.geoserver.rest.encoder.feature.GSFeatureTypeEncoder;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.bson.Document; import org.bson.Document;
@ -277,7 +278,11 @@ public class SDIManagerWrapper extends SDIManager{
} }
private static class CQL_GS_Feature extends GSFeatureTypeEncoder{
private static final String CQL = "CQL";
public void setCQL(String cql){this.set(CQL,cql);}
}
public GCubeSDILayer 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 {
@ -287,12 +292,15 @@ public class SDIManagerWrapper extends SDIManager{
.setHost(getGeoserverHostName()) .setHost(getGeoserverHostName())
.setLayerName(name); .setLayerName(name);
GSFeatureTypeEncoder fte=new GSFeatureTypeEncoder(); CQL_GS_Feature fte=new CQL_GS_Feature();
fte.setAbstract("Centroid layer for "+name); fte.setAbstract("Centroid layer for "+name);
fte.setEnabled(true); fte.setEnabled(true);
fte.setNativeCRS(WGS84_FULL); fte.setNativeCRS(WGS84_FULL);
fte.setTitle(name); fte.setTitle(name);
fte.setName(name); fte.setName(name);
fte.setCQL(DBConstants.Defaults.DISPLAYED+" = true");
fte.setLatLonBoundingBox(-180.0, -90.0, 180.0, 90.0, WGS84_FULL); fte.setLatLonBoundingBox(-180.0, -90.0, 180.0, 90.0, WGS84_FULL);
@ -302,6 +310,8 @@ public class SDIManagerWrapper extends SDIManager{
layerEncoder.setDefaultStyle(style); layerEncoder.setDefaultStyle(style);
layerEncoder.setEnabled(true); layerEncoder.setEnabled(true);
layerEncoder.setQueryable(true); layerEncoder.setQueryable(true);
try { try {
//Checking workspace //Checking workspace
createWorkspace(workspace); createWorkspace(workspace);

View File

@ -14,6 +14,7 @@ import org.gcube.application.cms.plugins.reports.InitializationReport;
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.BaseRequest;
import org.gcube.application.cms.plugins.requests.IndexDocumentRequest; import org.gcube.application.cms.plugins.requests.IndexDocumentRequest;
import org.gcube.application.cms.sdi.engine.DBConstants;
import org.gcube.application.cms.sdi.engine.PostgisIndexer; import org.gcube.application.cms.sdi.engine.PostgisIndexer;
import org.gcube.application.cms.sdi.engine.PostgisTable; import org.gcube.application.cms.sdi.engine.PostgisTable;
import org.gcube.application.cms.sdi.engine.bboxes.BBOXByCoordinatePaths; import org.gcube.application.cms.sdi.engine.bboxes.BBOXByCoordinatePaths;
@ -121,7 +122,6 @@ public class SDIIndexerPlugin extends SDIAbstractPlugin implements IndexerPlugin
log.debug("UseCaseDescriptor Configuration is {} ",profileConfiguration); log.debug("UseCaseDescriptor Configuration is {} ",profileConfiguration);
// ************* PREPARE RECORD // ************* PREPARE RECORD
@ -131,7 +131,10 @@ public class SDIIndexerPlugin extends SDIAbstractPlugin implements IndexerPlugin
if(requestArguments.containsKey("centroidRecord")) if(requestArguments.containsKey("centroidRecord"))
centroidDoc.putAll(requestArguments.get("centroidRecords",Document.class)); centroidDoc.putAll(requestArguments.get("centroidRecords",Document.class));
// DEFAULT VALUES // DEFAULT VALUES
centroidDoc.put("projectid", project.getId()); centroidDoc.put(DBConstants.Defaults.PROJECT_ID, project.getId());
centroidDoc.put(DBConstants.Defaults.DISPLAYED,true);
// ********************** EVALAUTE POSITION // ********************** EVALAUTE POSITION
log.debug("indexing UseCaseDescriptor {} : Evaluating Centroid... ", useCaseDescriptor.getId()); log.debug("indexing UseCaseDescriptor {} : Evaluating Centroid... ", useCaseDescriptor.getId());
@ -232,6 +235,13 @@ public class SDIIndexerPlugin extends SDIAbstractPlugin implements IndexerPlugin
log.info("Inserting Centroid {} into {} ",centroidDoc.toJson(),indexer); log.info("Inserting Centroid {} into {} ",centroidDoc.toJson(),indexer);
indexer.insert(centroidDoc); indexer.insert(centroidDoc);
//
report.setStatus(Report.Status.OK); report.setStatus(Report.Status.OK);
}catch (SDIInteractionException e){ }catch (SDIInteractionException e){
log.error("Unable to index "+request,e); log.error("Unable to index "+request,e);
@ -302,8 +312,10 @@ public class SDIIndexerPlugin extends SDIAbstractPlugin implements IndexerPlugin
private static class Fields{ private static class Fields{
public static final PostgisTable.Field PROJECT_ID= new PostgisTable.Field("projectid", PostgisTable.FieldType.TEXT); public static final PostgisTable.Field PROJECT_ID= new PostgisTable.Field(DBConstants.Defaults.PROJECT_ID, PostgisTable.FieldType.TEXT);
public static final PostgisTable.Field GEOM= new PostgisTable.Field("geom", PostgisTable.FieldType.GEOMETRY); public static final PostgisTable.Field GEOM= new PostgisTable.Field(DBConstants.Defaults.DEFAULT_GEOMETRY_COLUMN_NAME, PostgisTable.FieldType.GEOMETRY);
public static final PostgisTable.Field DISPLAY=new PostgisTable.Field(DBConstants.Defaults.DISPLAYED,PostgisTable.FieldType.BOOLEAN);
} }
@ -312,6 +324,8 @@ public class SDIIndexerPlugin extends SDIAbstractPlugin implements IndexerPlugin
List<PostgisTable.Field> fields = new ArrayList<>(); // TODO From UseCaseDescriptor List<PostgisTable.Field> fields = new ArrayList<>(); // TODO From UseCaseDescriptor
fields.add(Fields.GEOM); fields.add(Fields.GEOM);
fields.add(Fields.PROJECT_ID); fields.add(Fields.PROJECT_ID);
fields.add(Fields.DISPLAY);
mappings.forEach(m -> { mappings.forEach(m -> {
fields.add(new PostgisTable.Field(m.getName(), PostgisTable.FieldType.valueOf(m.getType()))); fields.add(new PostgisTable.Field(m.getName(), PostgisTable.FieldType.valueOf(m.getType())));