[Libreoffice-commits] core.git: 2 commits - reportbuilder/java reportdesign/source

Lionel Elie Mamane lionel at mamane.lu
Tue Jul 23 10:26:35 PDT 2013


 reportbuilder/java/libformula.properties                                                         |    4 
 reportbuilder/java/org/libreoffice/report/pentaho/layoutprocessor/FormatValueUtility.java        |   57 ++--------
 reportbuilder/java/org/libreoffice/report/pentaho/layoutprocessor/TableCellLayoutController.java |    4 
 reportbuilder/java/org/libreoffice/report/pentaho/output/OfficeDocumentReportTarget.java         |    2 
 reportdesign/source/core/sdr/RptObject.cxx                                                       |    2 
 reportdesign/source/filter/xml/xmlExportDocumentHandler.cxx                                      |    2 
 6 files changed, 24 insertions(+), 47 deletions(-)

New commits:
commit c4ed35820178c6c990311e8fb48ea91b39c05988
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Tue Jul 23 19:24:54 2013 +0200

    a date is a date, not a float
    
    Change-Id: Id9beab6a9cd9b7fa15ce0699b6eeb8a1e32448fe

diff --git a/reportbuilder/java/org/libreoffice/report/pentaho/layoutprocessor/FormatValueUtility.java b/reportbuilder/java/org/libreoffice/report/pentaho/layoutprocessor/FormatValueUtility.java
index d4c86c6..eca94e6 100644
--- a/reportbuilder/java/org/libreoffice/report/pentaho/layoutprocessor/FormatValueUtility.java
+++ b/reportbuilder/java/org/libreoffice/report/pentaho/layoutprocessor/FormatValueUtility.java
@@ -84,9 +84,9 @@ public class FormatValueUtility
         }
         else if (value instanceof Date)
         {
-            variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE_TYPE, "float");
-            ret = HSSFDateUtil.getExcelDate((Date) value).toString();
-            variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE, ret);
+            variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE_TYPE, "date");
+            ret = formatDate((Date) value);
+            variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, "date-value", ret);
         }
         else if (value instanceof Number)
         {
commit cab9b82fb31217223511afcea88ad7446999492b
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Tue Jul 23 19:14:04 2013 +0200

    fdo#67186 switch reporbuilder to null date == 1899-12-30
    
    This brings it in line with the default for other LibreOffice
    components (e.g. Calc), or with the only supported value (e.g. Writer
    tables), respectively.
    
    Configure Pentaho jfreereport to also take null date == 1899-12-30
    
    This combined allows reportbuilder to make absolutely no fiddly
    conversion itself, leaving them to jfreereport and Writer table
    cell format.
    
    Also:
    
     - Make absolutely no conversion itself, also e.g. for booleans.
    
     - ODF compliance: make the value-type match the set foo-value attribute.
    
     - Use value-type="void" instead of empty value-type="string"
    
    Change-Id: I67990232dbc9e86ac3fa37cd0c20edecb87cf8ee

diff --git a/reportbuilder/java/libformula.properties b/reportbuilder/java/libformula.properties
index f903736..79022b6 100644
--- a/reportbuilder/java/libformula.properties
+++ b/reportbuilder/java/libformula.properties
@@ -19,8 +19,8 @@
 
 ##
 # Any configuration will happen here.
-org.pentaho.reporting.libraries.formula.datesystem.StartYear=1930
-org.pentaho.reporting.libraries.formula.datesystem.ExcelHack=false
+org.pentaho.reporting.libraries.formula.ZeroDate=1899
+org.pentaho.reporting.libraries.formula.ExcelDateBugAware=false
 
 #
 # A list of all known functions.
diff --git a/reportbuilder/java/org/libreoffice/report/pentaho/layoutprocessor/FormatValueUtility.java b/reportbuilder/java/org/libreoffice/report/pentaho/layoutprocessor/FormatValueUtility.java
index 4c1b8dd..d4c86c6 100644
--- a/reportbuilder/java/org/libreoffice/report/pentaho/layoutprocessor/FormatValueUtility.java
+++ b/reportbuilder/java/org/libreoffice/report/pentaho/layoutprocessor/FormatValueUtility.java
@@ -85,7 +85,7 @@ public class FormatValueUtility
         else if (value instanceof Date)
         {
             variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE_TYPE, "float");
-            ret = HSSFDateUtil.getExcelDate((Date) value, false, 2).toString();
+            ret = HSSFDateUtil.getExcelDate((Date) value).toString();
             variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE, ret);
         }
         else if (value instanceof Number)
