[Libreoffice-commits] core.git: include/xmloff sc/source xmloff/source
Vikas Mahato
vikasmahato0 at gmail.com
Wed Jul 11 20:47:43 UTC 2018
include/xmloff/xmltoken.hxx | 12 ++
sc/source/filter/xml/xmlexprt.cxx | 127 ++++++++++++++++++++++-
sc/source/filter/xml/xmlmappingi.cxx | 2
sc/source/ui/dataprovider/datatransformation.cxx | 34 ++++++
sc/source/ui/inc/datatransformation.hxx | 7 +
xmloff/source/core/xmltoken.cxx | 13 ++
xmloff/source/token/tokens.txt | 12 ++
7 files changed, 205 insertions(+), 2 deletions(-)
New commits:
commit 376011df10f20c9a5ee033f11789c579910cf206
Author: Vikas Mahato <vikasmahato0 at gmail.com>
Date: Mon Jul 9 08:06:59 2018 +0530
ODF export data transformations -follow-up
Change-Id: I31a0b29d94abb59e7633c45aa1536772b2d8c102
Reviewed-on: https://gerrit.libreoffice.org/57217
Tested-by: Jenkins
Reviewed-by: Markus Mohrhard <markus.mohrhard at googlemail.com>
diff --git a/include/xmloff/xmltoken.hxx b/include/xmloff/xmltoken.hxx
index 862741d0a0eb..1c388e5e3193 100644
--- a/include/xmloff/xmltoken.hxx
+++ b/include/xmloff/xmltoken.hxx
@@ -3283,8 +3283,20 @@ namespace xmloff { namespace token {
XML_COLUMN_SPLIT_TRANSFORMATION,
XML_COLUMN_MERGE_TRANSFORMATION,
XML_COLUMN_SORT_TRANSFORMATION,
+ XML_COLUMN_TEXT_TRANSFORMATION,
+ XML_COLUMN_AGGREGATE_TRANSFORMATION,
+ XML_COLUMN_NUMBER_TRANSFORMATION,
XML_SORT_PARAM,
XML_MERGE_STRING,
+ XML_TRIM,
+ XML_ROUND_UP,
+ XML_ROUND_DOWN,
+ XML_LOG_10,
+ XML_SQUARE,
+ XML_SQUARE_ROOT,
+ XML_EVEN,
+ XML_ODD,
+ XML_SIGN,
//Already defined XML_SEPARATOR,
// regina, ODF1.2 additional symbols in charts
diff --git a/sc/source/filter/xml/xmlexprt.cxx b/sc/source/filter/xml/xmlexprt.cxx
index 58d0e197b975..63ec4abc9302 100644
--- a/sc/source/filter/xml/xmlexprt.cxx
+++ b/sc/source/filter/xml/xmlexprt.cxx
@@ -4075,10 +4075,9 @@ void ScXMLExport::WriteExternalDataMapping()
AddAttribute(XML_NAMESPACE_CALC_EXT, XML_ID, itr.getID());
AddAttribute(XML_NAMESPACE_CALC_EXT, XML_DATABASE_NAME, itr.getDBName());
+ SvXMLElementExport aMapping(*this, XML_NAMESPACE_CALC_EXT, XML_DATA_MAPPING, true, true);
// Add the data transformations
WriteExternalDataTransformations(itr.getDataTransformation());
-
- SvXMLElementExport aMapping(*this, XML_NAMESPACE_CALC_EXT, XML_DATA_MAPPING, true, true);
}
}
}
@@ -4151,6 +4150,130 @@ void ScXMLExport::WriteExternalDataTransformations(const std::vector<std::shared
writeSort(*this, aSortParam, aRange, pDoc);
}
break;
+ case sc::TransformationType::TEXT_TRANSFORMATION:
+ {
+ // Text Transformation
+ std::shared_ptr<sc::TextTransformation> aTextTransformation = std::dynamic_pointer_cast<sc::TextTransformation>(itr);
+
+ sc::TEXT_TRANSFORM_TYPE aTextTransformType = aTextTransformation->getTextTransformationType();
+
+ switch ( aTextTransformType )
+ {
+ case sc::TEXT_TRANSFORM_TYPE::TO_LOWER:
+ AddAttribute(XML_NAMESPACE_CALC_EXT, XML_TYPE, XML_CASEMAP_LOWERCASE);
+ break;
+ case sc::TEXT_TRANSFORM_TYPE::TO_UPPER:
+ AddAttribute(XML_NAMESPACE_CALC_EXT, XML_TYPE, XML_CASEMAP_UPPERCASE);
+ break;
+ case sc::TEXT_TRANSFORM_TYPE::CAPITALIZE:
+ AddAttribute(XML_NAMESPACE_CALC_EXT, XML_TYPE, XML_CASEMAP_CAPITALIZE);
+ break;
+ case sc::TEXT_TRANSFORM_TYPE::TRIM:
+ AddAttribute(XML_NAMESPACE_CALC_EXT, XML_TYPE, XML_TRIM);
+ break;
+ }
+
+ std::set<SCCOL> aColumns = aTextTransformation->getColumns();
+
+ SvXMLElementExport aTransformation(*this, XML_NAMESPACE_CALC_EXT, XML_COLUMN_TEXT_TRANSFORMATION, true, true);
+
+ for(auto& col : aColumns)
+ {
+ // Columns
+ AddAttribute(XML_NAMESPACE_CALC_EXT, XML_COLUMN, OUString::number(col));
+ SvXMLElementExport aCol(*this, XML_NAMESPACE_CALC_EXT, XML_COLUMN, true, true);
+ }
+ }
+ break;
+ case sc::TransformationType::AGGREGATE_FUNCTION:
+ {
+ // Aggregate Transformation
+ std::shared_ptr<sc::AggregateFunction> aAggregateFunction = std::dynamic_pointer_cast<sc::AggregateFunction>(itr);
+ std::set<SCCOL> aColumns = aAggregateFunction->getColumns();
+
+ sc::AGGREGATE_FUNCTION aAggregateType = aAggregateFunction->getAggregateType();
+
+ switch (aAggregateType)
+ {
+ case sc::AGGREGATE_FUNCTION::SUM:
+ AddAttribute(XML_NAMESPACE_CALC_EXT, XML_TYPE, XML_SUM);
+ break;
+ case sc::AGGREGATE_FUNCTION::AVERAGE:
+ AddAttribute(XML_NAMESPACE_CALC_EXT, XML_TYPE, XML_AVERAGE);
+ break;
+ case sc::AGGREGATE_FUNCTION::MIN:
+ AddAttribute(XML_NAMESPACE_CALC_EXT, XML_TYPE, XML_MIN);
+ break;
+ case sc::AGGREGATE_FUNCTION::MAX:
+ AddAttribute(XML_NAMESPACE_CALC_EXT, XML_TYPE, XML_MAX);
+ break;
+ }
+
+ SvXMLElementExport aTransformation(*this, XML_NAMESPACE_CALC_EXT,XML_COLUMN_AGGREGATE_TRANSFORMATION, true, true);
+
+ for(auto& col : aColumns)
+ {
+ // Columns
+ AddAttribute(XML_NAMESPACE_CALC_EXT, XML_COLUMN, OUString::number(col));
+ SvXMLElementExport aCol(*this, XML_NAMESPACE_CALC_EXT, XML_COLUMN, true, true);
+ }
+ }
+ break;
+ case sc::TransformationType::NUMBER_TRANSFORMATION:
+ {
+ // Number Transformation
+ std::shared_ptr<sc::NumberTransformation> aNumberTransformation = std::dynamic_pointer_cast<sc::NumberTransformation>(itr);
+
+ sc::NUMBER_TRANSFORM_TYPE aNumberTransformType = aNumberTransformation->getNumberTransfromationType();
+
+ switch ( aNumberTransformType )
+ {
+ case sc::NUMBER_TRANSFORM_TYPE::ROUND:
+ AddAttribute(XML_NAMESPACE_CALC_EXT, XML_TYPE, XML_ROUND);
+ break;
+ case sc::NUMBER_TRANSFORM_TYPE::ROUND_UP:
+ AddAttribute(XML_NAMESPACE_CALC_EXT, XML_TYPE, XML_ROUND_UP);
+ break;
+ case sc::NUMBER_TRANSFORM_TYPE::ROUND_DOWN:
+ AddAttribute(XML_NAMESPACE_CALC_EXT, XML_TYPE, XML_ROUND_DOWN);
+ break;
+ case sc::NUMBER_TRANSFORM_TYPE::ABSOLUTE:
+ AddAttribute(XML_NAMESPACE_CALC_EXT, XML_TYPE, XML_ABS);
+ break;
+ case sc::NUMBER_TRANSFORM_TYPE::LOG_E:
+ AddAttribute(XML_NAMESPACE_CALC_EXT, XML_TYPE, XML_LOG);
+ break;
+ case sc::NUMBER_TRANSFORM_TYPE::LOG_10:
+ AddAttribute(XML_NAMESPACE_CALC_EXT, XML_TYPE, XML_LOG_10);
+ break;
+ case sc::NUMBER_TRANSFORM_TYPE::CUBE:
+ AddAttribute(XML_NAMESPACE_CALC_EXT, XML_TYPE, XML_CUBE);
+ break;
+ case sc::NUMBER_TRANSFORM_TYPE::SQUARE:
+ AddAttribute(XML_NAMESPACE_CALC_EXT, XML_TYPE, XML_SQUARE);
+ break;
+ case sc::NUMBER_TRANSFORM_TYPE::SQUARE_ROOT:
+ AddAttribute(XML_NAMESPACE_CALC_EXT, XML_TYPE, XML_SQUARE_ROOT);
+ break;
+ case sc::NUMBER_TRANSFORM_TYPE::EXPONENT:
+ AddAttribute(XML_NAMESPACE_CALC_EXT, XML_TYPE, XML_EXPONENTIAL);
+ break;
+ case sc::NUMBER_TRANSFORM_TYPE::IS_EVEN:
+ AddAttribute(XML_NAMESPACE_CALC_EXT, XML_TYPE, XML_EVEN);
+ break;
+ case sc::NUMBER_TRANSFORM_TYPE::IS_ODD:
+ AddAttribute(XML_NAMESPACE_CALC_EXT, XML_TYPE, XML_ODD);
+ break;
+ case sc::NUMBER_TRANSFORM_TYPE::SIGN:
+ AddAttribute(XML_NAMESPACE_CALC_EXT, XML_TYPE, XML_SIGN);
+ break;
+ }
+
+ AddAttribute(XML_NAMESPACE_CALC_EXT, XML_COLUMN, OUString::number(aNumberTransformation->getColumn()));
+ AddAttribute(XML_NAMESPACE_CALC_EXT, XML_PRECISION, OUString::number(aNumberTransformation->getPrecision()));
+ SvXMLElementExport aTransformation(*this, XML_NAMESPACE_CALC_EXT, XML_COLUMN_NUMBER_TRANSFORMATION, true, true);
+ }
+ break;
default:
break;
}
diff --git a/sc/source/filter/xml/xmlmappingi.cxx b/sc/source/filter/xml/xmlmappingi.cxx
index c2f8b4004213..907f4ea472e6 100644
--- a/sc/source/filter/xml/xmlmappingi.cxx
+++ b/sc/source/filter/xml/xmlmappingi.cxx
@@ -110,6 +110,8 @@ ScXMLMappingContext::ScXMLMappingContext( ScXMLImport& rImport,
aSource.setID(aID);
aSource.setDBData(aDBName);
rDataMapper.insertDataSource(aSource);
+ auto& rDataSources = rDataMapper.getDataSources();
+ rDataSources[0].refresh(pDoc, true);
}
}
diff --git a/sc/source/ui/dataprovider/datatransformation.cxx b/sc/source/ui/dataprovider/datatransformation.cxx
index 75e84a23c2ef..c1bfac0895ef 100644
--- a/sc/source/ui/dataprovider/datatransformation.cxx
+++ b/sc/source/ui/dataprovider/datatransformation.cxx
@@ -277,6 +277,16 @@ TransformationType TextTransformation::getTransformationType() const
return TransformationType::TEXT_TRANSFORMATION;
}
+TEXT_TRANSFORM_TYPE TextTransformation::getTextTransformationType() const
+{
+ return maType;
+}
+
+std::set<SCCOL> TextTransformation::getColumns() const
+{
+ return mnCol;
+}
+
AggregateFunction::AggregateFunction(const std::set<SCCOL>& rColumns, const AGGREGATE_FUNCTION rType):
maColumns(rColumns),
maType(rType)
@@ -374,6 +384,16 @@ TransformationType AggregateFunction::getTransformationType() const
return TransformationType::AGGREGATE_FUNCTION;
}
+AGGREGATE_FUNCTION AggregateFunction::getAggregateType() const
+{
+ return maType;
+}
+
+std::set<SCCOL> AggregateFunction::getColumns() const
+{
+ return maColumns;
+}
+
NumberTransformation::NumberTransformation(SCCOL nCol, const NUMBER_TRANSFORM_TYPE rType):
mnCol(nCol),
maType(rType),
@@ -608,6 +628,20 @@ TransformationType NumberTransformation::getTransformationType() const
return TransformationType::NUMBER_TRANSFORMATION;
}
+NUMBER_TRANSFORM_TYPE NumberTransformation::getNumberTransfromationType() const
+{
+ return maType;
+}
+
+int NumberTransformation::getPrecision() const
+{
+ return maPrecision;
+}
+
+SCCOL NumberTransformation::getColumn() const
+{
+ return mnCol;
+}
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/inc/datatransformation.hxx b/sc/source/ui/inc/datatransformation.hxx
index 3266ce456b9b..0dea9fe8773f 100644
--- a/sc/source/ui/inc/datatransformation.hxx
+++ b/sc/source/ui/inc/datatransformation.hxx
@@ -115,6 +115,8 @@ class SC_DLLPUBLIC TextTransformation : public DataTransformation
TextTransformation(const std::set<SCCOL>& nCol, const TEXT_TRANSFORM_TYPE rType);
virtual void Transform(ScDocument& rDoc) const override;
virtual TransformationType getTransformationType() const override;
+ TEXT_TRANSFORM_TYPE getTextTransformationType() const;
+ std::set<SCCOL> getColumns() const;
};
class SC_DLLPUBLIC AggregateFunction : public DataTransformation
@@ -126,6 +128,8 @@ class SC_DLLPUBLIC AggregateFunction : public DataTransformation
AggregateFunction(const std::set<SCCOL>& rColumns, const AGGREGATE_FUNCTION rType);
virtual void Transform(ScDocument& rDoc) const override;
virtual TransformationType getTransformationType() const override;
+ AGGREGATE_FUNCTION getAggregateType() const;
+ std::set<SCCOL> getColumns() const;
};
class SC_DLLPUBLIC NumberTransformation : public DataTransformation
@@ -139,6 +143,9 @@ class SC_DLLPUBLIC NumberTransformation : public DataTransformation
NumberTransformation(SCCOL nCol, const NUMBER_TRANSFORM_TYPE rType, int nPrecision);
virtual void Transform(ScDocument& rDoc) const override;
virtual TransformationType getTransformationType() const override;
+ NUMBER_TRANSFORM_TYPE getNumberTransfromationType() const;
+ int getPrecision() const;
+ SCCOL getColumn() const;
};
}
diff --git a/xmloff/source/core/xmltoken.cxx b/xmloff/source/core/xmltoken.cxx
index f32309b3e1a1..8287fd4797fa 100644
--- a/xmloff/source/core/xmltoken.cxx
+++ b/xmloff/source/core/xmltoken.cxx
@@ -3279,8 +3279,21 @@ namespace xmloff { namespace token {
TOKEN( "column-split-transformation", XML_COLUMN_SPLIT_TRANSFORMATION),
TOKEN( "column-merge-transformation", XML_COLUMN_MERGE_TRANSFORMATION),
TOKEN( "column-sort-transformation", XML_COLUMN_SORT_TRANSFORMATION),
+ TOKEN( "column-text-transformation", XML_COLUMN_TEXT_TRANSFORMATION),
+ TOKEN( "column-aggregate-transformation", XML_COLUMN_AGGREGATE_TRANSFORMATION),
+ TOKEN( "column-number-transformation", XML_COLUMN_NUMBER_TRANSFORMATION),
+
TOKEN( "sort-param", XML_SORT_PARAM ),
TOKEN( "merge-string", XML_MERGE_STRING ),
+ TOKEN( "trim", XML_TRIM ),
+ TOKEN( "round-up", XML_ROUND_UP ),
+ TOKEN( "round-down", XML_ROUND_DOWN ),
+ TOKEN( "log-base-10", XML_LOG_10 ),
+ TOKEN( "number-square", XML_SQUARE ),
+ TOKEN( "square-root", XML_SQUARE_ROOT ),
+ TOKEN( "even", XML_EVEN ),
+ TOKEN( "odd", XML_ODD ),
+ TOKEN( "sign", XML_SIGN ),
// regina, ODF1.2 additional symbols in charts
TOKEN( "star", XML_STAR ),
diff --git a/xmloff/source/token/tokens.txt b/xmloff/source/token/tokens.txt
index 63e8b99015ab..6551c5b7b9f2 100644
--- a/xmloff/source/token/tokens.txt
+++ b/xmloff/source/token/tokens.txt
@@ -3060,8 +3060,20 @@ column-remove-transformation
column-split-transformation
column-merge-transformation
column-sort-transformation
+column-text-transformation
+column-aggregate-transformation
+column-number-transformation
sort-param
merge-string
+trim
+round-up
+round-down
+log-base-10
+number-square
+square-root
+even
+odd
+sign
star
asterisk
horizontal-bar
More information about the Libreoffice-commits
mailing list