Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  datatransformation.hxx   Sprache: C

 
/* -*- 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/.
 */


#pragma once

#include <types.hxx>
#include <scdllapi.h>

#include <sortparam.hxx>

#include <set>

class ScDocument;

namespace sc {

enum class TransformationType
{
    MERGE_TRANSFORMATION,
    SPLIT_TRANSFORMATION,
    DELETE_TRANSFORMATION,
    SORT_TRANSFORMATION,
    TEXT_TRANSFORMATION,
    AGGREGATE_FUNCTION,
    NUMBER_TRANSFORMATION,
    REMOVE_NULL_TRANSFORMATION,
    DATETIME_TRANSFORMATION,
    FINDREPLACE_TRANSFORMATION,
    DELETEROW_TRANSFORMATION,
    SWAPROWS_TRANSFORMATION
};

enum class TEXT_TRANSFORM_TYPE { TO_LOWER, TO_UPPER, CAPITALIZE, TRIM };

enum class AGGREGATE_FUNCTION { SUM, AVERAGE, MIN, MAX };

enum class NUMBER_TRANSFORM_TYPE { ROUND, ROUND_UP, ROUND_DOWN, ABSOLUTE, LOG_E, LOG_10, CUBE,
    SQUARE, SQUARE_ROOT, EXPONENT, IS_EVEN, IS_ODD, SIGN };

enum class DATETIME_TRANSFORMATION_TYPE { DATE_STRING, YEAR, START_OF_YEAR, END_OF_YEAR, MONTH,
    MONTH_NAME, START_OF_MONTH, END_OF_MONTH, DAY, DAY_OF_WEEK, DAY_OF_YEAR, QUARTER, START_OF_QUARTER,
    END_OF_QUARTER, TIME, HOUR, MINUTE, SECOND };

class SC_DLLPUBLIC DataTransformation
{
protected:

    static SCROW getLastRow(const ScDocument& rDoc, SCCOL nCol);

public:
    virtual ~DataTransformation();

    virtual void Transform(ScDocument& rDoc) const = 0;

    virtual TransformationType getTransformationType() const = 0;

};

class SC_DLLPUBLIC ColumnRemoveTransformation : public DataTransformation
{
    std::set<SCCOL> maColumns;

public:

    ColumnRemoveTransformation(std::set<SCCOL>&& rColumns);
    virtual ~ColumnRemoveTransformation() override;
    virtual void Transform(ScDocument& rDoc) const override;
    virtual TransformationType getTransformationType() const override;
    const std::set<SCCOL> & getColumns() const;
};

class SC_DLLPUBLIC SplitColumnTransformation : public DataTransformation
{
    SCCOL mnCol;
    sal_Unicode mcSeparator;

public:

    SplitColumnTransformation(SCCOL nCol, sal_Unicode cSeparator);
    virtual void Transform(ScDocument& rDoc) const override;
    virtual TransformationType getTransformationType() const override;
    SCCOL getColumn() const;
    sal_Unicode getSeparator() const;
};

class SC_DLLPUBLIC MergeColumnTransformation : public DataTransformation
{
    std::set<SCCOL> maColumns;
    OUString maMergeString;

public:

    MergeColumnTransformation(std::set<SCCOL>&& rColumns, OUString aMergeString);
    virtual void Transform(ScDocument& rDoc) const  override;
    virtual TransformationType getTransformationType() const override;
    const OUString & getMergeString() const;
    const std::set<SCCOL> & getColumns() const;
};

class SortTransformation : public DataTransformation
{
    ScSortParam maSortParam;
public:

    SortTransformation(const ScSortParam& rParam);
    virtual void Transform(ScDocument& rDoc) const override;
    virtual TransformationType getTransformationType() const override;
    const ScSortParam & getSortParam() const;
};

class SC_DLLPUBLIC TextTransformation : public DataTransformation
{
    std::set<SCCOL> mnCol;
    TEXT_TRANSFORM_TYPE maType;

