#' Funzione d'inizializzazione del grafo.
#'
#' Questa funzione va utilizzata nell'initialize S4 dell'oggetto `GrafoDB`
#'
#' @name init_grafo_impl
#' @rdname init-internal
#' @param object (creato da new)
#' @param tag tag del grafo (default=`cf10`)
#' @param con Connessione la DB
#' @return un istanza di grafo popolata correttamente secono i parametri (`tag`)
#' @note e' stata scorporata dall'initialize S4 per finalita' di debug
#' @include persistence.r sqlhelper.r
#' @include db.r persistence_utils.r
init_grafo_impl <- function(object, tag = "cf10", con = NULL) {
ln <- "GrafoDB.functions.init_grafo_impl"
if (is.null(tag)) {
tag <- "cf10"
} else {
tag <- tolower(tag)
}
object@edges <- hash::hash()
object@data <- hash::hash()
object@functions <- hash::hash()
object@touched <- character(0)
rutils::.debug("GRAFODB_ENV: %s", getenv(), name = ln)
object@tag <- tag
if (is.null(con)) {
con <- build_connection()
on.exit(disconnect(con))
}
archi <- load_edges(tag, con = con)
object <- resync(object, con = con)
network <- if (nrow(archi) > 0) {
archi <- archi[, c("partenza", "arrivo")]
igraph::graph.data.frame(as.data.frame(archi), directed = TRUE)
} else {
igraph::graph.empty(directed = TRUE)
}
object@network <- network
nomi <- names(object)
if (length(nomi) > 0) {
pending_names <- setdiff(nomi, igraph::V(network)$name)
network <- network + igraph::vertex(pending_names)
}
object@network <- network
df <- rilasci(tag, con = con)
dftag <- df[df$tag == tag, ]
if (nrow(dftag)) {
## il grafo esiste nel DB
object@timestamp <- as.numeric(dftag$last_updated)
if (interactive()) {
message(dftag$comment)
}
} else {
## il grafo non esiste nel DB
object <- create_new_grafo(object, tag, con = con)
}
object
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.