[Libreoffice-commits] .: writerfilter/inc writerfilter/source

Cédric Bosdonnat cbosdo at kemper.freedesktop.org
Thu Mar 31 03:45:14 PDT 2011


 writerfilter/inc/ooxml/OOXMLDocument.hxx               |   10 ++---
 writerfilter/source/ooxml/Handler.cxx                  |    6 +--
 writerfilter/source/ooxml/OOXMLDocumentImpl.cxx        |   30 ++++++++---------
 writerfilter/source/ooxml/OOXMLDocumentImpl.hxx        |   14 +++----
 writerfilter/source/ooxml/OOXMLFastContextHandler.cxx  |   26 +++++++-------
 writerfilter/source/ooxml/OOXMLFastContextHandler.hxx  |   12 +++---
 writerfilter/source/ooxml/OOXMLFastDocumentHandler.cxx |    6 +--
 writerfilter/source/ooxml/OOXMLFastDocumentHandler.hxx |    4 +-
 writerfilter/source/ooxml/OOXMLParserState.cxx         |    6 +--
 writerfilter/source/ooxml/OOXMLParserState.hxx         |    6 +--
 writerfilter/source/ooxml/model.xml                    |   16 ++++-----
 11 files changed, 68 insertions(+), 68 deletions(-)

New commits:
commit 976e2c074b7abf9ad500a0cc7664110820512312
Author: Cédric Bosdonnat <cedricbosdo at openoffice.org>
Date:   Thu Mar 31 12:43:00 2011 +0200

    fdo#34489: fix the docx import of comments, properly resolve all ids
    
    Comment, footnote and endnote ids are integer values, not strings. The
    code was using string though the comments ids where defined as integers
    in the model.xml. All are changed to integer values from now.

