Kaydet (Commit) 0c350906 authored tarafından Vikas's avatar Vikas Kaydeden (comit) Markus Mohrhard

Added ReplaceNullTransformation

Change-Id: Ic233a9d13312568ac7f25f919d85ca776a47df88
Reviewed-on: https://gerrit.libreoffice.org/58151
Tested-by: Jenkins
Reviewed-by: 's avatarMarkus Mohrhard <markus.mohrhard@googlemail.com>
üst e06ec84a
......@@ -51,6 +51,7 @@ public:
void testNumberEven();
void testNumberOdd();
void testNumberSign();
void testReplaceNull();
CPPUNIT_TEST_SUITE(ScDataTransformationTest);
CPPUNIT_TEST(testColumnRemove);
......@@ -76,6 +77,7 @@ public:
CPPUNIT_TEST(testNumberEven);
CPPUNIT_TEST(testNumberOdd);
CPPUNIT_TEST(testNumberSign);
CPPUNIT_TEST(testReplaceNull);
CPPUNIT_TEST_SUITE_END();
private:
......@@ -486,6 +488,23 @@ void ScDataTransformationTest::testNumberSign()
CPPUNIT_ASSERT_EQUAL(-1.0, m_pDoc->GetValue(2, 3, 0));
}
void ScDataTransformationTest::testReplaceNull()
{
m_pDoc->SetString(2, 0, 0, "Berlin");
m_pDoc->SetString(2, 1, 0, "");
m_pDoc->SetString(2, 2, 0, "");
m_pDoc->SetString(2, 3, 0, "Peking");
sc::ReplaceNullTransformation aTransform({2}, "Empty");
aTransform.Transform(*m_pDoc);
CPPUNIT_ASSERT_EQUAL(OUString("Berlin"), m_pDoc->GetString(2, 0, 0));
CPPUNIT_ASSERT_EQUAL(OUString("Empty"), m_pDoc->GetString(2, 1, 0));
CPPUNIT_ASSERT_EQUAL(OUString("Empty"), m_pDoc->GetString(2, 2, 0));
CPPUNIT_ASSERT_EQUAL(OUString("Peking"), m_pDoc->GetString(2, 3, 0));
}
ScDataTransformationTest::ScDataTransformationTest() :
ScBootstrapFixture( "sc/qa/unit/data/dataprovider" ),
m_pDoc(nullptr)
......
......@@ -648,6 +648,55 @@ std::set<SCCOL> NumberTransformation::getColumn() const
{
return mnCol;
}
ReplaceNullTransformation::ReplaceNullTransformation(const std::set<SCCOL> nCol, const OUString sReplaceWith):
mnCol(nCol),
msReplaceWith(sReplaceWith)
{
}
void ReplaceNullTransformation::Transform(ScDocument& rDoc) const
{
if (mnCol.empty())
return;
SCROW nEndRow = 0;
for(auto& rCol : mnCol)
{
nEndRow = getLastRow(rDoc, rCol);
}
for(auto& rCol : mnCol)
{
for (SCROW nRow = 0; nRow < nEndRow; ++nRow)
{
CellType eType;
rDoc.GetCellType(rCol, nRow, 0, eType);
if (eType == CELLTYPE_NONE)
{
// OUString aStr = rDoc.GetString(rCol, nRow, 0);
// if (aStr == "" || aStr.isEmpty())
rDoc.SetString(rCol, nRow, 0, msReplaceWith);
}
}
}
}
std::set<SCCOL> ReplaceNullTransformation::getColumn() const
{
return mnCol;
}
OUString ReplaceNullTransformation::getReplaceString() const
{
return msReplaceWith;
}
TransformationType ReplaceNullTransformation::getTransformationType() const
{
return TransformationType::REMOVE_NULL_TRANSFORMATION;
}
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
......@@ -29,7 +29,8 @@ enum class TransformationType
SORT_TRANSFORMATION,
TEXT_TRANSFORMATION,
AGGREGATE_FUNCTION,
NUMBER_TRANSFORMATION
NUMBER_TRANSFORMATION,
REMOVE_NULL_TRANSFORMATION
};
enum class TEXT_TRANSFORM_TYPE { TO_LOWER, TO_UPPER, CAPITALIZE, TRIM };
......@@ -148,6 +149,19 @@ class SC_DLLPUBLIC NumberTransformation : public DataTransformation
std::set<SCCOL> getColumn() const;
};
class SC_DLLPUBLIC ReplaceNullTransformation : public DataTransformation
{
std::set<SCCOL> mnCol;
OUString msReplaceWith;
public:
ReplaceNullTransformation(const std::set<SCCOL> nCol, const OUString sReplaceWith);
virtual void Transform(ScDocument& rDoc) const override;
virtual TransformationType getTransformationType() const override;
std::set<SCCOL> getColumn() const;
OUString getReplaceString() const;
};
}
#endif
......
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