---
title: "General ADC/SASAP data team use"
date: "Last updated `r Sys.Date()`"
output: 
    rmarkdown::html_vignette:
vignette: >
  %\VignetteIndexEntry{General data team use}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r setup, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  eval = FALSE
)
```


## Create attributes tables

The `create_attributes_table()` function allows editing of an attributes table, factor table, or custom units table in a Shiny environment.

Example:

```{r}
create_attributes_table(NULL, NULL)

data <- read.csv("Test.csv")
create_attributes_table(data, NULL)

attributes_table <- EML::get_attributes(eml@dataset@dataTable[[i]]@attributeList)$attributes
create_attributes_table(NULL, attributes_table)

create_attributes_table(data, attributes_table)
```


## Format custom units

The `return_eml_units()` function uses the udunits2 unit library to format an inputted unit into an EML unit form.

Example:

```{r}
# The following all return the same data frame
return_eml_units("kilometersPerSquareSecond") # preferred input form
return_eml_units("Kilometers per seconds squared")
return_eml_units("km/s^2")
return_eml_units("km s-2")
return_eml_units("s-2 /     kilometers-1") # works but is not advised
```


## Adding an ORCID to a creator

A complete data package requires that at minimum one creator includes an associated ORCID. The `add_creator_id()` function allows you to add an ORCID or reference ID to any creator in the EML.

Example:

```{r}
eml_path <- file.path(system.file(package = "datamgmt"), "dummy_meta_full.xml")
eml <- EML::read_eml(eml_path_original)
add_creator_id(eml, orcid = "https://orcid.org/WWWW-XXXX-YYYY-ZZZZ")

eml <- eml %>%
           add_creator_id(surname = "high-stakes",
                          orcid = "https://orcid.org/0000-1234-5678-4321",
                          id = "henrietta")

#use references to add updated contact info to Henrietta's other roles
eml@dataset@contact[[1]] <- new("contact", reference = "henrietta")
eml@dataset@metadataProvider[[1]] <- new("metadataProvider", reference = "henrietta")
```


## Quality assurance for data packages

The `qa_package()` function checks that the attributes in the EML match the values in the data.

Example:

```{r}
qa_package(mn, pid, 
           readAllData = FALSE, 
           check_attributes = TRUE, 
           check_creators = FALSE, 
           check_access = FALSE)
```
