Skip to content

Commit 5e03391

Browse files
committed
default asDataFrame for featuretype/featuremember (required for geoflow-shiny)
1 parent 932c0c0 commit 5e03391

File tree

4 files changed

+56
-5
lines changed

4 files changed

+56
-5
lines changed

DESCRIPTION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Package: geoflow
2-
Version: 0.9999.20250522
2+
Version: 0.9999.20250622
33
Date: 2025-05-22
44
Title: Orchestrate Geospatial (Meta)Data Management Workflows and Manage FAIR Services
55
Description: An engine to facilitate the orchestration and execution of metadata-driven data management workflows, in compliance with FAIR

R/geoflow_featuremember.R

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ geoflow_featuremember <- R6Class("geoflow_featuremember",
1818
#'@field id feature member ID
1919
id = NULL,
2020
#'@field type feature member type
21-
type = list(),
21+
type = NULL,
2222
#'@field code feature member code
2323
code = NULL,
2424
#'@field name feature member name
@@ -35,6 +35,8 @@ geoflow_featuremember <- R6Class("geoflow_featuremember",
3535
uom = NULL,
3636
#'@field registerId feature member register ID
3737
registerId = NULL,
38+
#'@field registerScript feature member register script
39+
registerScript = NULL,
3840

3941
#'@description Initializes a \link{geoflow_featuremember}
4042
#'@param type type
@@ -46,9 +48,10 @@ geoflow_featuremember <- R6Class("geoflow_featuremember",
4648
#'@param maxOccurs maxOccurs. Default is \code{NULL}
4749
#'@param uom unit of measure. Default is \code{NULL}
4850
#'@param registerId ID of the register associated to the feature type. Default is \code{NULL}
49-
initialize = function(type, code, name, def, defSource = NULL,
51+
#'@param registerScript source script providing the register functions. Default is \code{NULL}
52+
initialize = function(type = "attribute", code = NULL, name = NULL, def = NULL, defSource = NULL,
5053
minOccurs = NULL, maxOccurs = NULL, uom = NULL,
51-
registerId = NULL){
54+
registerId = NULL, registerScript = NULL){
5255
if(!(type %in% c("attribute", "variable") | startsWith(type, "gml:"))){
5356
stop("The member type should be either 'attribute' or 'variable' or be a GML geometry type")
5457
}
@@ -62,6 +65,25 @@ geoflow_featuremember <- R6Class("geoflow_featuremember",
6265
self$maxOccurs = maxOccurs
6366
self$uom = uom
6467
self$registerId = registerId
68+
self$registerScript = registerScript
69+
},
70+
71+
#'@description Converts as data.frame
72+
#'@return an object of class \link{data.frame}
73+
asDataFrame = function(){
74+
return(data.frame(
75+
MemberCode = if(!is.null(self$code)) self$code else "",
76+
MemberName = if(!is.null(self$name)) self$name else "",
77+
MemberType = if(!is.null(self$type)) self$type else "",
78+
MinOccurs = if(!is.null(self$minOccurs)) self$minOccurs else "",
79+
MaxOccurs = if(!is.null(self$maxOccurs)) self$maxOccurs else "",
80+
Definition = if(!is.null(self$def)) self$def else "",
81+
DefinitionSource = if(!is.null(self$defSource)) self$defSource else "",
82+
MeasurementUnit = if(!is.null(self$uom)) self$uom else "",
83+
registerId = if(!is.null(self$registerId)) self$registerId else "",
84+
registerScript = if(!is.null(self$registerScript)) self$registerScript else "",
85+
stringsAsFactors = F
86+
))
6587
}
6688
)
6789
)

R/geoflow_featuretype.R

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,34 @@ geoflow_featuretype <- R6Class("geoflow_featuretype",
5353
if(length(members)>0) out <- members[[1]]
5454
}
5555
return(out)
56+
},
57+
58+
#'@description Converts to data frame
59+
#'@return an object of class \link{data.frame}
60+
asDataFrame = function(){
61+
if(length(self$members)==0){
62+
return(data.frame(
63+
FeatureType = if(!is.null(self$id)) self$id else "",
64+
MemberCode = "",
65+
MemberName = "",
66+
MemberType = "",
67+
MinOccurs = "",
68+
MaxOccurs = "",
69+
Definition = "",
70+
DefinitionSource = "",
71+
MeasurementUnit = "",
72+
Register = "",
73+
RegisterScript = "",
74+
stringsAsFactors = F
75+
))
76+
}else{
77+
return(cbind(
78+
FeatureType = if(!is.null(self$id)) self$id else "",
79+
do.call("rbind", lapply(self$members, function(x){
80+
x$asDataFrame()
81+
}))
82+
))
83+
}
5684
}
5785
)
5886
)

inst/metadata/dictionary/dictionary_handler_df.R

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,8 @@ handle_dictionary_df <- function(handler, source, config){
6262
name = memberName, #i18n support
6363
def = memberDef, #i18n support
6464
defSource = defSource,
65-
registerId = ftm$RegisterId
65+
registerId = ftm$RegisterId,
66+
registerScript = ftm$RegisterScript
6667
)
6768
if(!is.null(ftm$MinOccurs)) member$minOccurs <- ftm$MinOccurs
6869
if(!is.null(ftm$MaxOccurs)) member$maxOccurs <- ftm$MaxOccurs

0 commit comments

Comments
 (0)