diff aquainfra_ogc_api_processes.R @ 8:aec309f44d47 draft

planemo upload for repository https://github.com/AquaINFRA/tools-ecology/tree/master commit d6d779f958b5d3347769bdc83c885950ae975a42
author ecology
date Fri, 15 Aug 2025 11:19:22 +0000
parents c805cb663bac
children
line wrap: on
line diff
--- a/aquainfra_ogc_api_processes.R	Mon Jul 21 06:19:08 2025 +0000
+++ b/aquainfra_ogc_api_processes.R	Fri Aug 15 11:19:22 2025 +0000
@@ -166,6 +166,11 @@
 convertedKeys <- c()
 
 for (key in names(inputParameters)) {
+  value_no_spaces <- gsub(" ", "", inputParameters[[key]])
+  if (value_no_spaces == "") {
+    inputParameters[[key]] <- NULL
+  }
+
   if (is.character(inputParameters[[key]]) &&
       (endsWith(inputParameters[[key]], ".dat") ||
        endsWith(inputParameters[[key]], ".txt"))) {
@@ -180,7 +185,61 @@
     inputParameters[[key]] <- json_string
 
     convertedKeys <- append(convertedKeys, key)
-  } else {
+  } else if (
+      grepl("_object", key) &&
+      !is.null(inputParameters[[key]]) &&
+      !is.na(inputParameters[[key]]) &&
+      gsub(" ", "", inputParameters[[key]]) != ""
+    ) {
+    decoded_value <- gsub("__oc__", "{", inputParameters[[key]])
+    decoded_value <- gsub("__cc__", "}", decoded_value)
+    decoded_value <- gsub("__ob__", "[", decoded_value)
+    decoded_value <- gsub("__cb__", "]", decoded_value)
+    decoded_value <- gsub("__dq__", "\"", decoded_value)  # Optional: sometimes used for quotes
+    decoded_value <- gsub("__cn__", ":", decoded_value)   # Optional: used for colon in older versions
+
+    parsed_json <- fromJSON(decoded_value)
+    convertedKey <- gsub("_object", "", key)
+    convertedKeys <- append(convertedKeys, convertedKey)
+    #json_string <- toJSON(parsed_json, auto_unbox = FALSE)
+    inputParameters[[key]] <- parsed_json
+  } else if (grepl("_array", key)) {
+      keyParts <- strsplit(key, split = "_")[[1]]
+      type <- keyParts[length(keyParts)]
+      values <- inputParameters[[key]]
+      if (is.character(values) && grepl(",", values)) {
+        value_list <- unlist(strsplit(values, split = ","))
+      } else if (is.character(values)) {
+        value_list <- c(values)
+      }
+      
+      convertedValues <- c()
+
+      for (value in value_list) {
+        value <- as.character(value)
+        value <- gsub(" ", "", value)
+        #if(type == "integer") {
+        #  value <- as.integer(value)
+        #} else if (type == "numeric") {
+        #  value <- as.numeric(balue)
+        #} else if (type == "character") {
+        #  value <- as.character(value)
+        #  value <- gsub(" ", "", value)
+        #}
+        convertedValues <- append(convertedValues, value)
+        convertedKey <- ""
+        for (part in keyParts) {
+          if(part == "array") {
+            break
+          }
+          convertedKey <- paste(convertedKey, paste(part, "_", sep=""), sep="")
+        }
+        convertedKey <- substr(convertedKey, 1, nchar(convertedKey)-1)
+      }
+      inputParameters[[key]] <- convertedValues
+      convertedKeys <- append(convertedKeys, convertedKey)
+  }
+    else {
     if (!is.null(inputParameters[[key]])) {
       convertedKeys <- append(convertedKeys, key)
     }