From 6bf6d275167a0ffe78a1c9a808a8f02e2a95bc32 Mon Sep 17 00:00:00 2001
From: Laura DeCicco <ldecicco@usgs.gov>
Date: Fri, 1 Aug 2014 16:52:22 -0500
Subject: [PATCH] Getting rid of duplicate code. Using getRawQWData instead.

---
 R/getWQPData.r | 90 ++++++++++++--------------------------------------
 1 file changed, 21 insertions(+), 69 deletions(-)

diff --git a/R/getWQPData.r b/R/getWQPData.r
index 582ebeea..b1995775 100644
--- a/R/getWQPData.r
+++ b/R/getWQPData.r
@@ -1,8 +1,8 @@
 #' Data Import from Water Quality Portal
 #'
-#' Imports data from Water Quality Portal web service. This function gets the data from here: \url{http://www.waterqualitydata.us}. This function is more general than getQWData
+#' Imports data from Water Quality Portal web service. This function gets the data from: \url{http://www.waterqualitydata.us}. This function is more general than getQWData
 #' because it allows for other agencies rather than the USGS.  Therefore, the 5-digit parameter code cannot be used.
-#' Instead, this function uses characteristicName.  A complete list can be found here \url{http://www.waterqualitydata.us/Codes/Characteristicname}
+#' Instead, this function uses characteristicName.  A complete list can be found here 
 #'
 #' @param siteNumber string site number.  If USGS, it should be in the form :'USGS-XXXXXXXXX...'
 #' @param characteristicName string
@@ -16,77 +16,29 @@
 #' @import RCurl
 #' @examples
 #' # These examples require an internet connection to run
-#' getWQPData('USGS-01594440','Chloride', '', '')
-#' getWQPData('WIDNR_WQX-10032762','Specific conductance', '', '')
+#' Chloride <- getWQPData('USGS-01594440','Chloride', '', '')
+#' SC <- getWQPData('WIDNR_WQX-10032762','Specific conductance', '', '')
+#' NWIS_Cl <- getWQPData('USGS-04024000','30234', '', '')
 getWQPData <- function(siteNumber,characteristicName,StartDate,EndDate,interactive=TRUE){
-
-#   require(RCurl)
-  
-  StartDate <- formatCheckDate(StartDate, "StartDate", interactive=interactive)
-  EndDate <- formatCheckDate(EndDate, "EndDate", interactive=interactive)
   
-  dateReturn <- checkStartEndDate(StartDate, EndDate, interactive=interactive)
-  StartDate <- dateReturn[1]
-  EndDate <- dateReturn[2]
-  
-  if (nzchar(StartDate)){
-    StartDate <- format(as.Date(StartDate), format="%m-%d-%Y")
-  }
-  if (nzchar(EndDate)){
-    EndDate <- format(as.Date(EndDate), format="%m-%d-%Y")
+  retval <- getRawQWData(siteNumber=siteNumber,
+                         ParameterCd=characteristicName,
+                         StartDate=StartDate,
+                         EndDate=EndDate,
+                         interactive=interactive)
+  #Check for pcode:
+  if(all(nchar(characteristicName) == 5)){
+    suppressWarnings(pCodeLogic <- all(!is.na(as.numeric(characteristicName))))
+  } else {
+    pCodeLogic <- FALSE
   }
-  
-  characteristicName <- URLencode(characteristicName)
-  
-  baseURL <- "http://www.waterqualitydata.us/Result/search?siteid="
-  url <- paste(baseURL,
-               siteNumber,
-               "&characteristicName=",
-               characteristicName,   # to get multi-parameters, use a semicolen 
-               "&startDateLo=",
-               StartDate,
-               "&startDateHi=",
-               EndDate,
-               "&countrycode=US&mimeType=tsv",sep = "")
-  h <- basicHeaderGatherer()
-  doc <- getURI(url, headerfunction = h$update)
-  numToBeReturned <- as.numeric(h$value()["Total-Result-Count"])
-  
-  suppressWarnings(retval <- read.delim(url, header = TRUE, quote="\"", dec=".", sep='\t', colClasses=c('character'), fill = TRUE))
-  
-  qualifier <- ifelse((retval$ResultDetectionConditionText == "Not Detected" | 
-                         retval$ResultDetectionConditionText == "Detected Not Quantified" |
-                         retval$ResultMeasureValue < retval$DetectionQuantitationLimitMeasure.MeasureValue),"<","")
-  
-  correctedData<-ifelse((nchar(qualifier)==0),retval$ResultMeasureValue,retval$DetectionQuantitationLimitMeasure.MeasureValue)
-  test <- data.frame(retval$CharacteristicName)
-  
-  #   test$dateTime <- as.POSIXct(strptime(paste(retval$ActivityStartDate,retval$ActivityStartTime.Time,sep=" "), "%Y-%m-%d %H:%M:%S"))
-  test$dateTime <- as.Date(retval$ActivityStartDate, "%Y-%m-%d")
-  
-  originalLength <- nrow(test)
-  
-  if (!is.na(numToBeReturned)){
-    if(originalLength != numToBeReturned) warning(numToBeReturned, " sample results were expected, ", originalLength, " were returned")
-    
-    test$qualifier <- qualifier
-    test$value <- as.numeric(correctedData)
-    
-    test <- test[!is.na(test$dateTime),]
-    newLength <- nrow(test)
-    if (originalLength != newLength){
-      numberRemoved <- originalLength - newLength
-      warningMessage <- paste(numberRemoved, " rows removed because no date was specified", sep="")
-      warning(warningMessage)
-    }
-    
-    colnames(test)<- c("CharacteristicName","dateTime","qualifier","value")
-    data <- reshape(test, idvar="dateTime", timevar = "CharacteristicName", direction="wide")    
-    data$dateTime <- format(data$dateTime, "%Y-%m-%d")
-    data$dateTime <- as.Date(data$dateTime)
-    return(data)
+
+  if(nrow(retval) > 0){
+    data <- processQWData(retval,pCodeLogic)
   } else {
-    warning("No data retrieved")
+    data <- NULL
   }
   
+  return(data)
+  
 }
-- 
GitLab