diff --git a/writerfilter/inc/ooxml/OOXMLDocument.hxx b/writerfilter/inc/ooxml/OOXMLDocument.hxx
index 0566e19..ab25fb5 100644
--- a/writerfilter/inc/ooxml/OOXMLDocument.hxx
+++ b/writerfilter/inc/ooxml/OOXMLDocument.hxx
@@ -160,7 +160,7 @@ public:
      */
     virtual void resolveFootnote(Stream & rStream,
                                  const Id & rNoteType,
-                                 const rtl::OUString & rNoteId) = 0;
+                                 const sal_Int32 nNoteId) = 0;
     /**
        Resolves an endnote to a stream handler.
 
@@ -173,7 +173,7 @@ public:
      */
     virtual void resolveEndnote(Stream & rStream,
                                 const Id & rNoteType,
-                                const rtl::OUString & rNoteId) = 0;
+                                const sal_Int32 NoteId) = 0;
 
     /**
        Resolves a comment to a stream handler.
@@ -182,7 +182,7 @@ public:
        @param rComment      id of the comment to resolve
      */
     virtual void resolveComment(Stream & rStream,
-                                const rtl::OUString & rCommentId) = 0;
+                                const sal_Int32 nCommentId) = 0;
 
     /**
        Resolves a picture to a stream handler.
@@ -241,8 +241,8 @@ public:
     virtual uno::Reference<io::XInputStream> getStorageStream() = 0;
     virtual uno::Reference<io::XInputStream> getInputStreamForId
     (const ::rtl::OUString & rId) = 0;
-    virtual void setXNoteId(const rtl::OUString & rId) = 0;
-    virtual const ::rtl::OUString & getXNoteId() const = 0;
+    virtual void setXNoteId(const sal_Int32 nId) = 0;
+    virtual sal_Int32 getXNoteId() const = 0;
     virtual void setXNoteType(const Id & nId) = 0;
     virtual const Id & getXNoteType() const = 0;
     virtual const ::rtl::OUString & getTarget() const = 0;
diff --git a/writerfilter/source/ooxml/Handler.cxx b/writerfilter/source/ooxml/Handler.cxx
index af0616a..cad510a 100644
--- a/writerfilter/source/ooxml/Handler.cxx
+++ b/writerfilter/source/ooxml/Handler.cxx
@@ -51,7 +51,7 @@ void OOXMLFootnoteHandler::attribute(Id name, Value & val)
     switch (name)
     {
     case NS_ooxml::LN_CT_FtnEdnRef_id:
-        mpFastContext->resolveFootnote(val.getString());
+        mpFastContext->resolveFootnote(sal_Int32(val.getInt()));
         break;
     default:
         break;
@@ -79,7 +79,7 @@ void OOXMLEndnoteHandler::attribute(Id name, Value & val)
     switch (name)
     {
     case NS_ooxml::LN_CT_FtnEdnRef_id:
-        mpFastContext->resolveEndnote(val.getString());
+        mpFastContext->resolveEndnote(sal_Int32(val.getInt()));
         break;
     default:
         break;
@@ -107,7 +107,7 @@ void OOXMLCommentHandler::attribute(Id name, Value & val)
     switch (name)
     {
     case NS_ooxml::LN_CT_Markup_id:
-        mpFastContext->resolveComment(val.getString());
+        mpFastContext->resolveComment(val.getInt());
         break;
     default:
         ;
diff --git a/writerfilter/source/ooxml/OOXMLDocumentImpl.cxx b/writerfilter/source/ooxml/OOXMLDocumentImpl.cxx
index 596ac0c..73403d2 100644
--- a/writerfilter/source/ooxml/OOXMLDocumentImpl.cxx
+++ b/writerfilter/source/ooxml/OOXMLDocumentImpl.cxx
@@ -76,7 +76,7 @@ void OOXMLDocumentImpl::resolveFastSubStream(Stream & rStreamHandler,
             new OOXMLFastDocumentHandler(xContext);
         pDocHandler->setStream(&rStreamHandler);
         pDocHandler->setDocument(this);
-        pDocHandler->setXNoteId(msXNoteId);
+        pDocHandler->setXNoteId(mnXNoteId);
 
         uno::Reference < xml::sax::XFastDocumentHandler > xDocumentHandler
             (pDocHandler);
@@ -107,14 +107,14 @@ void OOXMLDocumentImpl::resolveFastSubStreamWithId(Stream & rStream,
     rStream.substream(nId, pStream);
 }
 
-void OOXMLDocumentImpl::setXNoteId(const rtl::OUString & rId)
+void OOXMLDocumentImpl::setXNoteId(const sal_Int32 nId)
 {
-    msXNoteId = rId;
+    mnXNoteId = nId;
 }
 
-const rtl::OUString & OOXMLDocumentImpl::getXNoteId() const
+sal_Int32 OOXMLDocumentImpl::getXNoteId() const
 {
-    return msXNoteId;
+    return mnXNoteId;
 }
 
 void OOXMLDocumentImpl::setXNoteType(const Id & nId)
@@ -148,18 +148,18 @@ OOXMLDocumentImpl::getSubStream(const rtl::OUString & rId)
 
 writerfilter::Reference<Stream>::Pointer_t
 OOXMLDocumentImpl::getXNoteStream(OOXMLStream::StreamType_t nType, const Id & rType,
-                                  const rtl::OUString & rId)
+                                  const sal_Int32 nId)
 {
 #ifdef DEBUG_ELEMENT
     debug_logger->startElement("getXNoteStream");
-    debug_logger->attribute("id", rId);
+    debug_logger->attribute("id", nId);
     debug_logger->endElement();
 #endif
 
     OOXMLStream::Pointer_t pStream =
         (OOXMLDocumentFactory::createStream(mpStream, nType));
     OOXMLDocumentImpl * pDocument = new OOXMLDocumentImpl(pStream);
-    pDocument->setXNoteId(rId);
+    pDocument->setXNoteId(nId);
     pDocument->setXNoteType(rType);
 
     return writerfilter::Reference<Stream>::Pointer_t(pDocument);
@@ -167,10 +167,10 @@ OOXMLDocumentImpl::getXNoteStream(OOXMLStream::StreamType_t nType, const Id & rT
 
 void OOXMLDocumentImpl::resolveFootnote(Stream & rStream,
                                         const Id & rType,
-                                        const rtl::OUString & rNoteId)
+                                        const sal_Int32 nNoteId)
 {
     writerfilter::Reference<Stream>::Pointer_t pStream =
-        getXNoteStream(OOXMLStream::FOOTNOTES, rType, rNoteId);
+        getXNoteStream(OOXMLStream::FOOTNOTES, rType, nNoteId);
 
     Id nId;
     switch (rType)
@@ -189,10 +189,10 @@ void OOXMLDocumentImpl::resolveFootnote(Stream & rStream,
 
 void OOXMLDocumentImpl::resolveEndnote(Stream & rStream,
                                        const Id & rType,
-                                       const rtl::OUString & rNoteId)
+                                       const sal_Int32 nNoteId)
 {
     writerfilter::Reference<Stream>::Pointer_t pStream =
-        getXNoteStream(OOXMLStream::ENDNOTES, rType, rNoteId);
+        getXNoteStream(OOXMLStream::ENDNOTES, rType, nNoteId);
 
     Id nId;
     switch (rType)
@@ -210,10 +210,10 @@ void OOXMLDocumentImpl::resolveEndnote(Stream & rStream,
 }
 
 void OOXMLDocumentImpl::resolveComment(Stream & rStream,
-                                       const rtl::OUString & rId)
+                                       const sal_Int32 nId)
 {
     writerfilter::Reference<Stream>::Pointer_t pStream =
-        getXNoteStream(OOXMLStream::COMMENTS, 0, rId);
+        getXNoteStream(OOXMLStream::COMMENTS, 0, nId);
 
     resolveFastSubStreamWithId(rStream, pStream, NS_rtf::LN_annotation);
 }
@@ -325,7 +325,7 @@ void OOXMLDocumentImpl::resolve(Stream & rStream)
             new OOXMLFastDocumentHandler(xContext);
         pDocHandler->setStream(&rStream);
         pDocHandler->setDocument(this);
-        pDocHandler->setXNoteId(msXNoteId);
+        pDocHandler->setXNoteId(mnXNoteId);
         pDocHandler->setIsSubstream( mbIsSubstream );
         uno::Reference < xml::sax::XFastDocumentHandler > xDocumentHandler
             (pDocHandler);
diff --git a/writerfilter/source/ooxml/OOXMLDocumentImpl.hxx b/writerfilter/source/ooxml/OOXMLDocumentImpl.hxx
index 8ad4615..194dcce 100644
--- a/writerfilter/source/ooxml/OOXMLDocumentImpl.hxx
+++ b/writerfilter/source/ooxml/OOXMLDocumentImpl.hxx
@@ -43,7 +43,7 @@ using namespace ::com::sun::star;
 class OOXMLDocumentImpl : public OOXMLDocument
 {
     OOXMLStream::Pointer_t mpStream;
-    rtl::OUString msXNoteId;
+    sal_Int32 mnXNoteId;
     Id mXNoteType;
 
     uno::Reference<frame::XModel> mxModel;
@@ -66,7 +66,7 @@ protected:
     writerfilter::Reference<Stream>::Pointer_t
     getXNoteStream(OOXMLStream::StreamType_t nType,
                    const Id & rType,
-                   const rtl::OUString & rNoteId);
+                   const sal_Int32 nNoteId);
 
     void setIsSubstream( bool bSubstream ) { mbIsSubstream = bSubstream; };
 
@@ -80,10 +80,10 @@ public:
 
     virtual void resolveFootnote(Stream & rStream,
                                  const Id & rType,
-                                 const rtl::OUString & rNoteId);
+                                 const sal_Int32 nNoteId);
     virtual void resolveEndnote(Stream & rStream,
                                 const Id & rType,
-                                const rtl::OUString & rNoteId);
+                                const sal_Int32 nNoteId);
     virtual void resolveHeader(Stream & rStream,
                                const sal_Int32 type,
                                const rtl::OUString & rId);
@@ -91,7 +91,7 @@ public:
                                const sal_Int32 type,
                                const rtl::OUString & rId);
 
-    virtual void resolveComment(Stream & rStream, const rtl::OUString & rId);
+    virtual void resolveComment(Stream & rStream, const sal_Int32 nId);
 
     virtual OOXMLPropertySet * getPicturePropSet
     (const ::rtl::OUString & rId);
@@ -106,8 +106,8 @@ public:
     virtual uno::Reference<io::XInputStream> getInputStream();
     virtual uno::Reference<io::XInputStream> getStorageStream();
     virtual uno::Reference<io::XInputStream> getInputStreamForId(const rtl::OUString & rId);
-    virtual void setXNoteId(const rtl::OUString & rId);
-    virtual const ::rtl::OUString & getXNoteId() const;
+    virtual void setXNoteId(const sal_Int32 nId);
+    virtual sal_Int32 getXNoteId() const;
     virtual void setXNoteType(const Id & rId);
     virtual const Id & getXNoteType() const;
     virtual const ::rtl::OUString & getTarget() const;
diff --git a/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx b/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx
index 765385b..685528b 100644
--- a/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx
+++ b/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx
@@ -1020,37 +1020,37 @@ bool OOXMLFastContextHandler::isForwardEvents() const
     return mpParserState->isForwardEvents();
 }
 
-void OOXMLFastContextHandler::setXNoteId(const ::rtl::OUString & rId)
+void OOXMLFastContextHandler::setXNoteId(const sal_Int32 nId)
 {
-    mpParserState->setXNoteId(rId);
+    mpParserState->setXNoteId(nId);
 }
 
 void OOXMLFastContextHandler::setXNoteId(OOXMLValue::Pointer_t pValue)
 {
-    mpParserState->setXNoteId(pValue->getString());
+    mpParserState->setXNoteId(sal_Int32(pValue->getInt()));
 }
 
-const rtl::OUString & OOXMLFastContextHandler::getXNoteId() const
+sal_Int32 OOXMLFastContextHandler::getXNoteId() const
 {
     return mpParserState->getXNoteId();
 }
 
 void OOXMLFastContextHandler::resolveFootnote
-(const rtl::OUString & rId)
+(const sal_Int32 nId)
 {
     mpParserState->getDocument()->resolveFootnote
-        (*mpStream, 0, rId);
+        (*mpStream, 0, nId);
 }
 
-void OOXMLFastContextHandler::resolveEndnote(const rtl::OUString & rId)
+void OOXMLFastContextHandler::resolveEndnote(const sal_Int32 nId)
 {
     mpParserState->getDocument()->resolveEndnote
-        (*mpStream, 0, rId);
+        (*mpStream, 0, nId);
 }
 
-void OOXMLFastContextHandler::resolveComment(const rtl::OUString & rId)
+void OOXMLFastContextHandler::resolveComment(const sal_Int32 nId)
 {
-    mpParserState->getDocument()->resolveComment(*mpStream, rId);
+    mpParserState->getDocument()->resolveComment(*mpStream, nId);
 }
 
 void OOXMLFastContextHandler::resolvePicture(const rtl::OUString & rId)
@@ -1634,7 +1634,7 @@ void OOXMLFastContextHandlerXNote::lcl_startFastElement
 {
     mbForwardEventsSaved = isForwardEvents();
 
-    if (msMyXNoteId.compareTo(getXNoteId()) == 0)
+    if (mnMyXNoteId == getXNoteId())
         setForwardEvents(true);
     else
         setForwardEvents(false);
@@ -1655,12 +1655,12 @@ void OOXMLFastContextHandlerXNote::checkId(OOXMLValue::Pointer_t pValue)
 {
 #ifdef DEBUG_ELEMENT
     debug_logger->startElement("checkId");
-    debug_logger->attribute("myId", pValue->getString());
+    debug_logger->attribute("myId", sal_Int32(pValue->getInt()));
     debug_logger->attribute("id", getXNoteId());
     debug_logger->endElement();
 #endif
 
-    msMyXNoteId = pValue->getString();
+    mnMyXNoteId = sal_Int32(pValue->getInt());
 }
 
 /*
diff --git a/writerfilter/source/ooxml/OOXMLFastContextHandler.hxx b/writerfilter/source/ooxml/OOXMLFastContextHandler.hxx
index 357081b..7d17b77 100644
--- a/writerfilter/source/ooxml/OOXMLFastContextHandler.hxx
+++ b/writerfilter/source/ooxml/OOXMLFastContextHandler.hxx
@@ -146,9 +146,9 @@ public:
 
     void mark(const Id & rId, OOXMLValue::Pointer_t pVal);
 
-    void resolveFootnote(const rtl::OUString & rId);
-    void resolveEndnote(const rtl::OUString & rId);
-    void resolveComment(const rtl::OUString & rId);
+    void resolveFootnote(const sal_Int32 nId);
+    void resolveEndnote(const sal_Int32 nId);
+    void resolveComment(const sal_Int32 nId);
     void resolvePicture(const rtl::OUString & rId);
     void resolveHeader(const sal_Int32 type, 
                                 const rtl::OUString & rId);
@@ -166,8 +166,8 @@ public:
     void setDocument(OOXMLDocument * pDocument);
     OOXMLDocument * getDocument();
     void setXNoteId(OOXMLValue::Pointer_t pValue);
-    void setXNoteId(const ::rtl::OUString & rId);
-    const rtl::OUString & getXNoteId() const;
+    void setXNoteId(const sal_Int32 nId);
+    sal_Int32 getXNoteId() const;
     void setForwardEvents(bool bForwardEvents);
     bool isForwardEvents() const;
     virtual void setParent(OOXMLFastContextHandler * pParent);
@@ -432,7 +432,7 @@ public:
     
 private:
     bool mbForwardEventsSaved;    
-    ::rtl::OUString msMyXNoteId;
+    sal_Int32 mnMyXNoteId;
 
     virtual void lcl_startFastElement
     (Token_t Element, 
diff --git a/writerfilter/source/ooxml/OOXMLFastDocumentHandler.cxx b/writerfilter/source/ooxml/OOXMLFastDocumentHandler.cxx
index 782e317..c0252f4 100644
--- a/writerfilter/source/ooxml/OOXMLFastDocumentHandler.cxx
+++ b/writerfilter/source/ooxml/OOXMLFastDocumentHandler.cxx
@@ -131,7 +131,7 @@ OOXMLFastDocumentHandler::getContextHandler() const
         (new OOXMLFastContextHandler(m_xContext));
         mpContextHandler->setStream(mpStream);
         mpContextHandler->setDocument(mpDocument);
-        mpContextHandler->setXNoteId(msXNoteId);
+        mpContextHandler->setXNoteId(mnXNoteId);
         mpContextHandler->setForwardEvents(true);
     }
 
@@ -218,9 +218,9 @@ void OOXMLFastDocumentHandler::setDocument(OOXMLDocument * pDocument)
     mpDocument = pDocument;
 }
 
-void OOXMLFastDocumentHandler::setXNoteId(const ::rtl::OUString & rXNoteId)
+void OOXMLFastDocumentHandler::setXNoteId(const sal_Int32 nXNoteId)
 {
-    msXNoteId = rXNoteId;
+    mnXNoteId = nXNoteId;
 }
 
 void OOXMLFastDocumentHandler::setIsSubstream( bool bSubstream )
diff --git a/writerfilter/source/ooxml/OOXMLFastDocumentHandler.hxx b/writerfilter/source/ooxml/OOXMLFastDocumentHandler.hxx
index e76003e..e980191 100644
--- a/writerfilter/source/ooxml/OOXMLFastDocumentHandler.hxx
+++ b/writerfilter/source/ooxml/OOXMLFastDocumentHandler.hxx
@@ -94,7 +94,7 @@ public:
     
     void setStream(Stream * pStream);
     void setDocument(OOXMLDocument * pDocument);
-    void setXNoteId(const ::rtl::OUString & rXNoteId);
+    void setXNoteId(const sal_Int32 nXNoteId);
     
     void setIsSubstream( bool bSubstream );
 
@@ -109,7 +109,7 @@ private:
     Stream::Pointer_t mpTmpStream;
 #endif
     OOXMLDocument * mpDocument;
-    ::rtl::OUString msXNoteId;
+    sal_Int32 mnXNoteId;
     mutable boost::shared_ptr<OOXMLFastContextHandler> mpContextHandler;
     boost::shared_ptr<OOXMLFastContextHandler> getContextHandler() const;
 };
diff --git a/writerfilter/source/ooxml/OOXMLParserState.cxx b/writerfilter/source/ooxml/OOXMLParserState.cxx
index 1e93510..dcf7cc1 100644
--- a/writerfilter/source/ooxml/OOXMLParserState.cxx
+++ b/writerfilter/source/ooxml/OOXMLParserState.cxx
@@ -128,12 +128,12 @@ OOXMLDocument * OOXMLParserState::getDocument() const
     return mpDocument;
 }
 
-void OOXMLParserState::setXNoteId(const rtl::OUString & rId)
+void OOXMLParserState::setXNoteId(const sal_Int32 nId)
 {
-    mpDocument->setXNoteId(rId);
+    mpDocument->setXNoteId(nId);
 }
 
-const rtl::OUString & OOXMLParserState::getXNoteId() const
+sal_Int32 OOXMLParserState::getXNoteId() const
 {
     return mpDocument->getXNoteId();
 }
diff --git a/writerfilter/source/ooxml/OOXMLParserState.hxx b/writerfilter/source/ooxml/OOXMLParserState.hxx
index 3bc244f..5bbd90c 100644
--- a/writerfilter/source/ooxml/OOXMLParserState.hxx
+++ b/writerfilter/source/ooxml/OOXMLParserState.hxx
@@ -53,7 +53,7 @@ class OOXMLParserState
     unsigned int mnContexts;
     unsigned int mnHandle;
     OOXMLDocument * mpDocument;
-    rtl::OUString msXNoteId;
+    sal_Int32 mnXNoteId;
     rtl::OUString msTarget;
     OOXMLPropertySet::Pointer_t mpCharacterProps;
     stack<OOXMLPropertySet::Pointer_t> mCellProps;
@@ -90,8 +90,8 @@ public:
     void setDocument(OOXMLDocument * pDocument);
     OOXMLDocument * getDocument() const;
 
-    void setXNoteId(const rtl::OUString & rId);
-    const rtl::OUString & getXNoteId() const;
+    void setXNoteId(const sal_Int32 rId);
+    sal_Int32 getXNoteId() const;
 
     const rtl::OUString & getTarget() const;
 
diff --git a/writerfilter/source/ooxml/model.xml b/writerfilter/source/ooxml/model.xml
index a394b2f..12ac0c4 100644
--- a/writerfilter/source/ooxml/model.xml
+++ b/writerfilter/source/ooxml/model.xml
@@ -18155,13 +18155,13 @@
           </attribute>
         </optional>
         <attribute name="id">
-          <text/>
+          <ref name="ST_DecimalNumber"/>
           <xs:documentation>Footnote/Endnote ID Reference</xs:documentation>
         </attribute>
       </define>
       <define name="CT_FtnEdnSepRef">
         <attribute name="id">
-          <text/>
+          <ref name="ST_DecimalNumber"/>
           <xs:documentation>Footnote/Endnote ID</xs:documentation>
         </attribute>
       </define>
@@ -18176,7 +18176,7 @@
           </attribute>
         </optional>
         <attribute name="id">
-          <text/>
+          <ref name="ST_DecimalNumber"/>
           <xs:documentation>Footnote/Endnote ID</xs:documentation>
         </attribute>
       </define>
@@ -20433,9 +20433,9 @@
       </define>
       <define name="CT_Charset">
         <optional>
-            <attribute name="val">
-              <ref name="CT_UcharHexNumber"/>
-            </attribute>
+          <attribute name="val">
+            <ref name="CT_UcharHexNumber"/>
+          </attribute>
         </optional>
         <optional>
           <attribute name="characterSet">
@@ -21152,7 +21152,7 @@
     <resource name="ST_EighthPointMeasure" resource="Integer"/>
     <resource name="ST_PointMeasure" resource="Integer"/>
     <resource name="ST_String" resource="String"/>
-    <resource name="CT_String" resource="Value" tag="attribute" >
+    <resource name="CT_String" resource="Value" tag="attribute">
       <attribute name="val" tokenid="ooxml:CT_String_val" action="setValue"/>
       <action name="start" action="setDefaultStringValue"/>
     </resource>
@@ -22625,7 +22625,7 @@
       <element name="sdtContent" tokenid="ooxml:CT_SdtContentBlock"/>
     </resource>
     <resource name="CT_SdtContentBlock" resource="Properties"/>
-    <resource name="EG_PContent" resource="Properties" tag ="content">
+    <resource name="EG_PContent" resource="Properties" tag="content">
       <element name="fldSimple" tokenid="ooxml:EG_PContent_fldSimple"/>
       <element name="hyperlink" tokenid="ooxml:EG_PContent_hyperlink"/>
       <element name="subDoc" tokenid="ooxml:EG_PContent_subDoc"/>


More information about the Libreoffice-commits mailing list