@@ -112,8 +112,7 @@ public class FormatValueUtility
         }
         else
         {
-            variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE_TYPE, "string");
-            variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, STRING_VALUE, "");
+            variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE_TYPE, "void");
         }
         return ret;
     }
@@ -122,61 +121,39 @@ public class FormatValueUtility
     {
         if (value instanceof Time)
         {
+            variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE_TYPE, "time");
             variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, "time-value", formatTime((Time) value));
         }
         else if (value instanceof java.sql.Date)
         {
-            if ("float".equals(valueType) || valueType == null)
-            {
-                // This is to work around fdo#63478
-                variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE, HSSFDateUtil.getExcelDate((Date) value, false, 0).toString());
-            }
-            else
-            {
-                variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, "date-value", formatDate((Date) value));
-            }
+            variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE_TYPE, "date");
+            variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, "date-value", formatDate((Date) value));
         }
         else if (value instanceof Date)
         {
-            // This is what we *should* do, but see fdo#63478
-            // variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE_TYPE, "date");
-            // variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, "date-value", formatDate((Date) value));
-            // so we do that instead to work around:
-            variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE_TYPE, "float");
-            variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE, HSSFDateUtil.getExcelDate((Date) value, false, 0).toString());
+            variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE_TYPE, "date");
+            variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, "date-value", formatDate((Date) value));
         }
         else if (value instanceof BigDecimal)
         {
-            if ("date".equals(valueType))
-            {
-                variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, "date-value", formatDate(HSSFDateUtil.getJavaDate((BigDecimal) value, false, 0)));
-            }
-            else
-            {
-                variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE, String.valueOf(value));
-            }
+            variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE_TYPE, "float");
+            variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE, String.valueOf(value));
         }
         else if (value instanceof Number)
         {
+            variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE_TYPE, "float");
             variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE, String.valueOf(value));
         }
         else if (value instanceof Boolean)
         {
-            if ("float".equals(valueType))
+            variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE_TYPE, "boolean");
+            if (Boolean.TRUE.equals(value))
             {
-                float fvalue = Boolean.TRUE.equals(value) ? 1 : 0;
-                variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE, String.valueOf(fvalue));
+                variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, BOOLEAN_VALUE, OfficeToken.TRUE);
             }
             else
             {
-                if (Boolean.TRUE.equals(value))
-                {
-                    variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, BOOLEAN_VALUE, OfficeToken.TRUE);
-                }
-                else
-                {
-                    variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, BOOLEAN_VALUE, OfficeToken.FALSE);
-                }
+                variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, BOOLEAN_VALUE, OfficeToken.FALSE);
             }
         }
         else if (value != null)
@@ -198,7 +175,7 @@ public class FormatValueUtility
         }
         else
         {
-            variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, STRING_VALUE, "");
+            variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE_TYPE, "void");
         }
     }
 
diff --git a/reportbuilder/java/org/libreoffice/report/pentaho/layoutprocessor/TableCellLayoutController.java b/reportbuilder/java/org/libreoffice/report/pentaho/layoutprocessor/TableCellLayoutController.java
index 79b5be6..6883482 100644
--- a/reportbuilder/java/org/libreoffice/report/pentaho/layoutprocessor/TableCellLayoutController.java
+++ b/reportbuilder/java/org/libreoffice/report/pentaho/layoutprocessor/TableCellLayoutController.java
@@ -78,7 +78,7 @@ public class TableCellLayoutController extends SectionLayoutController
             else if (!"string".equals(valueType))
             {
                 attributeMap.setAttribute(OfficeNamespaces.OFFICE_NS,
-                    FormatValueUtility.VALUE_TYPE, "string");
+                    FormatValueUtility.VALUE_TYPE, "void");
             }
         }
         catch (Exception e)
