summaryrefslogtreecommitdiff
path: root/src/dictionary/DicCsvReader.h
blob: 9e990dde708b523719cfd7940729ec1c44c53ac5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#ifndef DICCSVREADER_H
#define DICCSVREADER_H

#include <QFile>
#include <QString>
#include <QStringList>
#include <QRegExp>
#include <QTextStream>

#include "../export-import/CsvData.h"

class Dictionary;
class DicRecord;

class DicCsvReader
{
public:
    DicCsvReader( Dictionary* aDict );
    DicCsvReader(); // For reading entries

    QFile::FileError readDict( const QString aCsvFilePath, const CsvImportData& aImportData );
    QList<DicRecord*> readEntries( QString aCsvEntries, const CsvImportData& aImportData );
    QStringList fieldNames() { return m_fieldNames; }   // Last read field names
    QString unescapeString( QString aString );

private:
    void initData( const CsvImportData& aImportData );
    int readLines( QTextStream& aInStream );    // Returns max number of fields
    QStringList readFields( const QString aCsvLine );

private:
    Dictionary* m_dict; // Not own
    CsvImportData m_params;
    QRegExp m_fieldSepRx;
    QRegExp m_chunkEndRx;
    QRegExp m_singleDelimiterRx;
    QStringList m_fieldNames;
    QList<DicRecord*> m_entries; // Created, but ownership is transfered to the client
};

#endif // DICCSVREADER_H