summaryrefslogtreecommitdiff
path: root/writerfilter/source/resourcemodel/TagLogger.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'writerfilter/source/resourcemodel/TagLogger.cxx')
-rw-r--r--writerfilter/source/resourcemodel/TagLogger.cxx125
1 files changed, 121 insertions, 4 deletions
diff --git a/writerfilter/source/resourcemodel/TagLogger.cxx b/writerfilter/source/resourcemodel/TagLogger.cxx
index 1d9b23623e56..f19bef7c01d1 100644
--- a/writerfilter/source/resourcemodel/TagLogger.cxx
+++ b/writerfilter/source/resourcemodel/TagLogger.cxx
@@ -25,6 +25,7 @@
*
************************************************************************/
+#ifdef DEBUG
#include <fstream>
#include <string.h>
#include <resourcemodel/TagLogger.hxx>
@@ -51,11 +52,65 @@ namespace writerfilter
void XMLTag::addAttr(string sName, sal_uInt32 nValue)
{
- char buffer[256];
+ static char buffer[256];
snprintf(buffer, sizeof(buffer), "%" SAL_PRIdINT32, nValue);
addAttr(sName, buffer);
}
+void XMLTag::addAttr(string sName, uno::Any aAny)
+{
+ string aTmpStrInt;
+ string aTmpStrFloat;
+ string aTmpStrString;
+
+ static char buffer[256];
+
+ try
+ {
+ sal_Int32 nInt = 0;
+ aAny >>= nInt;
+
+ snprintf(buffer, sizeof(buffer), "%" SAL_PRIdINT32,
+ nInt);
+
+ aTmpStrInt = buffer;
+ }
+ catch (uno::Exception aExcept)
+ {
+ aTmpStrInt = "exception";
+ }
+
+ try
+ {
+ float nFloat = 0.0;
+ aAny >>= nFloat;
+
+ snprintf(buffer, sizeof(buffer), "%f",
+ nFloat);
+
+ aTmpStrFloat = buffer;
+ }
+ catch (uno::Exception aExcept)
+ {
+ aTmpStrFloat = "exception";
+ }
+
+ try
+ {
+ ::rtl::OUString aStr;
+ aAny >>= aStr;
+
+ aTmpStrString = OUStringToOString(aStr, RTL_TEXTENCODING_ASCII_US).getStr();
+ }
+ catch (uno::Exception aExcept)
+ {
+ aTmpStrString = "exception";
+ }
+
+ addAttr(sName, "i:" + aTmpStrInt + " f:" + aTmpStrFloat + " s:" +
+ aTmpStrString);
+}
+
void XMLTag::addTag(XMLTag::Pointer_t pTag)
{
if (pTag != XMLTag::Pointer_t())
@@ -64,9 +119,14 @@ namespace writerfilter
void XMLTag::chars(const string & rChars)
{
- mChars = rChars;
+ mChars += rChars;
}
+void XMLTag::chars(const ::rtl::OUString & rChars)
+{
+ chars(OUStringToOString(rChars, RTL_TEXTENCODING_ASCII_US).getStr());
+}
+
const string & XMLTag::getTag() const
{
return mTag;
@@ -162,6 +222,7 @@ namespace writerfilter
static TagLoggerHashMap_t * tagLoggers = NULL;
TagLogger::TagLogger()
+ : mFileName("writerfilter")
{
}
@@ -169,6 +230,11 @@ namespace writerfilter
{
}
+ void TagLogger::setFileName(const string & rName)
+ {
+ mFileName = rName;
+ }
+
TagLogger::Pointer_t TagLogger::getInstance(const char * name)
{
if (tagLoggers == NULL)
@@ -233,6 +299,11 @@ namespace writerfilter
currentTag()->addAttr(name, value);
}
+void TagLogger::attribute(const string & name, const uno::Any aAny)
+{
+ currentTag()->addAttr(name, aAny);
+}
+
void TagLogger::addTag(XMLTag::Pointer_t pTag)
{
currentTag()->addTag(pTag);
@@ -287,7 +358,18 @@ namespace writerfilter
else
fileName += "/tmp";
- fileName += "/writerfilter.";
+ string sPrefix = aIt->second->mFileName;
+ size_t nLastSlash = sPrefix.find_last_of('/');
+ size_t nLastBackslash = sPrefix.find_last_of('\\');
+ size_t nCutPos = nLastSlash;
+ if (nLastBackslash < nCutPos)
+ nCutPos = nLastBackslash;
+ if (nCutPos < sPrefix.size())
+ sPrefix = sPrefix.substr(nCutPos + 1);
+
+ fileName += "/";
+ fileName += sPrefix;
+ fileName +=".";
fileName += name;
fileName += ".xml";
@@ -336,7 +418,7 @@ namespace writerfilter
static char sBuffer[256];
snprintf(sBuffer, sizeof(sBuffer),
- "0x%" SAL_PRIxUINT32 "x, %" SAL_PRIxUINT32 "d", rSprm.getId(),
+ "0x%" SAL_PRIxUINT32 ", %" SAL_PRIuUINT32, rSprm.getId(),
rSprm.getId());
pTag->addAttr("id", sBuffer);
pTag->addAttr("value", rSprm.getValue()->toString());
@@ -347,4 +429,39 @@ namespace writerfilter
}
+XMLTag::Pointer_t unoPropertySetToTag(uno::Reference<beans::XPropertySet> rPropSet)
+{
+ uno::Reference<beans::XPropertySetInfo> xPropSetInfo(rPropSet->getPropertySetInfo());
+ uno::Sequence<beans::Property> aProps(xPropSetInfo->getProperties());
+
+ XMLTag::Pointer_t pResult(new XMLTag("unoPropertySet"));
+
+ for (int i = 0; i < aProps.getLength(); ++i)
+ {
+ XMLTag::Pointer_t pPropTag(new XMLTag("property"));
+
+ ::rtl::OUString sName(aProps[i].Name);
+
+ pPropTag->addAttr("name", sName);
+ try
+ {
+ pPropTag->addAttr("value", rPropSet->getPropertyValue(sName));
+ }
+ catch (uno::Exception aException)
+ {
+ XMLTag::Pointer_t pException(new XMLTag("exception"));
+
+ pException->chars("getPropertyValue(\"");
+ pException->chars(sName);
+ pException->chars("\")");
+ pPropTag->addTag(pException);
+ }
+
+ pResult->addTag(pPropTag);
+ }
+
+ return pResult;
+}
+
}
+#endif // DEBUG