summaryrefslogtreecommitdiff
path: root/sc/source/filter/xml
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@suse.com>2011-11-07 22:55:53 -0500
committerKohei Yoshida <kohei.yoshida@suse.com>2011-11-07 22:56:53 -0500
commit5897d4a60f766ca0cd751281e7c32af3df677303 (patch)
tree79c8f1516f521f3db39586851e060b45e152e0aa /sc/source/filter/xml
parent4687fe4917889a0fc0c4ca377970cb006bd59c85 (diff)
Encapsulated empty and non-empty filter criteria.
Because those two conditions were not very obvious.
Diffstat (limited to 'sc/source/filter/xml')
-rw-r--r--sc/source/filter/xml/XMLExportDataPilot.cxx36
-rw-r--r--sc/source/filter/xml/XMLExportDataPilot.hxx3
-rw-r--r--sc/source/filter/xml/XMLExportDatabaseRanges.cxx13
-rw-r--r--sc/source/filter/xml/xmlfilti.cxx47
-rw-r--r--sc/source/filter/xml/xmlfilti.hxx4
5 files changed, 48 insertions, 55 deletions
diff --git a/sc/source/filter/xml/XMLExportDataPilot.cxx b/sc/source/filter/xml/XMLExportDataPilot.cxx
index 83a6d76aa0eb..b207a465b4f5 100644
--- a/sc/source/filter/xml/XMLExportDataPilot.cxx
+++ b/sc/source/filter/xml/XMLExportDataPilot.cxx
@@ -78,28 +78,17 @@ ScXMLExportDataPilot::~ScXMLExportDataPilot()
{
}
-rtl::OUString ScXMLExportDataPilot::getDPOperatorXML(const ScQueryOp aFilterOperator, const bool bUseRegularExpressions,
- const bool bIsString, const double dVal, const String& sVal) const
+rtl::OUString ScXMLExportDataPilot::getDPOperatorXML(
+ const ScQueryOp aFilterOperator, const bool bUseRegularExpressions) const
{
switch (aFilterOperator)
{
case SC_EQUAL :
{
- rtl::OUString sReturn;
if (bUseRegularExpressions)
- sReturn = GetXMLToken(XML_MATCH);
+ return GetXMLToken(XML_MATCH);
else
- sReturn = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("="));
-
- if (!bIsString && sVal == EMPTY_STRING)
- {
- if (dVal == SC_EMPTYFIELDS)
- sReturn = GetXMLToken(XML_EMPTY);
- else if (dVal == SC_NONEMPTYFIELDS)
- sReturn = GetXMLToken(XML_NOEMPTY);
- }
-
- return sReturn;
+ return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("="));
}
case SC_NOT_EQUAL :
{
@@ -146,9 +135,20 @@ void ScXMLExportDataPilot::WriteDPCondition(const ScQueryEntry& aQueryEntry, boo
rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_DATA_TYPE, XML_NUMBER);
rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_VALUE, rQueryStr);
}
- rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_OPERATOR,
- getDPOperatorXML(aQueryEntry.eOp, bUseRegularExpressions,
- rItem.meType == ScQueryEntry::ByString, rItem.mfVal, rQueryStr));
+
+ if (aQueryEntry.IsQueryByEmpty())
+ {
+ rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_OPERATOR, GetXMLToken(XML_EMPTY));
+ }
+ else if (aQueryEntry.IsQueryByNonEmpty())
+ {
+ rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_OPERATOR, GetXMLToken(XML_NOEMPTY));
+ }
+ else
+ rExport.AddAttribute(
+ XML_NAMESPACE_TABLE, XML_OPERATOR,
+ getDPOperatorXML(aQueryEntry.eOp, bUseRegularExpressions));
+
SvXMLElementExport aElemC(rExport, XML_NAMESPACE_TABLE, XML_FILTER_CONDITION, true, true);
}
diff --git a/sc/source/filter/xml/XMLExportDataPilot.hxx b/sc/source/filter/xml/XMLExportDataPilot.hxx
index 5ea7bf8fd42d..e16cd630ffe7 100644
--- a/sc/source/filter/xml/XMLExportDataPilot.hxx
+++ b/sc/source/filter/xml/XMLExportDataPilot.hxx
@@ -50,8 +50,7 @@ class ScXMLExportDataPilot
ScXMLExport& rExport;
ScDocument* pDoc;
- rtl::OUString getDPOperatorXML(const ScQueryOp aFilterOperator, const bool bUseRegularExpressions,
- const bool bIsString, const double dVal, const String& sVal) const;
+ rtl::OUString getDPOperatorXML(const ScQueryOp aFilterOperator, const bool bUseRegularExpressions) const;
void WriteDPCondition(const ScQueryEntry& aQueryEntry, bool bIsCaseSensitive, bool bUseRegularExpressions);
void WriteDPFilter(const ScQueryParam& aQueryParam);
diff --git a/sc/source/filter/xml/XMLExportDatabaseRanges.cxx b/sc/source/filter/xml/XMLExportDatabaseRanges.cxx
index 8ec3c448e607..9815feb06d7c 100644
--- a/sc/source/filter/xml/XMLExportDatabaseRanges.cxx
+++ b/sc/source/filter/xml/XMLExportDatabaseRanges.cxx
@@ -407,14 +407,11 @@ private:
return GetXMLToken(XML_ENDS_WITH);
case SC_EQUAL:
{
- const ScQueryEntry::Item& rItem = rEntry.GetQueryItem();
- if (!rItem.meType != ScQueryEntry::ByString && rItem.maString.isEmpty())
- {
- if (rItem.mfVal == SC_EMPTYFIELDS)
- return GetXMLToken(XML_EMPTY);
- else if (rItem.mfVal == SC_NONEMPTYFIELDS)
- return GetXMLToken(XML_NOEMPTY);
- }
+ if (rEntry.IsQueryByEmpty())
+ return GetXMLToken(XML_EMPTY);
+ else if (rEntry.IsQueryByNonEmpty())
+ return GetXMLToken(XML_NOEMPTY);
+
if (bRegExp)
return GetXMLToken(XML_MATCH);
else
diff --git a/sc/source/filter/xml/xmlfilti.cxx b/sc/source/filter/xml/xmlfilti.cxx
index 0b7f37a1b260..5582e3069f44 100644
--- a/sc/source/filter/xml/xmlfilti.cxx
+++ b/sc/source/filter/xml/xmlfilti.cxx
@@ -710,8 +710,8 @@ SvXMLImportContext *ScXMLDPConditionContext::CreateChildContext( sal_uInt16 nPre
return new SvXMLImportContext( GetImport(), nPrefix, rLName );
}
-void ScXMLDPConditionContext::getOperatorXML(const rtl::OUString sTempOperator, ScQueryOp& aFilterOperator, bool& bUseRegularExpressions,
- double& dVal) const
+void ScXMLDPConditionContext::getOperatorXML(
+ const rtl::OUString sTempOperator, ScQueryOp& aFilterOperator, bool& bUseRegularExpressions) const
{
bUseRegularExpressions = false;
if (IsXMLToken(sTempOperator, XML_MATCH))
@@ -732,8 +732,6 @@ void ScXMLDPConditionContext::getOperatorXML(const rtl::OUString sTempOperator,
aFilterOperator = SC_BOTPERC;
else if (IsXMLToken(sTempOperator, XML_BOTTOM_VALUES))
aFilterOperator = SC_BOTVAL;
- else if (IsXMLToken(sTempOperator, XML_EMPTY))
- dVal = SC_EMPTYFIELDS;
else if (sTempOperator.compareToAscii(">") == 0)
aFilterOperator = SC_GREATER;
else if (sTempOperator.compareToAscii(">=") == 0)
@@ -742,8 +740,6 @@ void ScXMLDPConditionContext::getOperatorXML(const rtl::OUString sTempOperator,
aFilterOperator = SC_LESS;
else if (sTempOperator.compareToAscii("<=") == 0)
aFilterOperator = SC_LESS_EQUAL;
- else if (IsXMLToken(sTempOperator, XML_NOEMPTY))
- dVal = SC_NONEMPTYFIELDS;
else if (IsXMLToken(sTempOperator, XML_TOP_PERCENT))
aFilterOperator = SC_TOPPERC;
else if (IsXMLToken(sTempOperator, XML_TOP_VALUES))
@@ -758,28 +754,29 @@ void ScXMLDPConditionContext::EndElement()
else
aFilterField.eConnect = SC_AND;
pFilterContext->SetIsCaseSensitive(bIsCaseSensitive);
- bool bUseRegularExpressions;
- double dVal(0.0);
- getOperatorXML(sOperator, aFilterField.eOp, bUseRegularExpressions, dVal);
- pFilterContext->SetUseRegularExpressions(bUseRegularExpressions);
- aFilterField.nField = nField;
- ScQueryEntry::Item& rItem = aFilterField.GetQueryItem();
- if (IsXMLToken(sDataType, XML_NUMBER))
+ if (IsXMLToken(sOperator, XML_EMPTY))
+ aFilterField.SetQueryByEmpty();
+ else if (IsXMLToken(sOperator, XML_NOEMPTY))
+ aFilterField.SetQueryByNonEmpty();
+ else
{
- rItem.mfVal = sConditionValue.toDouble();
- rItem.maString = sConditionValue;
- rItem.meType = ScQueryEntry::ByValue;
- if (dVal != 0.0)
+ bool bUseRegularExpressions = false;
+ getOperatorXML(sOperator, aFilterField.eOp, bUseRegularExpressions);
+ pFilterContext->SetUseRegularExpressions(bUseRegularExpressions);
+ aFilterField.nField = nField;
+ ScQueryEntry::Item& rItem = aFilterField.GetQueryItem();
+ if (IsXMLToken(sDataType, XML_NUMBER))
{
- rItem.mfVal = dVal;
- rItem.maString = rtl::OUString();
+ rItem.mfVal = sConditionValue.toDouble();
+ rItem.maString = sConditionValue;
+ rItem.meType = ScQueryEntry::ByValue;
+ }
+ else
+ {
+ rItem.maString = sConditionValue;
+ rItem.meType = ScQueryEntry::ByString;
+ rItem.mfVal = 0.0;
}
- }
- else
- {
- rItem.maString = sConditionValue;
- rItem.meType = ScQueryEntry::ByString;
- rItem.mfVal = 0.0;
}
pFilterContext->AddFilterField(aFilterField);
}
diff --git a/sc/source/filter/xml/xmlfilti.hxx b/sc/source/filter/xml/xmlfilti.hxx
index 61838f27d778..454128bcc027 100644
--- a/sc/source/filter/xml/xmlfilti.hxx
+++ b/sc/source/filter/xml/xmlfilti.hxx
@@ -303,8 +303,8 @@ public:
const ::com::sun::star::uno::Reference<
::com::sun::star::xml::sax::XAttributeList>& xAttrList );
- void getOperatorXML(const rtl::OUString sTempOperator, ScQueryOp& aFilterOperator, bool& bUseRegularExpressions,
- double& dVal) const;
+ void getOperatorXML(
+ const rtl::OUString sTempOperator, ScQueryOp& aFilterOperator, bool& bUseRegularExpressions) const;
virtual void EndElement();
};