diff options
author | Kohei Yoshida <kohei.yoshida@suse.com> | 2011-11-07 22:55:53 -0500 |
---|---|---|
committer | Kohei Yoshida <kohei.yoshida@suse.com> | 2011-11-07 22:56:53 -0500 |
commit | 5897d4a60f766ca0cd751281e7c32af3df677303 (patch) | |
tree | 79c8f1516f521f3db39586851e060b45e152e0aa /sc/source/filter/xml | |
parent | 4687fe4917889a0fc0c4ca377970cb006bd59c85 (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.cxx | 36 | ||||
-rw-r--r-- | sc/source/filter/xml/XMLExportDataPilot.hxx | 3 | ||||
-rw-r--r-- | sc/source/filter/xml/XMLExportDatabaseRanges.cxx | 13 | ||||
-rw-r--r-- | sc/source/filter/xml/xmlfilti.cxx | 47 | ||||
-rw-r--r-- | sc/source/filter/xml/xmlfilti.hxx | 4 |
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(); }; |