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

external data: add initial work for data transformations

Change-Id: I728ca764a2ea2926f8b8f76ea576b8be1091a29a
Reviewed-on: https://gerrit.libreoffice.org/41146Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarMarkus Mohrhard <markus.mohrhard@googlemail.com>
üst 9f9f0faf
......@@ -385,6 +385,7 @@ $(eval $(call gb_Library_add_exception_objects,sc,\
sc/source/ui/condformat/colorformat \
sc/source/ui/dataprovider/csvdataprovider \
sc/source/ui/dataprovider/dataprovider \
sc/source/ui/dataprovider/datatransformation \
sc/source/ui/dataprovider/htmldataprovider \
sc/source/ui/dbgui/asciiopt \
sc/source/ui/dbgui/consdlg \
......
......@@ -15,6 +15,7 @@
#include <rtl/strbuf.hxx>
#include "htmldataprovider.hxx"
#include "datatransformation.hxx"
using namespace com::sun::star;
......@@ -175,6 +176,12 @@ DataProvider::~DataProvider()
void ScDBDataManager::WriteToDoc(ScDocument& rDoc)
{
// first apply all data transformations
for (auto& itr : maDataTransformations)
{
itr->Transform(rDoc);
}
bool bShrunk = false;
SCCOL nStartCol = 0;
SCROW nStartRow = 0;
......@@ -215,6 +222,11 @@ void ScDBDataManager::SetDatabase(const OUString& rDBName)
maDBName = rDBName;
}
void ScDBDataManager::AddDataTransformation(std::unique_ptr<sc::DataTransformation> mpDataTransformation)
{
maDataTransformations.push_back(std::move(mpDataTransformation));
}
ScDBData* ScDBDataManager::getDBData()
{
ScDBData* pDBData = mpDoc->GetDBCollection()->getNamedDBs().findByUpperName(ScGlobal::pCharClass->uppercase(maDBName));
......
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
#include "datatransformation.hxx"
#include "document.hxx"
namespace sc {
DataTransformation::~DataTransformation()
{
}
ColumnRemoveTransformation::ColumnRemoveTransformation(SCCOL nCol):
mnCol(nCol)
{
}
ColumnRemoveTransformation::~ColumnRemoveTransformation()
{
}
void ColumnRemoveTransformation::Transform(ScDocument& rDoc)
{
rDoc.DeleteCol(0, 0, MAXROW, 0, mnCol, 1);
}
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
#ifndef INCLUDED_SC_SOURCE_UI_DATAPROVIDER_DATATRANSFORMATION_HXX
#define INCLUDED_SC_SOURCE_UI_DATAPROVIDER_DATATRANSFORMATION_HXX
#include <address.hxx>
class ScDocument;
namespace sc {
class DataTransformation
{
public:
virtual ~DataTransformation();
virtual void Transform(ScDocument& rDoc) = 0;
};
class ColumnRemoveTransformation : public DataTransformation
{
SCCOL mnCol;
public:
ColumnRemoveTransformation(SCCOL nCol);
virtual ~ColumnRemoveTransformation() override;
virtual void Transform(ScDocument& rDoc) override;
};
}
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
......@@ -28,6 +28,7 @@
#include <rtl/strbuf.hxx>
#include <queue>
#include <vector>
#include "officecfg/Office/Calc.hxx"
......@@ -44,6 +45,7 @@ namespace sc {
class DataProvider;
class CSVDataProvider;
class ScDBDataManager;
class DataTransformation;
class CSVFetchThread : public salhelper::Thread
{
......@@ -84,7 +86,8 @@ protected:
public:
DataProvider();
virtual ~DataProvider() = 0;
virtual ~DataProvider();
virtual void Import() = 0;
......@@ -131,12 +134,16 @@ class ScDBDataManager
OUString maDBName;
ScDocument* mpDoc;
std::vector<std::unique_ptr<sc::DataTransformation>> maDataTransformations;
public:
ScDBDataManager(const OUString& rDBName, bool bAllowResize, ScDocument* pDoc);
~ScDBDataManager();
void SetDatabase(const OUString& rDBName);
void AddDataTransformation(std::unique_ptr<sc::DataTransformation> mpDataTransformation);
ScDBData* getDBData();
void WriteToDoc(ScDocument& rDoc);
......@@ -156,5 +163,6 @@ public:
};
}
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
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