    public:
    TextTransformation(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;
    const std::set<SCCOL>& getColumns() const;
};

class SC_DLLPUBLIC AggregateFunction : public DataTransformation
{
    std::set<SCCOL> maColumns;
    AGGREGATE_FUNCTION maType;

    public:
    AggregateFunction(std::set<SCCOL>&& rColumns, const AGGREGATE_FUNCTION rType);
    virtual void Transform(ScDocument& rDoc) const override;
    virtual TransformationType getTransformationType() const override;
    AGGREGATE_FUNCTION getAggregateType() const;
    const std::set<SCCOL>& getColumns() const;
};

class SC_DLLPUBLIC NumberTransformation : public DataTransformation
{
    std::set<SCCOL> mnCol;
    NUMBER_TRANSFORM_TYPE maType;
    int maPrecision;

    public:
        NumberTransformation(std::set<SCCOL>&& nCol, const NUMBER_TRANSFORM_TYPE rType);
        NumberTransformation(std::set<SCCOL>&& nCol, const NUMBER_TRANSFORM_TYPE rType,
                             int nPrecision);
        virtual void Transform(ScDocument& rDoc) const override;
        virtual TransformationType getTransformationType() const override;
        NUMBER_TRANSFORM_TYPE getNumberTransformationType() const;
        int getPrecision() const;
        const std::set<SCCOL>& getColumn() const;
};

class SC_DLLPUBLIC ReplaceNullTransformation : public DataTransformation
{
    std::set<SCCOL> mnCol;
    OUString msReplaceWith;

    public:
        ReplaceNullTransformation(std::set<SCCOL>&& nCol, OUString sReplaceWith);
        virtual void Transform(ScDocument& rDoc) const override;
        virtual TransformationType getTransformationType() const override;
        const std::set<SCCOL>& getColumn() const;
        const OUString& getReplaceString() const;
};

class SC_DLLPUBLIC DateTimeTransformation : public DataTransformation
{
    std::set<SCCOL> mnCol;
    DATETIME_TRANSFORMATION_TYPE maType;

    public:
        DateTimeTransformation(std::set<SCCOL>&& nCol,
                               const DATETIME_TRANSFORMATION_TYPE rType);
        virtual void Transform(ScDocument& rDoc) const override;
        virtual TransformationType getTransformationType() const override;
        DATETIME_TRANSFORMATION_TYPE getDateTimeTransformationType() const;
        const std::set<SCCOL>& getColumn() const;
};

class FindReplaceTransformation : public DataTransformation
{
    SCCOL mnCol;
    OUString maFindString;
    OUString maReplaceString;

    public:
        FindReplaceTransformation(SCCOL nCol, OUString aFindString, OUString aReplaceString);
        virtual void Transform(ScDocument& rDoc) const override;
        virtual TransformationType getTransformationType() const override;
        SCCOL getColumn() const;
        const OUString & getFindString() const;
        const OUString & getReplaceString() const;
};

class DeleteRowTransformation : public DataTransformation
{
    SCCOL mnCol;
    OUString maFindString;

    public:
        DeleteRowTransformation(SCCOL nCol, OUString aFindString);
        virtual void Transform(ScDocument& rDoc) const override;
        virtual TransformationType getTransformationType() const override;
        SCCOL getColumn() const;
        const OUString & getFindString() const;
};

class SwapRowsTransformation : public DataTransformation
{
    SCROW mxRow, nxRow;

    public:
        SwapRowsTransformation(SCROW mRow, SCROW nRow);
        virtual void Transform(ScDocument& rDoc) const override;
        virtual TransformationType getTransformationType() const override;
        SCROW getFirstRow() const;
        SCROW getSecondRow() const;
};

}

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Messung V0.5
C=95 H=94 G=94

¤ Dauer der Verarbeitung: 0.14 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge