diff options
author | Lionel Elie Mamane <lionel@mamane.lu> | 2016-03-05 10:32:57 +0100 |
---|---|---|
committer | Lionel Elie Mamane <lionel@mamane.lu> | 2016-03-05 10:37:32 +0100 |
commit | 2491b3217677d51ff3b4ee1a04fcde7a3b8f52a9 (patch) | |
tree | 0fc6eaa4f1f5e90b637f117b852882436a0c2a4c /external/jfreereport | |
parent | 02734aa459ebf96b10e5da82240704e401563a4e (diff) |
tdf#97462 reportbuilder SECOND() force rounding to nearest nanosecond
Change-Id: I690a81997c79956fc19ddf83f958768d5e7a313e
Diffstat (limited to 'external/jfreereport')
-rw-r--r-- | external/jfreereport/UnpackedTarball_jfreereport_libformula.mk | 1 | ||||
-rw-r--r-- | external/jfreereport/patches/libformula-seconds_rounding.patch.1 | 37 |
2 files changed, 38 insertions, 0 deletions
diff --git a/external/jfreereport/UnpackedTarball_jfreereport_libformula.mk b/external/jfreereport/UnpackedTarball_jfreereport_libformula.mk index ec9d29d3b58c..59622966895a 100644 --- a/external/jfreereport/UnpackedTarball_jfreereport_libformula.mk +++ b/external/jfreereport/UnpackedTarball_jfreereport_libformula.mk @@ -18,6 +18,7 @@ $(eval $(call gb_UnpackedTarball_fix_end_of_line,jfreereport_libformula,\ $(eval $(call gb_UnpackedTarball_add_patches,jfreereport_libformula,\ external/jfreereport/patches/common_build.patch \ external/jfreereport/patches/libformula-time-notz.patch \ + external/jfreereport/patches/libformula-seconds_rounding.patch.1 \ external/jfreereport/patches/libformula-minutes_truncation.patch.1 \ external/jfreereport/patches/libformula-datevalue_truncation.patch.1 \ )) diff --git a/external/jfreereport/patches/libformula-seconds_rounding.patch.1 b/external/jfreereport/patches/libformula-seconds_rounding.patch.1 new file mode 100644 index 000000000000..369332d1a8f0 --- /dev/null +++ b/external/jfreereport/patches/libformula-seconds_rounding.patch.1 @@ -0,0 +1,37 @@ +diff -ur jfreereport_libformula.org/source/org/pentaho/reporting/libraries/formula/function/datetime/SecondFunction.java jfreereport_libformula/source/org/pentaho/reporting/libraries/formula/function/datetime/SecondFunction.java +--- jfreereport_libformula.org/source/org/pentaho/reporting/libraries/formula/function/datetime/SecondFunction.java 2016-03-05 09:43:06.121774691 +0100 ++++ jfreereport_libformula/source/org/pentaho/reporting/libraries/formula/function/datetime/SecondFunction.java 2016-03-05 09:51:04.810488511 +0100 +@@ -29,7 +29,7 @@ + import org.pentaho.reporting.libraries.formula.util.NumberUtil; + + /** +- * This function extracts the minute (0 through 59) from a time. ++ * This function extracts the seconds (0 through 59) from a time. + * + * @author Cedric Pronzato + */ +@@ -67,14 +67,15 @@ + + // time * 24 so that we get the full hours (which we remove later) + final BigDecimal bd = NumberUtil.getAsBigDecimal(n); +- final BigDecimal hours = bd.multiply(MINUTES_PER_DAY); +- final BigDecimal dayAndHoursAsInt = NumberUtil.performIntRounding(hours); +- final BigDecimal minutesFraction = hours.subtract(dayAndHoursAsInt); +- +- // Multiply the minutes with 60 to get the minutes as ints +- final BigDecimal seconds = minutesFraction.multiply(SECONDS); +- final BigDecimal secondsAsInt = NumberUtil.performIntRounding(seconds); ++ final BigDecimal minutes = bd.multiply(MINUTES_PER_DAY); ++ final BigDecimal dayHoursAndMinutesAsInt = NumberUtil.performIntRounding(minutes); ++ final BigDecimal secondsFraction = minutes.subtract(dayHoursAndMinutesAsInt); ++ ++ // Multiply the minutes with 60 to get the seconds as ints ++ final BigDecimal seconds = secondsFraction.multiply(SECONDS); ++ final BigDecimal nanoSeconds = seconds.setScale(9, BigDecimal.ROUND_HALF_UP); ++ final BigDecimal secondsAsInt = NumberUtil.performIntRounding(nanoSeconds); + + return new TypeValuePair(NumberType.GENERIC_NUMBER, secondsAsInt); + } +-} +\ No newline at end of file ++} |