connectivity/source/commontools/dbconversion.cxx | 28 ++++++++++++++++------- connectivity/source/drivers/jdbc/Timestamp.cxx | 3 +- include/connectivity/dbconversion.hxx | 2 + 3 files changed, 24 insertions(+), 9 deletions(-)
New commits: commit 1b0a43142b27286e717f63c90363625a1aeff74c Author: Lionel Elie Mamane <[email protected]> Date: Thu Jun 27 08:59:58 2013 +0200 new dbtools::DBTypeConversion::toTimeStringS for time in second precision (no fractional second) Change-Id: I8bf448783b24fceae9a750f40887d6296999b203 diff --git a/connectivity/source/commontools/dbconversion.cxx b/connectivity/source/commontools/dbconversion.cxx index 92feaca..81248d5 100644 --- a/connectivity/source/commontools/dbconversion.cxx +++ b/connectivity/source/commontools/dbconversion.cxx @@ -81,6 +81,17 @@ namespace dbtools return OUString::createFromAscii(s); } //------------------------------------------------------------------ + OUString DBTypeConversion::toTimeStringS(const Time& rTime) + { + std::ostringstream ostr; + using std::setw; + ostr.fill('0'); + ostr << setw(2) << rTime.Hours << ":" + << setw(2) << rTime.Minutes << ":" + << setw(2) << rTime.Seconds; + return OUString::createFromAscii(ostr.str().c_str()); + } + //------------------------------------------------------------------ OUString DBTypeConversion::toTimeString(const Time& rTime) { std::ostringstream ostr; @@ -92,7 +103,6 @@ namespace dbtools << setw(9) << rTime.NanoSeconds; return OUString::createFromAscii(ostr.str().c_str()); } - //------------------------------------------------------------------ OUString DBTypeConversion::toDateTimeString(const DateTime& _rDateTime) { diff --git a/connectivity/source/drivers/jdbc/Timestamp.cxx b/connectivity/source/drivers/jdbc/Timestamp.cxx index 5337330..5080001 100644 --- a/connectivity/source/drivers/jdbc/Timestamp.cxx +++ b/connectivity/source/drivers/jdbc/Timestamp.cxx @@ -104,7 +104,7 @@ java_sql_Time::java_sql_Time( const ::com::sun::star::util::Time& _rOut ): java_ // Convert parameters OUString sDateStr; // java.sql.Time supports only whole seconds... - sDateStr = ::dbtools::DBTypeConversion::toTimeString(_rOut).copy(0, 8); + sDateStr = ::dbtools::DBTypeConversion::toTimeStringS(_rOut); args[0].l = convertwchar_tToJavaString(t.pEnv,sDateStr); // Turn off Java-Call for the constructor diff --git a/include/connectivity/dbconversion.hxx b/include/connectivity/dbconversion.hxx index 9536c79..4bc0ed7 100644 --- a/include/connectivity/dbconversion.hxx +++ b/include/connectivity/dbconversion.hxx @@ -141,6 +141,8 @@ namespace dbtools // return the date in the format %04d-%02d-%02d static OUString toDateString(const ::com::sun::star::util::Date& rDate); + // return the time in the format %02d:%02d:%02d + static OUString toTimeStringS(const ::com::sun::star::util::Time& rTime); // return the time in the format %02d:%02d:%02d.%09d static OUString toTimeString(const ::com::sun::star::util::Time& rTime); // return the DateTime in the format %04d-%02d-%02d %02d:%02d:%02d.%09d commit 83dc5c075884dfdb71952aa2617cc6f63dcc56ad Author: Lionel Elie Mamane <[email protected]> Date: Thu Jun 27 08:51:59 2013 +0200 fdo#66216 JDBC no fractional second in time format fractional second allowed in timestamp. But not in time. Don't ask why. Change-Id: I5415889ab4cf4835b8b0db7363b7d9eb0a332393 diff --git a/connectivity/source/drivers/jdbc/Timestamp.cxx b/connectivity/source/drivers/jdbc/Timestamp.cxx index a1d1bcd..5337330 100644 --- a/connectivity/source/drivers/jdbc/Timestamp.cxx +++ b/connectivity/source/drivers/jdbc/Timestamp.cxx @@ -103,7 +103,8 @@ java_sql_Time::java_sql_Time( const ::com::sun::star::util::Time& _rOut ): java_ jvalue args[1]; // Convert parameters OUString sDateStr; - sDateStr = ::dbtools::DBTypeConversion::toTimeString(_rOut); + // java.sql.Time supports only whole seconds... + sDateStr = ::dbtools::DBTypeConversion::toTimeString(_rOut).copy(0, 8); args[0].l = convertwchar_tToJavaString(t.pEnv,sDateStr); // Turn off Java-Call for the constructor commit ac146c16c0f4707aa8a26e479902a124e4e1b7e4 Author: Lionel Elie Mamane <[email protected]> Date: Thu Jun 27 08:51:02 2013 +0200 fdo#66216 fix DBTypeConversion::toTime overflow Change-Id: I0aba2344afde94226cfbac5b3221e827e6774b3a diff --git a/connectivity/source/commontools/dbconversion.cxx b/connectivity/source/commontools/dbconversion.cxx index c90c0e7..92feaca 100644 --- a/connectivity/source/commontools/dbconversion.cxx +++ b/connectivity/source/commontools/dbconversion.cxx @@ -354,7 +354,7 @@ namespace dbtools Time DBTypeConversion::toTime(double dVal) { sal_Int32 nDays = (sal_Int32)dVal; - sal_Int32 nNS = sal_Int32((dVal - (double)nDays) * fNanoSecondsPerDay + 0.5); + sal_Int64 nNS = static_cast<sal_Int64>((dVal - (double)nDays) * fNanoSecondsPerDay + 0.5); sal_Int16 nSign; if ( nNS < 0 ) @@ -368,7 +368,7 @@ namespace dbtools Time xRet; // normalize time // we have to sal_Int32 here because otherwise we get an overflow - sal_Int32 nNanoSeconds = nNS; + sal_Int64 nNanoSeconds = nNS; sal_Int32 nSeconds = nNanoSeconds / nanoSecInSec; sal_Int32 nMinutes = nSeconds / secInMin; commit b45b566e172938fd82f2be610c6c9dace87d4248 Author: Lionel Elie Mamane <[email protected]> Date: Thu Jun 27 08:50:37 2013 +0200 fdo#66216 fix DBTypeConversion::toTimeString format std::ostringstream::width is not sticky Change-Id: I32d77bec68506b7691a4f86dadb24e62fdc13d42 diff --git a/connectivity/source/commontools/dbconversion.cxx b/connectivity/source/commontools/dbconversion.cxx index cf45545..c90c0e7 100644 --- a/connectivity/source/commontools/dbconversion.cxx +++ b/connectivity/source/commontools/dbconversion.cxx @@ -28,6 +28,8 @@ #include <com/sun/star/util/Time.hpp> #include <com/sun/star/util/DateTime.hpp> #include <rtl/ustrbuf.hxx> +#include <sstream> +#include <iomanip> #define MAX_DAYS 3636532 @@ -82,11 +84,12 @@ namespace dbtools OUString DBTypeConversion::toTimeString(const Time& rTime) { std::ostringstream ostr; + using std::setw; ostr.fill('0'); - ostr.width(2); - ostr << rTime.Hours << ":" << rTime.Minutes << ":" << rTime.Seconds; - ostr.width(9); - ostr << "." << rTime.NanoSeconds; + ostr << setw(2) << rTime.Hours << ":" + << setw(2) << rTime.Minutes << ":" + << setw(2) << rTime.Seconds << "." + << setw(9) << rTime.NanoSeconds; return OUString::createFromAscii(ostr.str().c_str()); } commit 5a2c23ca59ba8e8b11e8397f80c5c6ff855c40b2 Author: Lionel Elie Mamane <[email protected]> Date: Wed Jun 26 23:17:52 2013 +0200 unused constant Change-Id: I72a27a05c9e3e49b17817c2566fbd7f02b7835c5 diff --git a/connectivity/source/commontools/dbconversion.cxx b/connectivity/source/commontools/dbconversion.cxx index 0150cdd..cf45545 100644 --- a/connectivity/source/commontools/dbconversion.cxx +++ b/connectivity/source/commontools/dbconversion.cxx @@ -33,7 +33,6 @@ namespace { - const double fMilliSecondsPerDay = 86400000.0; const sal_Int64 nanoSecInSec = 1000000000; const sal_Int16 secInMin = 60; const sal_Int16 minInHour = 60; _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
