[ARVADOS] updated: 1.1.1-171-gc1d564b
Git user
git at public.curoverse.com
Wed Dec 6 11:04:57 EST 2017
Summary of changes:
sdk/R/.RData | Bin 112519 -> 140128 bytes
sdk/R/NAMESPACE | 5 +++
sdk/R/R/ArvadosFile.R | 20 +++++++++
sdk/R/R/Collection.R | 94 ++++++++++++++++++++++++++++++++++++---
sdk/R/R/Subcollection.R | 26 +++++++++++
sdk/R/man/ArvadosFile-class.Rd | 15 +++++++
sdk/R/man/Collection-class.Rd | 4 +-
sdk/R/man/Subcollection-class.Rd | 15 +++++++
8 files changed, 170 insertions(+), 9 deletions(-)
create mode 100644 sdk/R/R/ArvadosFile.R
create mode 100644 sdk/R/R/Subcollection.R
create mode 100644 sdk/R/man/ArvadosFile-class.Rd
create mode 100644 sdk/R/man/Subcollection-class.Rd
via c1d564b0e5f95c54d822d39cf1715d93d293c70b (commit)
from d859cab46630d46aa1ae7b1d8de7ec92d0a4b8fa (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
commit c1d564b0e5f95c54d822d39cf1715d93d293c70b
Author: Fuad Muhic <fmuhic at capeannenterprises.com>
Date: Wed Dec 6 17:03:40 2017 +0100
Created in-memory representation of collection file structure.
Arvados-DCO-1.1-Signed-off-by: Fuad Muhic <fmuhic at capeannenterprises.com>
diff --git a/sdk/R/.RData b/sdk/R/.RData
index 0f875af..8695f3f 100644
Binary files a/sdk/R/.RData and b/sdk/R/.RData differ
diff --git a/sdk/R/NAMESPACE b/sdk/R/NAMESPACE
index f9e576a..b29927f 100644
--- a/sdk/R/NAMESPACE
+++ b/sdk/R/NAMESPACE
@@ -1,4 +1,9 @@
# Generated by roxygen2: do not edit by hand
export(Arvados)
+export(ArvadosFile)
+export(Collection)
+export(Subcollection)
+exportClasses(ArvadosFile)
exportClasses(Collection)
+exportClasses(Subcollection)
diff --git a/sdk/R/R/ArvadosFile.R b/sdk/R/R/ArvadosFile.R
new file mode 100644
index 0000000..ab9938a
--- /dev/null
+++ b/sdk/R/R/ArvadosFile.R
@@ -0,0 +1,20 @@
+#' ArvadosFile Class
+#'
+#' @details
+#' Todo: Update description
+#' Subcollection
+#'
+#' @export ArvadosFile
+#' @exportClass ArvadosFile
+ArvadosFile <- setRefClass(
+ "ArvadosFile",
+ fields = list(
+ name = "character"
+ ),
+ methods = list(
+ initialize = function(subcollectionName)
+ {
+ name <<- subcollectionName
+ }
+ )
+)
diff --git a/sdk/R/R/Collection.R b/sdk/R/R/Collection.R
index cf2a612..9a0cdfd 100644
--- a/sdk/R/R/Collection.R
+++ b/sdk/R/R/Collection.R
@@ -1,7 +1,9 @@
source("./R/Arvados.R")
source("./R/HttpParser.R")
+source("./R/Subcollection.R")
+source("./R/ArvadosFile.R")
-#' Collection Object
+#' Collection Class
#'
#' @details
#' Todo: Update description
@@ -28,7 +30,9 @@ source("./R/HttpParser.R")
#' @param trash_at No description
#' @param is_trashed No description
#'
-#' @export
+#' @export Collection
+
+#' @exportClass Collection
Collection <- setRefClass(
"Collection",
@@ -62,7 +66,6 @@ Collection <- setRefClass(
initialize = function(api, uuid)
{
-
result <- api$collection_get(uuid)
# Private members
@@ -87,9 +90,6 @@ Collection <- setRefClass(
trash_at <<- result$trash_at
is_trashed <<- result$is_trashed
-
- #Public methods
-
# Private methods
getCollectionContent <<- function()
{
@@ -107,7 +107,87 @@ Collection <- setRefClass(
HttpParser()$parseWebDAVResponse(response, uri)
}
- items <<- getCollectionContent()
+ createCollectionContentTree <- function(fileStructure)
+ {
+ #Todo(Fudo): Refactor this.
+ treeBranches <- sapply(fileStructure, function(filePath)
+ {
+ fileWithPath <- unlist(stringr::str_split(filePath, "/"))
+
+ file <- fileWithPath[length(fileWithPath), drop = T]
+ file <- ArvadosFile(file)
+
+ folders <- fileWithPath[-length(fileWithPath)]
+
+ subcollections <- sapply(folders, function(folder)
+ {
+ folder <- Subcollection(folder)
+ })
+
+ if(length(subcollections) > 0)
+ {
+ bottomFolder <- subcollections[[length(subcollections)]]
+ bottomFolder$add(file)
+
+ if(length(subcollections) == 1)
+ {
+ return(bottomFolder)
+ }
+ else
+ {
+ # Link folders in hierarchy. At the bottom will always be a file.
+ for(subcollectionIndex in 1:(length(subcollections) - 1))
+ {
+ subcollections[[subcollectionIndex]]$add(subcollections[[subcollectionIndex + 1]])
+ }
+
+ subcollections[[1]]
+ }
+ }
+ else
+ {
+ file
+ }
+ })
+
+ root <- Subcollection(".")
+
+ addIfExists <- function(firstNode, secondNode)
+ {
+ firstNodeContent <- sapply(firstNode$content, function(node) {node$name})
+ if(length(firstNodeContent) == 0)
+ {
+ firstNode$add(secondNode)
+ return()
+ }
+
+ matchPosition <- match(secondNode$name, firstNodeContent, -1)
+ if(matchPosition != -1)
+ {
+ addIfExists(firstNode$content[[matchPosition]], secondNode$content[[1]])
+ }
+ else
+ {
+ firstNode$add(secondNode)
+ }
+ }
+
+ sapply(treeBranches, function(branch)
+ {
+ addIfExists(root, branch)
+ })
+
+ root
+ }
+
+ #Todo(Fudo): This is dummy data. Real content will come from WebDAV server.
+ testFileStructure <- c("math.h", "main.cpp",
+ "java/render.java", "java/test/observer.java",
+ "java/test/observable.java",
+ "csharp/this.cs", "csharp/is.cs",
+ "csharp/dummy.cs", "csharp/file.cs")
+ #items <<- getCollectionContent()
+ items <<- createCollectionContentTree(testFileStructure)
}
)
)
diff --git a/sdk/R/R/Subcollection.R b/sdk/R/R/Subcollection.R
new file mode 100644
index 0000000..e4b132b
--- /dev/null
+++ b/sdk/R/R/Subcollection.R
@@ -0,0 +1,26 @@
+#' Subcollection Class
+#'
+#' @details
+#' Todo: Update description
+#' Subcollection
+#'
+#' @export Subcollection
+#' @exportClass Subcollection
+Subcollection <- setRefClass(
+ "Subcollection",
+ fields = list(
+ name = "character",
+ content = "list"
+ ),
+ methods = list(
+ initialize = function(subcollectionName)
+ {
+ name <<- subcollectionName
+ content <<- list()
+ },
+ add = function(subcollectionContent)
+ {
+ content <<- c(content, subcollectionContent)
+ }
+ )
+)
diff --git a/sdk/R/man/ArvadosFile-class.Rd b/sdk/R/man/ArvadosFile-class.Rd
new file mode 100644
index 0000000..7d46419
--- /dev/null
+++ b/sdk/R/man/ArvadosFile-class.Rd
@@ -0,0 +1,15 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/ArvadosFile.R
+\docType{class}
+\name{ArvadosFile-class}
+\alias{ArvadosFile-class}
+\alias{ArvadosFile}
+\title{ArvadosFile Class}
+\description{
+ArvadosFile Class
+}
+\details{
+Todo: Update description
+Subcollection
+}
+
diff --git a/sdk/R/man/Collection-class.Rd b/sdk/R/man/Collection-class.Rd
index 79a771a..b84bbbd 100644
--- a/sdk/R/man/Collection-class.Rd
+++ b/sdk/R/man/Collection-class.Rd
@@ -4,7 +4,7 @@
\name{Collection-class}
\alias{Collection-class}
\alias{Collection}
-\title{Collection Object}
+\title{Collection Class}
\arguments{
\item{uuid}{Object ID}
@@ -47,7 +47,7 @@
\item{is_trashed}{No description}
}
\description{
-Collection Object
+Collection Class
}
\details{
Todo: Update description
diff --git a/sdk/R/man/Subcollection-class.Rd b/sdk/R/man/Subcollection-class.Rd
new file mode 100644
index 0000000..72449fa
--- /dev/null
+++ b/sdk/R/man/Subcollection-class.Rd
@@ -0,0 +1,15 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/Subcollection.R
+\docType{class}
+\name{Subcollection-class}
+\alias{Subcollection-class}
+\alias{Subcollection}
+\title{Subcollection Class}
+\description{
+Subcollection Class
+}
+\details{
+Todo: Update description
+Subcollection
+}
+
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list