|
 |
f0633d |
From 7c4a58833df3931c168c57be3239e904e3a3baba Mon Sep 17 00:00:00 2001
|
|
 |
f0633d |
From: Kohei Yoshida <kohei.yoshida@collabora.com>
|
|
 |
f0633d |
Date: Tue, 7 Jan 2014 00:48:10 -0500
|
|
 |
f0633d |
Subject: [PATCH 3/9] fdo#72645: Case-insensitive string comparison in
|
|
 |
f0633d |
GETPIVOTDATA.
|
|
 |
f0633d |
|
|
 |
f0633d |
Change-Id: Ibdb2b7ab2bae03875a3462816e860f58d9076457
|
|
 |
f0633d |
Reviewed-on: https://gerrit.libreoffice.org/7285
|
|
 |
f0633d |
Reviewed-by: Eike Rathke <erack@redhat.com>
|
|
 |
f0633d |
Tested-by: Eike Rathke <erack@redhat.com>
|
|
 |
f0633d |
---
|
|
 |
f0633d |
sc/source/core/data/dpobject.cxx | 12 +++++++-----
|
|
 |
f0633d |
sc/source/core/data/dpresfilter.cxx | 29 +++++++++++++++++++++--------
|
|
 |
f0633d |
2 files changed, 28 insertions(+), 13 deletions(-)
|
|
 |
f0633d |
|
|
 |
f0633d |
diff --git a/sc/source/core/data/dpobject.cxx b/sc/source/core/data/dpobject.cxx
|
|
 |
f0633d |
index 3d9f5af..f9344aa 100644
|
|
 |
f0633d |
--- a/sc/source/core/data/dpobject.cxx
|
|
 |
f0633d |
+++ b/sc/source/core/data/dpobject.cxx
|
|
 |
