Legacy reports (not Sun/Oracle Report Builder ones) wizard show date
columns as an integer days-since-epoch instead of e.g. nicely
formatted "DD-MM-YY" (day-month-year) in *newly* *created* reports.

Commit message is explanatory; shout if you have other question.

Please apply to libreoffice-3-5 and libreoffice-3-5-5 branch.

I ask for libreoffice-3-5-5 because the fix seems rather safe to me:

 1) Protects a setProperty with test for existence of this property

 2) Initializes values before they are used (see the code of
    getTyperelatedFieldData in the same file)

-- 
Lionel
>From e834a95359738961037b7f747f55ac60a0b9e922 Mon Sep 17 00:00:00 2001
From: Lionel Elie Mamane <lio...@mamane.lu>
Date: Mon, 18 Jun 2012 16:28:14 +0200
Subject: [PATCH] fdo#43967 legacy report designer wizard formats dates
 improperly

1) Set FormatsSupplier property only if underlying object has one.
   Else, exception is thrown and the format is not set
2) getTyperelatedFieldData uses the format keys, so initialize them
   before call, not after.

Change-Id: I68c4c96a9da9a6afdc3ab8964e973588f53ee814
---
 .../com/sun/star/wizards/common/NumberFormatter.java   |    5 ++++-
 wizards/com/sun/star/wizards/db/FieldColumn.java       |   16 ++++++++--------
 2 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/wizards/com/sun/star/wizards/common/NumberFormatter.java b/wizards/com/sun/star/wizards/common/NumberFormatter.java
index 9c0feb5..bbf6385 100644
--- a/wizards/com/sun/star/wizards/common/NumberFormatter.java
+++ b/wizards/com/sun/star/wizards/common/NumberFormatter.java
@@ -201,7 +201,10 @@ public class NumberFormatter
             Locale oLocale = (Locale) Helper.getUnoPropertyValue(xNumberFormat, "Locale");
             int NewFormatKey = defineNumberFormat(FormatString, oLocale);
             XPropertySet xPSet = UnoRuntime.queryInterface(XPropertySet.class, _xFormatObject);
-            xPSet.setPropertyValue("FormatsSupplier", _oNumberFormatter.xNumberFormatter.getNumberFormatsSupplier());
+            if (xPSet.getPropertySetInfo().hasPropertyByName("FormatsSupplier"))
+            {
+                xPSet.setPropertyValue("FormatsSupplier", _oNumberFormatter.xNumberFormatter.getNumberFormatsSupplier());
+            }
             if (xPSet.getPropertySetInfo().hasPropertyByName("NumberFormat"))
             {
                 xPSet.setPropertyValue("NumberFormat", new Integer(NewFormatKey));
diff --git a/wizards/com/sun/star/wizards/db/FieldColumn.java b/wizards/com/sun/star/wizards/db/FieldColumn.java
index ebedd22..47b37df 100644
--- a/wizards/com/sun/star/wizards/db/FieldColumn.java
+++ b/wizards/com/sun/star/wizards/db/FieldColumn.java
@@ -154,13 +154,8 @@ public class FieldColumn
     {
         try
         {
-            m_xColPropertySet = UnoRuntime.queryInterface(XPropertySet.class, _xColumns.getByName(m_sFieldName));
-            ColIndex = JavaTools.FieldInList(_xColumns.getElementNames(), m_sFieldName) + 1;
-            m_nFieldType = AnyConverter.toInt(m_xColPropertySet.getPropertyValue("Type"));
-            getTyperelatedFieldData();
-
-             if (!bFormatKeysInitialized)
-             {
+            if (!bFormatKeysInitialized)
+            {
                 final NumberFormatter aNumberFormatter = oCommandMetaData.getNumberFormatter();
 
                 iDateFormatKey = aNumberFormatter.getDateFormatKey();
@@ -170,7 +165,12 @@ public class FieldColumn
                 iTimeFormatKey = aNumberFormatter.getTimeFormatKey();
                 iLogicalFormatKey = aNumberFormatter.getLogicalFormatKey();
                 bFormatKeysInitialized = true;
-             }
+            }
+
+            m_xColPropertySet = UnoRuntime.queryInterface(XPropertySet.class, _xColumns.getByName(m_sFieldName));
+            ColIndex = JavaTools.FieldInList(_xColumns.getElementNames(), m_sFieldName) + 1;
+            m_nFieldType = AnyConverter.toInt(m_xColPropertySet.getPropertyValue("Type"));
+            getTyperelatedFieldData();
         }
         catch (Exception e)
         {
-- 
1.7.10

_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to