tdf#97462 reportbuilder SECOND() force rounding to nearest nanosecond
Change-Id: I690a81997c79956fc19ddf83f958768d5e7a313e
This commit is contained in:
@@ -18,6 +18,7 @@ $(eval $(call gb_UnpackedTarball_fix_end_of_line,jfreereport_libformula,\
|
|||||||
$(eval $(call gb_UnpackedTarball_add_patches,jfreereport_libformula,\
|
$(eval $(call gb_UnpackedTarball_add_patches,jfreereport_libformula,\
|
||||||
external/jfreereport/patches/common_build.patch \
|
external/jfreereport/patches/common_build.patch \
|
||||||
external/jfreereport/patches/libformula-time-notz.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-minutes_truncation.patch.1 \
|
||||||
external/jfreereport/patches/libformula-datevalue_truncation.patch.1 \
|
external/jfreereport/patches/libformula-datevalue_truncation.patch.1 \
|
||||||
))
|
))
|
||||||
|
37
external/jfreereport/patches/libformula-seconds_rounding.patch.1
vendored
Normal file
37
external/jfreereport/patches/libformula-seconds_rounding.patch.1
vendored
Normal file
@@ -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
|
||||||
|
+}
|
Reference in New Issue
Block a user