f0633d |
@@ -1321,24 +1321,24 @@ namespace {
|
|
 |
f0633d |
|
|
 |
f0633d |
class FindByName : std::unary_function<const ScDPSaveDimension*, bool>
|
|
 |
f0633d |
{
|
|
 |
f0633d |
- OUString maName;
|
|
 |
f0633d |
+ OUString maName; // must be all uppercase.
|
|
 |
f0633d |
public:
|
|
 |
f0633d |
FindByName(const OUString& rName) : maName(rName) {}
|
|
 |
f0633d |
bool operator() (const ScDPSaveDimension* pDim) const
|
|
 |
f0633d |
{
|
|
 |
f0633d |
// Layout name takes precedence.
|
|
 |
f0633d |
const OUString* pLayoutName = pDim->GetLayoutName();
|
|
 |
f0633d |
- if (pLayoutName && *pLayoutName == maName)
|
|
 |
f0633d |
+ if (pLayoutName && ScGlobal::pCharClass->uppercase(*pLayoutName) == maName)
|
|
 |
f0633d |
return true;
|
|
 |
f0633d |
|
|
 |
f0633d |
sheet::GeneralFunction eGenFunc = static_cast<sheet::GeneralFunction>(pDim->GetFunction());
|
|
 |
f0633d |
ScSubTotalFunc eFunc = ScDPUtil::toSubTotalFunc(eGenFunc);
|
|
 |
f0633d |
OUString aSrcName = ScDPUtil::getSourceDimensionName(pDim->GetName());
|
|
 |
f0633d |
OUString aFuncName = ScDPUtil::getDisplayedMeasureName(aSrcName, eFunc);
|
|
 |
f0633d |
- if (maName == aFuncName)
|
|
 |
f0633d |
+ if (maName == ScGlobal::pCharClass->uppercase(aFuncName))
|
|
 |
f0633d |
return true;
|
|
 |
f0633d |
|
|
 |
f0633d |
- return maName == aSrcName;
|
|
 |
f0633d |
+ return maName == ScGlobal::pCharClass->uppercase(aSrcName);
|
|
 |
f0633d |
}
|
|
 |
f0633d |
};
|
|
 |
f0633d |
|
|
 |
f0633d |
@@ -1382,7 +1382,9 @@ double ScDPObject::GetPivotData(const OUString& rDataFieldName, std::vector
|
|
 |
f0633d |
return fRet;
|
|
 |
f0633d |
|
|
 |
f0633d |
std::vector<const ScDPSaveDimension*>::iterator it = std::find_if(
|
|
 |
f0633d |
- aDataDims.begin(), aDataDims.end(), FindByName(rDataFieldName));
|
|
 |
f0633d |
+ aDataDims.begin(), aDataDims.end(),
|
|
 |
f0633d |
+ FindByName(ScGlobal::pCharClass->uppercase(rDataFieldName)));
|
|
 |
f0633d |
+
|
|
 |
f0633d |
if (it == aDataDims.end())
|
|
 |
f0633d |
return fRet;
|
|
 |
f0633d |
|
|
 |
f0633d |
diff --git a/sc/source/core/data/dpresfilter.cxx b/sc/source/core/data/dpresfilter.cxx
|
|
 |
f0633d |
index 41b2d7e..d4895b8 100644
|
|
 |
f0633d |
--- a/sc/source/core/data/dpresfilter.cxx
|
|
 |
f0633d |
+++ b/sc/source/core/data/dpresfilter.cxx
|
|
 |
f0633d |
@@ -10,6 +10,7 @@
|
|
 |
f0633d |
#include "dpresfilter.hxx"
|
|
 |
f0633d |
#include "global.hxx"
|
|
 |
f0633d |
|
|
 |
f0633d |
+#include <unotools/charclass.hxx>
|
|
 |
f0633d |
#include <rtl/math.hxx>
|
|
 |
f0633d |
|
|
 |
f0633d |
#include <com/sun/star/sheet/DataPilotFieldFilter.hpp>
|
|
 |
f0633d |
@@ -113,12 +114,13 @@ void ScDPResultTree::add(
|
|
 |
f0633d |
|
|
 |
f0633d |
// See if this dimension exists.
|
|
 |
f0633d |
DimensionsType& rDims = pMemNode->maChildDimensions;
|
|
 |
f0633d |
- DimensionsType::iterator itDim = rDims.find(filter.maDimName);
|
|
 |
f0633d |
+ OUString aUpperName = ScGlobal::pCharClass->uppercase(filter.maDimName);
|
|
 |
f0633d |
+ DimensionsType::iterator itDim = rDims.find(aUpperName);
|
|
 |
f0633d |
if (itDim == rDims.end())
|
|
 |
f0633d |
{
|
|
 |
f0633d |
// New dimenison. Insert it.
|
|
 |
f0633d |
std::pair<DimensionsType::iterator, bool> r =
|
|
 |
f0633d |
- rDims.insert(DimensionsType::value_type(filter.maDimName, new DimensionNode(pMemNode)));
|
|
 |
f0633d |
+ rDims.insert(DimensionsType::value_type(aUpperName, new DimensionNode(pMemNode)));
|
|
 |
f0633d |
|
|
 |
f0633d |
if (!r.second)
|
|
 |
f0633d |
// Insertion failed!
|
|
 |
f0633d |
@@ -132,13 +134,14 @@ void ScDPResultTree::add(
|
|
 |
f0633d |
// Now, see if this dimension member exists.
|
|
 |
f0633d |
DimensionNode* pDim = itDim->second;
|
|
 |
f0633d |
MembersType& rMembers = pDim->maChildMembers;
|
|
 |
f0633d |
- MembersType::iterator itMem = rMembers.find(filter.maValue);
|
|
 |
f0633d |
+ aUpperName = ScGlobal::pCharClass->uppercase(filter.maValue);
|
|
 |
f0633d |
+ MembersType::iterator itMem = rMembers.find(aUpperName);
|
|
 |
f0633d |
if (itMem == rMembers.end())
|
|
 |
f0633d |
{
|
|
 |
f0633d |
// New member. Insert it.
|
|
 |
f0633d |
std::pair<MembersType::iterator, bool> r =
|
|
 |
f0633d |
rMembers.insert(
|
|
 |
f0633d |
- MembersType::value_type(filter.maValue, new MemberNode(pDim)));
|
|
 |
f0633d |
+ MembersType::value_type(aUpperName, new MemberNode(pDim)));
|
|
 |
f0633d |
|
|
 |
f0633d |
if (!r.second)
|
|
 |
f0633d |
// Insertion failed!
|
|
 |
f0633d |
@@ -153,7 +156,10 @@ void ScDPResultTree::add(
|
|
 |
f0633d |
|
|
 |
f0633d |
if (pDimName && pMemName)
|
|
 |
f0633d |
{
|
|
 |
f0633d |
- NamePairType aNames(*pDimName, *pMemName);
|
|
 |
f0633d |
+ NamePairType aNames(
|
|
 |
f0633d |
+ ScGlobal::pCharClass->uppercase(*pDimName),
|
|
 |
f0633d |
+ ScGlobal::pCharClass->uppercase(*pMemName));
|
|
 |
f0633d |
+
|
|
 |
f0633d |
LeafValuesType::iterator it = maLeafValues.find(aNames);
|
|
 |
f0633d |
if (it == maLeafValues.end())
|
|
 |
f0633d |
{
|
|
 |
f0633d |
@@ -197,13 +203,17 @@ const ScDPResultTree::ValuesType* ScDPResultTree::getResults(
|
|
 |
f0633d |
const MemberNode* pMember = mpRoot;
|
|
 |
f0633d |
for (; p != pEnd; ++p)
|
|
 |
f0633d |
{
|
|
 |
f0633d |
- DimensionsType::const_iterator itDim = pMember->maChildDimensions.find(p->FieldName);
|
|
 |
f0633d |
+ DimensionsType::const_iterator itDim = pMember->maChildDimensions.find(
|
|
 |
f0633d |
+ ScGlobal::pCharClass->uppercase(p->FieldName));
|
|
 |
f0633d |
+
|
|
 |
f0633d |
if (itDim == pMember->maChildDimensions.end())
|
|
 |
f0633d |
// Specified dimension not found.
|
|
 |
f0633d |
return NULL;
|
|
 |
f0633d |
|
|
 |
f0633d |
const DimensionNode* pDim = itDim->second;
|
|
 |
f0633d |
- MembersType::const_iterator itMem = pDim->maChildMembers.find(p->MatchValue);
|
|
 |
f0633d |
+ MembersType::const_iterator itMem = pDim->maChildMembers.find(
|
|
 |
f0633d |
+ ScGlobal::pCharClass->uppercase(p->MatchValue));
|
|
 |
f0633d |
+
|
|
 |
f0633d |
if (itMem == pDim->maChildMembers.end())
|
|
 |
f0633d |
// Specified member not found.
|
|
 |
f0633d |
return NULL;
|
|
 |
f0633d |
@@ -216,7 +226,10 @@ const ScDPResultTree::ValuesType* ScDPResultTree::getResults(
|
|
 |
f0633d |
|
|
 |
f0633d |
double ScDPResultTree::getLeafResult(const com::sun::star::sheet::DataPilotFieldFilter& rFilter) const
|
|
 |
f0633d |
{
|
|
 |
f0633d |
- NamePairType aPair(rFilter.FieldName, rFilter.MatchValue);
|
|
 |
f0633d |
+ NamePairType aPair(
|
|
 |
f0633d |
+ ScGlobal::pCharClass->uppercase(rFilter.FieldName),
|
|
 |
f0633d |
+ ScGlobal::pCharClass->uppercase(rFilter.MatchValue));
|
|
 |
f0633d |
+
|
|
 |
f0633d |
LeafValuesType::const_iterator it = maLeafValues.find(aPair);
|
|
 |
f0633d |
if (it != maLeafValues.end())
|
|
 |
f0633d |
// Found!
|
|
 |
f0633d |
--
|
|
 |
f0633d |
1.8.4.2
|
|
 |
f0633d |
|