@@ -101,7 +101,7 @@ public class TableCellLayoutController extends SectionLayoutController
         if (!FormatValueUtility.shouldPrint(this, element))
         {
             attributeMap.setAttribute(OfficeNamespaces.OFFICE_NS,
-                                      FormatValueUtility.VALUE_TYPE, "string");
+                                      FormatValueUtility.VALUE_TYPE, "void");
             return null;
         }
         return FormatValueUtility.computeDataFlag(element, getFlowController());
diff --git a/reportbuilder/java/org/libreoffice/report/pentaho/output/OfficeDocumentReportTarget.java b/reportbuilder/java/org/libreoffice/report/pentaho/output/OfficeDocumentReportTarget.java
index 8d34a5d..4e731466 100644
--- a/reportbuilder/java/org/libreoffice/report/pentaho/output/OfficeDocumentReportTarget.java
+++ b/reportbuilder/java/org/libreoffice/report/pentaho/output/OfficeDocumentReportTarget.java
@@ -1715,7 +1715,7 @@ public abstract class OfficeDocumentReportTarget extends AbstractReportTarget
         final XmlWriter xmlWriter = getXmlWriter();
         xmlWriter.writeTag(OfficeNamespaces.TABLE_NS, "calculation-settings", null, XmlWriterSupport.OPEN);
         final AttributeMap nullDateAttributes = new AttributeMap();
-        nullDateAttributes.setAttribute(OfficeNamespaces.TABLE_NS, "date-value", "1900-01-01");
+        nullDateAttributes.setAttribute(OfficeNamespaces.TABLE_NS, "date-value", "1899-12-30");
         xmlWriter.writeTag(OfficeNamespaces.TABLE_NS, "null-date", buildAttributeList(nullDateAttributes), XmlWriterSupport.CLOSE);
         xmlWriter.writeCloseTag();
     }
diff --git a/reportdesign/source/core/sdr/RptObject.cxx b/reportdesign/source/core/sdr/RptObject.cxx
index 2118cdd..37f61dd 100644
--- a/reportdesign/source/core/sdr/RptObject.cxx
+++ b/reportdesign/source/core/sdr/RptObject.cxx
@@ -1239,7 +1239,7 @@ void OOle2Obj::initializeOle()
             uno::Reference< beans::XPropertySet > xChartProps( xCompSupp->getComponent(), uno::UNO_QUERY );
             if ( xChartProps.is() )
                 xChartProps->setPropertyValue("NullDate",
-                    uno::makeAny(util::DateTime(0,0,0,0,1,1,1900,false)));
+                    uno::makeAny(util::DateTime(0,0,0,0,30,12,1899,false)));
         }
     }
 }
diff --git a/reportdesign/source/filter/xml/xmlExportDocumentHandler.cxx b/reportdesign/source/filter/xml/xmlExportDocumentHandler.cxx
index d556f41..d6f917a 100644
--- a/reportdesign/source/filter/xml/xmlExportDocumentHandler.cxx
+++ b/reportdesign/source/filter/xml/xmlExportDocumentHandler.cxx
@@ -182,7 +182,7 @@ void SAL_CALL ExportDocumentHandler::startElement(const OUString & _sName, const
         m_xDelegatee->startElement(sTableCalc,NULL);
         pList = new SvXMLAttributeList();
         uno::Reference< xml::sax::XAttributeList > xNullAttr = pList;
-        pList->AddAttribute(lcl_createAttribute(XML_NP_TABLE,XML_DATE_VALUE),OUString("1900-01-01"));
+        pList->AddAttribute(lcl_createAttribute(XML_NP_TABLE,XML_DATE_VALUE),OUString("1899-12-30"));
 
         const OUString sNullDate = lcl_createAttribute(XML_NP_TABLE,XML_NULL_DATE);
         m_xDelegatee->startElement(sNullDate,xNullAttr);


More information about the Libreoffice-commits mailing list