#3320 Observed data import. Line based CSV import

This commit is contained in:
Bjørn Erik Jensen
2018-09-19 13:02:49 +02:00
parent c1c87a0370
commit ce59e8a0d0
12 changed files with 311 additions and 66 deletions

View File

@@ -39,6 +39,9 @@ class AsciiDataParseOptions;
//==================================================================================================
class RifCsvUserDataParser
{
public:
enum CsvLayout { ColumnBased, LineBased };
public:
RifCsvUserDataParser(QString* errorText = nullptr);
virtual ~RifCsvUserDataParser();
@@ -46,12 +49,14 @@ public:
bool parse(const AsciiDataParseOptions& parseOptions);
const TableData& tableData() const;
const Column* columnInfo(size_t columnIndex) const;
const Column* dateTimeColumn() const;
const Column* columnInfo(size_t columnIndex) const;
const Column* dateTimeColumn() const;
bool parseColumnInfo(const AsciiDataParseOptions& parseOptions);
QString previewText(int lineCount, const AsciiDataParseOptions& parseOptions);
CsvLayout determineCsvLayout();
QString tryDetermineCellSeparator();
QString tryDetermineDecimalSeparator(const QString& cellSeparator);
@@ -59,13 +64,16 @@ public:
protected:
virtual QTextStream* openDataStream() = 0;
virtual void closeDataStream() = 0;
virtual void closeDataStream() = 0;
private:
std::vector<int> parseLineBasedHeader(QStringList headerCols);
bool parseColumnInfo(QTextStream* dataStream,
const AsciiDataParseOptions& parseOptions,
std::vector<Column>* columnInfoList);
bool parseData(const AsciiDataParseOptions& parseOptions);
bool parseColumnBasedData(const AsciiDataParseOptions& parseOptions);
bool parseLineBasedData();
static QDateTime tryParseDateTime(const std::string& colData, const QString& format);
private: