view LipidmapsConn.R @ 1:253d531a0193 draft

planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit 36c9d8099c20a1ae848f1337c16564335dd8fb2b
author prog
date Sat, 03 Sep 2016 17:02:01 -0400
parents e66bb061af06
children 20d69a062da3
line wrap: on
line source

if ( ! exists('LipdmapsConn')) { # Do not load again if already loaded

	source('RemotedbConn.R')
	source('LipidmapsCompound.R')

	#####################
	# CLASS DECLARATION #
	#####################

	LipidmapsConn <- setRefClass("LipidmapsConn", contains = "RemotedbConn")

	###############
	# CONSTRUCTOR #
	###############

	LipidmapsConn$methods( initialize = function(...) {
		# From http://www.lipidmaps.org/data/structure/programmaticaccess.html:
		# If you write a script to automate calls to LMSD, please be kind and do not hit our server more often than once per 20 seconds. We may have to kill scripts that hit our server more frequently.
		callSuper(scheduler = UrlRequestScheduler$new(t = 20), ...)
	})

	##########################
	# GET ENTRY CONTENT TYPE #
	##########################

	LipidmapsConn$methods( getEntryContentType = function(type) {
		return(BIODB.CSV)
	})

	#####################
	# GET ENTRY CONTENT #
	#####################

	LipidmapsConn$methods( getEntryContent = function(type, id) {

		if (type == BIODB.COMPOUND) {

			# Initialize return values
			content <- rep(NA_character_, length(id))

			# Request
			content <- vapply(id, function(x) .self$.scheduler$getUrl(get.entry.url(BIODB.LIPIDMAPS, x, content.type = BIODB.CSV)), FUN.VALUE = '')

			return(content)
		}

		return(NULL)
	})

	################
	# CREATE ENTRY #
	################

	LipidmapsConn$methods( createEntry = function(type, content, drop = TRUE) {
		return(if (type == BIODB.COMPOUND) createLipidmapsCompoundFromCsv(content, drop = drop) else NULL)
	})
}