Kaydet (Commit) b6d3f5c2 authored tarafından Markus Mohrhard's avatar Markus Mohrhard

ScCompiler::IsDBRange compares upper case strings

üst ba361f9b
......@@ -55,6 +55,7 @@ private:
// DBParam
const ::rtl::OUString aName;
::rtl::OUString aUpper;
SCTAB nTable;
SCCOL nStartCol;
SCROW nStartRow;
......@@ -98,6 +99,7 @@ public:
SCTAB GetTable() const;
const ::rtl::OUString& GetName() const { return aName; }
const ::rtl::OUString& GetUpperName() const { return aUpper; }
void GetArea(SCTAB& rTab, SCCOL& rCol1, SCROW& rRow1, SCCOL& rCol2, SCROW& rRow2) const;
SC_DLLPUBLIC void GetArea(ScRange& rRange) const;
void SetArea(SCTAB nTab, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2);
......@@ -186,6 +188,7 @@ public:
const_iterator end() const;
ScDBData* findByIndex(sal_uInt16 nIndex);
ScDBData* findByName(const ::rtl::OUString& rName);
ScDBData* findByUpperName(const ::rtl::OUString& rName);
bool insert(ScDBData* p);
void erase(iterator itr);
void erase(const ScDBData& r);
......
......@@ -438,7 +438,6 @@ void FiltersTest::testDatabaseRanges()
ScDBData* pAnonDBData = pDoc->GetAnonymousDBData(0);
CPPUNIT_ASSERT_MESSAGE("missing anonymous DB data in sheet 1", pAnonDBData);
//control hidden rows
/*
bool bHidden;
SCROW nRow1, nRow2;
bHidden = pDoc->RowHidden(0, 0, &nRow1, &nRow2);
......@@ -462,7 +461,6 @@ void FiltersTest::testDatabaseRanges()
CPPUNIT_ASSERT_MESSAGE("Sheet2: A11: formula result is incorrect", aValue == 4);
pDoc->GetValue(1, 10, 1, aValue);
CPPUNIT_ASSERT_MESSAGE("Sheet2: B11: formula result is incorrect", aValue == 2);
*/
}
void FiltersTest::testBugFixesODS()
......
......@@ -3014,7 +3014,7 @@ bool ScCompiler::IsExternalNamedRange( const String& rSymbol )
bool ScCompiler::IsDBRange( const String& rName )
{
ScDBCollection::NamedDBs& rDBs = pDoc->GetDBCollection()->getNamedDBs();
const ScDBData* p = rDBs.findByName(rName);
const ScDBData* p = rDBs.findByUpperName(rName);
if (!p)
return false;
......
......@@ -62,6 +62,7 @@ ScDBData::ScDBData( const ::rtl::OUString& rName,
SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2,
bool bByR, bool bHasH) :
aName (rName),
aUpper (rName),
nTable (nTab),
nStartCol (nCol1),
nStartRow (nRow1),
......@@ -78,6 +79,7 @@ ScDBData::ScDBData( const ::rtl::OUString& rName,
bAutoFilter (false),
bModified (false)
{
ScGlobal::pCharClass->toUpper(aUpper);
ScSortParam aSortParam;
ScQueryParam aQueryParam;
ScImportParam aImportParam;
......@@ -94,6 +96,7 @@ ScDBData::ScDBData( const ScDBData& rData ) :
maSubTotal (rData.maSubTotal),
maImportParam (rData.maImportParam),
aName (rData.aName),
aUpper (rData.aUpper),
nTable (rData.nTable),
nStartCol (rData.nStartCol),
nStartRow (rData.nStartRow),
......@@ -120,6 +123,7 @@ ScDBData::ScDBData( const ::rtl::OUString& rName, const ScDBData& rData ) :
maSubTotal (rData.maSubTotal),
maImportParam (rData.maImportParam),
aName (rName),
aUpper (rName),
nTable (rData.nTable),
nStartCol (rData.nStartCol),
nStartRow (rData.nStartRow),
......@@ -137,6 +141,7 @@ ScDBData::ScDBData( const ::rtl::OUString& rName, const ScDBData& rData ) :
bAutoFilter (rData.bAutoFilter),
bModified (rData.bModified)
{
ScGlobal::pCharClass->toUpper(aUpper);
}
ScDBData& ScDBData::operator= (const ScDBData& rData)
......@@ -645,6 +650,17 @@ public:
}
};
class FindByUpperName : public unary_function<ScDBData, bool>
{
const ::rtl::OUString& mrName;
public:
FindByUpperName(const ::rtl::OUString& rName) : mrName(rName) {}
bool operator() (const ScDBData& r) const
{
return r.GetUpperName() == mrName;
}
};
class FindFilterDBByTable : public unary_function<ScDBData, bool>
{
SCTAB mnTab;
......@@ -701,6 +717,13 @@ ScDBData* ScDBCollection::NamedDBs::findByName(const ::rtl::OUString& rName)
return itr == maDBs.end() ? NULL : &(*itr);
}
ScDBData* ScDBCollection::NamedDBs::findByUpperName(const ::rtl::OUString& rName)
{
DBsType::iterator itr = find_if(
maDBs.begin(), maDBs.end(), FindByUpperName(rName));
return itr == maDBs.end() ? NULL : &(*itr);
}
bool ScDBCollection::NamedDBs::insert(ScDBData* p)
{
auto_ptr<ScDBData> pData(p);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment