From 8b256424596267e62fc238cbac4110e560ace215 Mon Sep 17 00:00:00 2001 From: Fabio Sinibaldi Date: Thu, 27 Oct 2022 17:18:47 +0200 Subject: [PATCH] Support to Display Flag and CQL --- .../cms/sdi/engine/PostgisDBManagerI.java | 4 ++++ .../cms/sdi/engine/PostgisIndexer.java | 19 +++++++++++++++++++ .../cms/sdi/plugins/SDIIndexerPlugin.java | 12 +++++++++++- 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/sdi-plugins/src/main/java/org/gcube/application/cms/sdi/engine/PostgisDBManagerI.java b/sdi-plugins/src/main/java/org/gcube/application/cms/sdi/engine/PostgisDBManagerI.java index af1f623..d929eaa 100644 --- a/sdi-plugins/src/main/java/org/gcube/application/cms/sdi/engine/PostgisDBManagerI.java +++ b/sdi-plugins/src/main/java/org/gcube/application/cms/sdi/engine/PostgisDBManagerI.java @@ -15,6 +15,10 @@ public interface PostgisDBManagerI { void create(PostgisTable toCreate) throws SQLException; PreparedStatement prepareInsertStatement(PostgisTable target, boolean createTable, boolean geometryAsText) throws SQLException; + + PreparedStatement prepareStatement(String stmt); + + void deleteTable(String tableName) throws SQLException; void truncate(String tableName) throws SQLException; int deleteByFieldValue(PostgisTable target, PostgisTable.Field field, Object value) throws SQLException; diff --git a/sdi-plugins/src/main/java/org/gcube/application/cms/sdi/engine/PostgisIndexer.java b/sdi-plugins/src/main/java/org/gcube/application/cms/sdi/engine/PostgisIndexer.java index 32606d4..135a057 100644 --- a/sdi-plugins/src/main/java/org/gcube/application/cms/sdi/engine/PostgisIndexer.java +++ b/sdi-plugins/src/main/java/org/gcube/application/cms/sdi/engine/PostgisIndexer.java @@ -123,4 +123,23 @@ public class PostgisIndexer { } + public int updateIsVisible(Boolean value, List ids) throws SDIInteractionException { + log.info("Updating {}={} in index {} for projectIds {}",DBConstants.Defaults.DISPLAYED, value, table.getTablename(),ids); + try { + PreparedStatement ps = dbManager.prepareStatement("Update "+table.getTablename()+" SET "+DBConstants.Defaults.DISPLAYED+" = ? WHERE "+DBConstants.Defaults.PROJECT_ID+" = ?"); + ps.setBoolean(1,value); + int count = 0; + for(String s : ids){ + log.debug(""); + ps.setString(2,s); + count += ps.executeUpdate(); + } + log.info("Updated {} elements out of requested {} ids in table ",count,ids.size(),table.getTablename()); + return count; + }catch (Throwable t ){ + log.error("Unable to update {}={} in index {} for projectIds {}",DBConstants.Defaults.DISPLAYED, value, table.getTablename(),ids,t); + throw new SDIInteractionException("Unable to delete record in postgis index "+table.getTablename(),t); + } + } + } diff --git a/sdi-plugins/src/main/java/org/gcube/application/cms/sdi/plugins/SDIIndexerPlugin.java b/sdi-plugins/src/main/java/org/gcube/application/cms/sdi/plugins/SDIIndexerPlugin.java index ffdeb81..33bb86a 100644 --- a/sdi-plugins/src/main/java/org/gcube/application/cms/sdi/plugins/SDIIndexerPlugin.java +++ b/sdi-plugins/src/main/java/org/gcube/application/cms/sdi/plugins/SDIIndexerPlugin.java @@ -237,8 +237,18 @@ public class SDIIndexerPlugin extends SDIAbstractPlugin implements IndexerPlugin - // + //TODO SUPPORT HIDE AND DISPLAY + if(requestArguments.containsKey("_toHideIds")){ + List ids = requestArguments.getList("_toHideIds",String.class); + log.info("Requested to hide centroids {} ",ids); + indexer.updateIsVisible(false,ids); + } + if(requestArguments.containsKey("_toDisplayIds")){ + List ids = requestArguments.getList("_toDisplayIds",String.class); + log.info("Requested to hide centroids {} ",ids); + indexer.updateIsVisible(true,ids); + }