From 960ff88053d1ac1de63df399aef8b265cff54bd9 Mon Sep 17 00:00:00 2001 From: Attilio Mattiocco Date: Thu, 21 Mar 2024 15:37:07 +0100 Subject: [PATCH] add option for gregorian dates in getTimeseries2 for R (for VTL users) --- BUILD | 2 +- .../oss/sdmx/api/PortableDataSet.java | 16 +++++----------- RJSDMX/R/SdmxClient.R | 10 ++++++---- RJSDMX/R/TSConverter.R | 7 +++++-- RJSDMX/inst/java/SDMX.jar | Bin 241926 -> 241899 bytes RJSDMX/man/getTimeSeriesTable.Rd | 2 ++ RJSDMX/man/getTimeSeriesTable2.Rd | 3 +++ STATA/jar/SDMX.jar | Bin 247120 -> 247093 bytes 8 files changed, 22 insertions(+), 18 deletions(-) diff --git a/BUILD b/BUILD index cd37d0c..814d50b 100644 --- a/BUILD +++ b/BUILD @@ -1 +1 @@ -20240321-1338 \ No newline at end of file +20240321-1536 \ No newline at end of file diff --git a/JAVA/src/main/java/it/bancaditalia/oss/sdmx/api/PortableDataSet.java b/JAVA/src/main/java/it/bancaditalia/oss/sdmx/api/PortableDataSet.java index 5a05a66..de00656 100644 --- a/JAVA/src/main/java/it/bancaditalia/oss/sdmx/api/PortableDataSet.java +++ b/JAVA/src/main/java/it/bancaditalia/oss/sdmx/api/PortableDataSet.java @@ -21,6 +21,9 @@ package it.bancaditalia.oss.sdmx.api; import java.io.Serializable; +import java.time.Year; +import java.time.YearMonth; +import java.time.temporal.TemporalAdjusters; import java.util.AbstractList; import java.util.ArrayList; import java.util.List; @@ -206,22 +209,13 @@ public String[] getGregorianTimeStamps() throws DataStructureException, SdmxInva } if(freq.equalsIgnoreCase("M")){ - if(time.endsWith("01") || time.endsWith("03") || time.endsWith("05") || time.endsWith("07") || - time.endsWith("08") || time.endsWith("10") || time.endsWith("12") ){ - result[i] = time + "-31"; - } - else if(time.endsWith("02")){ - result[i] = time + "-28"; // handle leap year - } - else{ - result[i] = time + "-30"; - } + result[i] = YearMonth.parse(time).atEndOfMonth().toString(); } else if(freq.equalsIgnoreCase("Q")){ result[i] = time.replace("Q1", "03-31").replace("Q2", "06-30").replace("Q3", "09-30").replace("Q4", "12-31"); } else if(freq.equalsIgnoreCase("A")){ - result[i] = ((String) getValueAt(i, timeCol)) + "-12-31"; + result[i] = Year.parse(time).atMonth(12).atEndOfMonth().toString(); } else if(freq.equalsIgnoreCase("H")){ result[i] = ((String) getValueAt(i, timeCol)).replace("S1", "06-30").replace("S2", "12-31"); diff --git a/RJSDMX/R/SdmxClient.R b/RJSDMX/R/SdmxClient.R index 9ee8090..98f0432 100644 --- a/RJSDMX/R/SdmxClient.R +++ b/RJSDMX/R/SdmxClient.R @@ -197,12 +197,13 @@ getTimeSeries2 <- function(provider, dataflow, key='', filter='', start='', end= #' @param id timeseries key #' @param end the end time - optional #' @param start the start time - optional +#' @param gregorianTime set to true to have all daily dates - optional #' @rdname getTimeSeriesTable #' @export -getTimeSeriesTable <- function(provider, id, start='', end='') { +getTimeSeriesTable <- function(provider, id, start='', end='', gregorianTime=F) { res <- J("it.bancaditalia.oss.sdmx.client.SdmxClientHandler")$getTimeSeriesTable(provider, id, start, end, FALSE, .jnull(), FALSE) #convert to an R data.frame - res = convertTSDF(res) + res = convertTSDF(res, , gregorianTime) return(res) } @@ -221,12 +222,13 @@ getTimeSeriesTable <- function(provider, id, start='', end='') { #' @param measures the comma separated list of measures to be returned - optional, default='all', 'none' for no measures #' @param updatedAfter return only changes after this date - optional #' @param includeHistory include history of revisions - optional, default=false +#' @param gregorianTime set to true to have all daily dates - optional #' @rdname getTimeSeriesTable2 #' @export -getTimeSeriesTable2 <- function(provider, dataflow, key='', filter='', start='', end='', attributes='all', measures='all', updatedAfter=.jnull(), includeHistory=FALSE) { +getTimeSeriesTable2 <- function(provider, dataflow, key='', filter='', start='', end='', attributes='all', measures='all', updatedAfter=.jnull(), includeHistory=FALSE, gregorianTime = F) { res <- J("it.bancaditalia.oss.sdmx.client.SdmxClientHandler")$getTimeSeriesTable2(provider, dataflow, key, filter, start, end, attributes, measures, updatedAfter, includeHistory) #convert to an R data.frame - res = convertTSDF(res) + res = convertTSDF(res, , gregorianTime) return(res) } diff --git a/RJSDMX/R/TSConverter.R b/RJSDMX/R/TSConverter.R index 6be0684..e41459d 100644 --- a/RJSDMX/R/TSConverter.R +++ b/RJSDMX/R/TSConverter.R @@ -86,10 +86,13 @@ convertTSList <- function (javaList, plain = F) { } # convert a java PortableDataSet -convertTSDF <- function (jtable) { +convertTSDF <- function (jtable, gregorianTime) { isNumeric <- .jcall(jtable,"Z","isNumeric"); dataflow <- .jcall(jtable,"Ljava/lang/String;","getDataflow"); - time = .jcall(jtable,"[Ljava/lang/String;","getTimeStamps", evalString = TRUE, evalArray = TRUE) + if(gregorianTime) + time = .jcall(jtable,"[Ljava/lang/String;","getGregorianTimeStamps", evalString = TRUE, evalArray = TRUE) + else + time = .jcall(jtable,"[Ljava/lang/String;","getTimeStamps", evalString = TRUE, evalArray = TRUE) values = .jcall(jtable,"[Ljava/lang/Object;","getObservations", evalArray = TRUE) if(isNumeric){ values = sapply(values, .jcall,"D","doubleValue") diff --git a/RJSDMX/inst/java/SDMX.jar b/RJSDMX/inst/java/SDMX.jar index 1a0be42e6807eb10c73b68101daa2fc460bc4245..6c18fb7b9826a626df5fd080f849f5b2002bb6a8 100644 GIT binary patch delta 10927 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 bs3_4D4r>hme`kOpNGU?sv3&7?WhVU(mn@1c diff --git a/RJSDMX/man/getTimeSeriesTable.Rd b/RJSDMX/man/getTimeSeriesTable.Rd index 47809cf..6365cf7 100644 --- a/RJSDMX/man/getTimeSeriesTable.Rd +++ b/RJSDMX/man/getTimeSeriesTable.Rd @@ -13,6 +13,8 @@ getTimeSeriesTable(provider, id, start='', end='') \item{start}{the start time - optional} + \item{gregorianTime}{set to true to have all daily dates - optional} + } \description{ Extract a list of time series identified by the parameters provided in input, and return a data.frame as result. diff --git a/RJSDMX/man/getTimeSeriesTable2.Rd b/RJSDMX/man/getTimeSeriesTable2.Rd index 6b3590c..5be9cb3 100644 --- a/RJSDMX/man/getTimeSeriesTable2.Rd +++ b/RJSDMX/man/getTimeSeriesTable2.Rd @@ -37,6 +37,9 @@ getTimeSeriesTable2( \item{updatedAfter}{return only changes after this date - optional} \item{includeHistory}{include history of revisions - optional, default=false} + + \item{gregorianTime}{set to true to have all daily dates - optional} + } \description{ Extract a list of time series identified by the parameters provided in input, and return a data.frame as result. diff --git a/STATA/jar/SDMX.jar b/STATA/jar/SDMX.jar index 2e7ae3b3b1f2b319317b3361bd533bcf0dcbf551..934921d6691e9b3ea4c737bdc10dd05336d04638 100644 GIT binary patch delta 11275 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 Rp;RGDBPv5*a0cX`@P7a&4lV!y