diff --git a/DESCRIPTION b/DESCRIPTION index c8717e7..9ce8585 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: geoflow -Version: 0.9999.20250204 -Date: 2025-02-04 +Version: 0.9999.20250205 +Date: 2025-02-05 Title: Orchestrate Geospatial (Meta)Data Management Workflows and Manage FAIR Services Description: An engine to facilitate the orchestration and execution of metadata-driven data management workflows, in compliance with FAIR (Findable, Accessible, Interoperable and Reusable) data management principles. By means of a pivot metadata model, relying on the DublinCore standard (), diff --git a/NAMESPACE b/NAMESPACE index aa83551..171e5a0 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -13,6 +13,7 @@ export(executeWorkflowJob) export(extract_cell_components) export(extract_kvp) export(extract_kvps) +export(fetch_layer_styles_from_dbi) export(filter_sf_by_cqlfilter) export(geoflowLogger) export(geoflow_action) diff --git a/R/geoflow_utils.R b/R/geoflow_utils.R index 4ad7ed7..891d3fe 100644 --- a/R/geoflow_utils.R +++ b/R/geoflow_utils.R @@ -753,6 +753,40 @@ create_geoflow_data_from_dbi <- function(dbi, schema, table){ return(entity_data) } +#'@name fetch_layer_styles_from_dbi +#'@aliases fetch_layer_styles_from_dbi +#'@title fetch_layer_styles_from_dbi +#' +#'@usage fetch_layer_styles_from_dbi(entity, dbi, schema, table) +#' +#'@param entity a \link{geoflow_entity} to be used and enriched +#'@param dbi a dbi connection +#'@param schema schema +#'@param table table +#'@return the entity, enriched with layer styles +#' +#'@author Emmanuel Blondel, \email{emmanuel.blondel1@@gmail.com} +#'@export +fetch_layer_styles_from_dbi <- function(entity, dbi, schema, table){ + if(DBI::dbExistsTable(dbi, "layer_styles")){ + #assume this is a special table + styles_sql = sprintf("select * from layer_styles where f_table_schema='%s' and f_table_name='%s'", + schema, table) + styles = DBI::dbGetQuery(dbi, statement = styles_sql) + if(nrow(styles)>0){ + styles[order(styles$useasdefault,decreasing = T),] #make sure we list the default one first + #add style names in geoflow_data + for(i in 1:nrow(styles)){ + style = styles[i,] + entity$data$addStyle(style$stylename) + } + #add style defs as entity resource to delegate copy after entity dir is created + entity$addResource("layer_styles", styles) + } + } + return(entity) +} + #'@name describeOGCRelation #'@aliases describeOGCRelation #'@title describeOGCRelation diff --git a/inst/metadata/entity/entity_handler_dbi_df.R b/inst/metadata/entity/entity_handler_dbi_df.R index c33c393..7206237 100644 --- a/inst/metadata/entity/entity_handler_dbi_df.R +++ b/inst/metadata/entity/entity_handler_dbi_df.R @@ -20,24 +20,8 @@ handle_entities_dbi_df = function(handler, source, config){ entity_data = create_geoflow_data_from_dbi(dbi, schema, expected_table_id) entity$setData(entity_data) - #associated styles - if(DBI::dbExistsTable(dbi, "layer_styles")){ - #assume this is a special table - styles_sql = sprintf("select * from layer_styles where f_table_schema='%s' and f_table_name='%s'", - schema, expected_table_id) - styles = DBI::dbGetQuery(dbi, statement = styles_sql) - if(nrow(styles)>0){ - styles[order(styles$useasdefault,decreasing = T),] #make sure we list the default one first - #add style names in geoflow_data - for(i in 1:nrow(styles)){ - style = styles[i,] - entity$data$addStyle(style$stylename) - } - #add style defs as entity resource to delegate copy after entity dir is created - entity$addResource("layer_styles", styles) - } - } - + #feth layer_styles (if any) from DBI + entity = fetch_layer_styles_from_dbi(entity, dbi, schema, expected_table_id) }else{ warnMsg = sprintf("No DB table named '%s' available, skipping data enrichment from DB!", expected_table_id) config$logger.warn(warnMsg) diff --git a/inst/metadata/entity/entity_handler_dbi_geometry_columns.R b/inst/metadata/entity/entity_handler_dbi_geometry_columns.R index 32bb7ff..55f0d53 100644 --- a/inst/metadata/entity/entity_handler_dbi_geometry_columns.R +++ b/inst/metadata/entity/entity_handler_dbi_geometry_columns.R @@ -54,23 +54,8 @@ handle_entities_dbi_geometry_columns <- function(handler, source, config, handle entity_data = create_geoflow_data_from_dbi(dbi, db_table$f_table_schema, db_table$f_table_name) entity$setData(entity_data) - #associated styles - if(DBI::dbExistsTable(dbi, "layer_styles")){ - #assume this is a special table - styles_sql = sprintf("select * from layer_styles where f_table_schema='%s' and f_table_name='%s'", - db_table$f_table_schema, db_table$f_table_name) - styles = DBI::dbGetQuery(dbi, statement = styles_sql) - if(nrow(styles)>0){ - styles[order(styles$useasdefault,decreasing = T),] #make sure we list the default one first - #add style names in geoflow_data - for(i in 1:nrow(styles)){ - style = styles[i,] - entity$data$addStyle(style$stylename) - } - #add style defs as entity resource to delegate copy after entity dir is created - entity$addResource("layer_styles", styles) - } - } + #feth layer_styles (if any) from DBI + entity = fetch_layer_styles_from_dbi(entity, dbi, db_table$f_table_schema, db_table$f_table_name) return(entity) }) diff --git a/man/fetch_layer_styles_from_dbi.Rd b/man/fetch_layer_styles_from_dbi.Rd new file mode 100644 index 0000000..1ed1b69 --- /dev/null +++ b/man/fetch_layer_styles_from_dbi.Rd @@ -0,0 +1,26 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/geoflow_utils.R +\name{fetch_layer_styles_from_dbi} +\alias{fetch_layer_styles_from_dbi} +\title{fetch_layer_styles_from_dbi} +\usage{ +fetch_layer_styles_from_dbi(entity, dbi, schema, table) +} +\arguments{ +\item{entity}{a \link{geoflow_entity} to be used and enriched} + +\item{dbi}{a dbi connection} + +\item{schema}{schema} + +\item{table}{table} +} +\value{ +the entity, enriched with layer styles +} +\description{ +fetch_layer_styles_from_dbi +} +\author{ +Emmanuel Blondel, \email{emmanuel.blondel1@gmail.com} +}