if(is.null(subcollection))
stop(paste("Subcollection", relativePath, "doesn't exist."))
- if(is.character(content))
+ if("ArvadosFile" %in% class(content) ||
+ "Subcollection" %in% class(content))
{
- sapply(content, function(fileName)
+ subcollection$add(content)
+
+ content
+ }
+ else
+ {
+ contentClass <- paste(class(content), collapse = ", ")
+ stop(paste("Expected AravodsFile or Subcollection object, got",
+ paste0("(", contentClass, ")"), "."))
+ }
+ },
+
+ create = function(fileNames, relativePath = "")
+ {
+ if(relativePath == "" ||
+ relativePath == "." ||
+ relativePath == "./")
+ {
+ subcollection <- private$tree$.__enclos_env__$private$tree
+ }
+ else
+ {
+ if(endsWith(relativePath, "/") && nchar(relativePath) > 0)
+ relativePath <- substr(relativePath, 1, nchar(relativePath) - 1)
+
+ subcollection <- self$get(relativePath)
+ }
+
+ if(is.null(subcollection))
+ stop(paste("Subcollection", relativePath, "doesn't exist."))
+
+ if(is.character(fileNames))
+ {
+ arvadosFiles <- NULL
+ sapply(fileNames, function(fileName)
{
- subcollection$add(ArvadosFile$new(fileName))
+ newFile <- ArvadosFile$new(fileName)
+ subcollection$add(newFile)
+
+ arvadosFiles <<- c(arvadosFiles, newFile)
})
+
+ if(length(arvadosFiles) == 1)
+ return(arvadosFiles[[1]])
+ else
+ return(arvadosFiles)
}
- else if("ArvadosFile" %in% class(content) ||
- "Subcollection" %in% class(content))
+ else
{
- subcollection$add(content)
+ contentClass <- paste(class(fileNames), collapse = ", ")
+ stop(paste("Expected character vector, got",
+ paste0("(", contentClass, ")"), "."))
}
},
#Create new file in a collection
-#Call structure
-
-collection$add(arvadosFileOrSubcollectionOrFileName, optionalRelativePath)
+collection$create(fileNames, optionalRelativePath)
#Example
-collection$add("main.cpp", "cpp/src/")
+mainFile <- collection$create("main.cpp", "cpp/src/")
+fileList <- collection$create(c("main.cpp", lib.dll), "cpp/src/")
-#or
+--------------------------------------------------------------------------------------------------------------------------------
+
+#Add existing ArvadosFile or Subcollection to a collection
folder <- Subcollection$new("src")
file <- ArvadosFile$new("main.cpp")
collection$add(folder, "cpp")
-#Both examples will add file "main.cpp" in "./cpp/src/" folder if folder exists.
+#This examples will add file "main.cpp" in "./cpp/src/" folder if folder exists.
#If subcollection contains more files or folders they will be added recursively.
-#You can also add multiple files
-
-collection$add(c("path/to/my/file.cpp", "path/to/other/file.cpp"))
-
--------------------------------------------------------------------------------------------------------------------------------
#Write to existing file (Override current content of the file)