libodsstream
Library for mass spectrometry
Loading...
Searching...
No Matches
TsvDirectoryWriter Class Reference

#include <tsvdirectorywriter.h>

Inheritance diagram for TsvDirectoryWriter:
CalcWriterInterface TsvOutputStream ZipTsvOutputStream

Public Member Functions

 TsvDirectoryWriter (const QDir &directory)
 
virtual ~TsvDirectoryWriter ()
 
virtual void close () override
 
virtual void writeSheet (const QString &sheetName) override
 open a new sheet
 
void writeLine () override
 open a new line
 
void writeCell (const char *) override
 write a text cell
 
void writeCell (const QString &) override
 write a text cell
 
void writeEmptyCell () override
 write an empty cell
 
void writeCell (std::size_t) override
 write an unsigned integer in a cell
 
void writeCell (int) override
 write an integer in a cell
 
void writeCell (float) override
 write a float in a cell
 
void writeCell (double) override
 write a double in a cell
 
void writeCellPercentage (double value) override
 write a double as a percentage
 
void writeCell (bool) override
 write a boolean in a cell
 
void writeCell (const QDate &) override
 write a date in a cell
 
void writeCell (const QDateTime &) override
 write a timestamp in a cell
 
void writeCell (const QUrl &, const QString &) override
 write a text cell with an URL link
 
void setCellAnnotation (const QString &annotation) override
 set annotation to write in the next cell
 
void setSeparator (TsvSeparator separator)
 sets the separator to use between values (cells)
 
TsvSeparator getSeparator () const
 get the separator used between values (cells)
 
bool setQuoteStrings (bool quote_strings)
 set a flag to quote strings
 
bool isQuoteStrings () const
 tells if the quote string flag is enabled
 
bool setFlushLines (bool flushOk)
 enable a physical flush on device at each new line enables this if you want to ensure that each line is written. This costs a little overhead
 
bool isFlushLines () const
 tells if the flush lines flag is enabled
 
- Public Member Functions inherited from CalcWriterInterface
virtual ~CalcWriterInterface ()
 
virtual OdsTableCellStyleRef getTableCellStyleRef (const OdsTableCellStyle &style)
 
virtual void setTableCellStyleRef (OdsTableCellStyleRef style_ref)
 
void clearTableCellStyleRef ()
 
virtual void addColorScale (const OdsColorScale &ods_color_scale)
 apply solor scale conditional format on a cell range
 
virtual QString getOdsCellCoordinate ()
 get the last written cell coordinate in ODS coordinate format get the coordinate of the last written cell or an empty string if the writer is not an OdsDocWriter
 
virtual void setCurrentOdsTableSettings (const OdsTableSettings &settings)
 set ODS table settings of the current sheet (table)
 
virtual void writeCellVariant (const QVariant &var)
 write a cell for a given QVariant
 

Protected Member Functions

 TsvDirectoryWriter ()
 
void writeRawCell (const QString &text)
 
void initializeSheet ()
 

Protected Attributes

QString m_separator = "\t"
 
QString _end_of_line = "\n"
 
QTextStream * mpa_otxtstream = nullptr
 
unsigned int numFloatPrecision = 12
 

Private Member Functions

void ensureSheet ()
 

Private Attributes

const QDir _directory
 
QString _file_extension = ".tsv"
 
bool m_quoteStrings = false
 
bool m_flushLines = false
 
TsvSeparator m_tsvSeparatorEnum = TsvSeparator::tab
 
bool _tableRowStart = true
 
bool _startingSheet = false
 
QFile * mpa_ofile = nullptr
 

Detailed Description

Definition at line 32 of file tsvdirectorywriter.h.

Constructor & Destructor Documentation

◆ TsvDirectoryWriter() [1/2]

TsvDirectoryWriter::TsvDirectoryWriter ( const QDir &  directory)

Definition at line 30 of file tsvdirectorywriter.cpp.

31 : _directory(directory)
32{
33 if(_directory.exists())
34 {
35 }
36 else
37 {
38 if(!_directory.mkdir(_directory.absolutePath()))
39 {
40 throw OdsException(QString("unable to create output directory %1")
41 .arg(_directory.absolutePath()));
42 }
43 }
44}

References _directory.

◆ ~TsvDirectoryWriter()

TsvDirectoryWriter::~TsvDirectoryWriter ( )
virtual

Definition at line 46 of file tsvdirectorywriter.cpp.

47{
48 close();
49}
virtual void close() override

References close().

◆ TsvDirectoryWriter() [2/2]

TsvDirectoryWriter::TsvDirectoryWriter ( )
protected

Definition at line 26 of file tsvdirectorywriter.cpp.

27{
28}

Member Function Documentation

◆ close()

void TsvDirectoryWriter::close ( )
overridevirtual

Implements CalcWriterInterface.

Reimplemented in TsvOutputStream, and ZipTsvOutputStream.

Definition at line 72 of file tsvdirectorywriter.cpp.

73{
74 if(mpa_otxtstream != nullptr)
75 {
77 mpa_otxtstream->flush();
78 //_p_otxtstream->close();
79 delete(mpa_otxtstream);
80 mpa_otxtstream = nullptr;
81 }
82 if(mpa_ofile != nullptr)
83 {
84 mpa_ofile->flush();
85 mpa_ofile->close();
86 delete(mpa_ofile);
87 mpa_ofile = nullptr;
88 }
89}
QTextStream * mpa_otxtstream

References _end_of_line, mpa_ofile, and mpa_otxtstream.

Referenced by ~TsvDirectoryWriter(), ZipTsvOutputStream::close(), and writeSheet().

◆ ensureSheet()

void TsvDirectoryWriter::ensureSheet ( )
private

Definition at line 125 of file tsvdirectorywriter.cpp.

126{
127 if(mpa_otxtstream == nullptr)
128 {
129 writeSheet("default");
130 }
131}
virtual void writeSheet(const QString &sheetName) override
open a new sheet

References mpa_otxtstream, and writeSheet().

Referenced by writeCell(), writeEmptyCell(), writeLine(), and writeRawCell().

◆ getSeparator()

TsvSeparator TsvDirectoryWriter::getSeparator ( ) const

get the separator used between values (cells)

Returns
TsvSeparator used

Definition at line 293 of file tsvdirectorywriter.cpp.

294{
295 return m_tsvSeparatorEnum;
296}
TsvSeparator m_tsvSeparatorEnum

References m_tsvSeparatorEnum.

◆ initializeSheet()

void TsvDirectoryWriter::initializeSheet ( )
protected

Definition at line 116 of file tsvdirectorywriter.cpp.

117{
118
119 _tableRowStart = true;
120 _startingSheet = true;
121}

References _startingSheet, and _tableRowStart.

Referenced by writeSheet(), and ZipTsvOutputStream::writeSheet().

◆ isFlushLines()

bool TsvDirectoryWriter::isFlushLines ( ) const

tells if the flush lines flag is enabled

Definition at line 280 of file tsvdirectorywriter.cpp.

281{
282 return m_flushLines;
283}

References m_flushLines.

◆ isQuoteStrings()

bool TsvDirectoryWriter::isQuoteStrings ( ) const

tells if the quote string flag is enabled

Definition at line 274 of file tsvdirectorywriter.cpp.

275{
276 return m_quoteStrings;
277}

References m_quoteStrings.

◆ setCellAnnotation()

void TsvDirectoryWriter::setCellAnnotation ( const QString &  annotation)
inlineoverridevirtual

set annotation to write in the next cell

Parameters
annotationany comment on this cell

Implements CalcWriterInterface.

Definition at line 55 of file tsvdirectorywriter.h.

55{};

◆ setFlushLines()

bool TsvDirectoryWriter::setFlushLines ( bool  flushOk)

enable a physical flush on device at each new line enables this if you want to ensure that each line is written. This costs a little overhead

Parameters
boolif true, lines will be flushed, choose false otherwise
Returns
bool state of the modified flag

Definition at line 286 of file tsvdirectorywriter.cpp.

287{
288 m_flushLines = flushOk;
289 return m_flushLines;
290}

References m_flushLines.

◆ setQuoteStrings()

bool TsvDirectoryWriter::setQuoteStrings ( bool  quote_strings)

set a flag to quote strings

Parameters
boolif true, strings will be quoted, choose false otherwise
Returns
bool state of the modified flag

Definition at line 267 of file tsvdirectorywriter.cpp.

268{
269 m_quoteStrings = quote_strings;
270 return m_quoteStrings;
271}

References m_quoteStrings.

◆ setSeparator()

void TsvDirectoryWriter::setSeparator ( TsvSeparator  separator)

sets the separator to use between values (cells)

Parameters
TsvSeparatorenumeration to choose between possible choices

Definition at line 52 of file tsvdirectorywriter.cpp.

53{
54 qDebug();
55 m_tsvSeparatorEnum = separator;
56 switch(separator)
57 {
59 m_separator = "\t";
60 break;
62 m_separator = ",";
63 break;
65 m_separator = ";";
66 break;
67 }
68 qDebug();
69}

References comma, m_separator, m_tsvSeparatorEnum, semicolon, and tab.

◆ writeCell() [1/10]

void TsvDirectoryWriter::writeCell ( bool  true_or_false)
overridevirtual

write a boolean in a cell

Parameters
true_or_falseboolean to write

Implements CalcWriterInterface.

Definition at line 237 of file tsvdirectorywriter.cpp.

238{
239 if(isOk)
240 {
241 writeRawCell(QString("T"));
242 }
243 else
244 {
245 writeRawCell(QString("F"));
246 }
247}
void writeRawCell(const QString &text)

References writeRawCell().

◆ writeCell() [2/10]

void TsvDirectoryWriter::writeCell ( const char *  cell_text)
overridevirtual

write a text cell

Parameters
cell_textcell text

Implements CalcWriterInterface.

Definition at line 151 of file tsvdirectorywriter.cpp.

152{
153 writeCell(QString(cstr));
154}
void writeCell(const char *) override
write a text cell

References writeCell().

Referenced by writeCell(), writeCell(), and writeCellPercentage().

◆ writeCell() [3/10]

void TsvDirectoryWriter::writeCell ( const QDate &  date)
overridevirtual

write a date in a cell

Parameters
datedate to write

Implements CalcWriterInterface.

Definition at line 249 of file tsvdirectorywriter.cpp.

250{
251 writeRawCell(date.toString("yyyy-MM-dd"));
252}

References writeRawCell().

◆ writeCell() [4/10]

void TsvDirectoryWriter::writeCell ( const QDateTime &  datetime)
overridevirtual

write a timestamp in a cell

Parameters
datetimetimestamp to write

Implements CalcWriterInterface.

Definition at line 254 of file tsvdirectorywriter.cpp.

255{
256 writeRawCell(date.toString("yyyy-MM-ddThh:mm:ss"));
257}

References writeRawCell().

◆ writeCell() [5/10]

void TsvDirectoryWriter::writeCell ( const QString &  cell_text)
overridevirtual

write a text cell

Parameters
cell_textcell text

Implements CalcWriterInterface.

Definition at line 156 of file tsvdirectorywriter.cpp.

157{
158 ensureSheet();
159 if(!_tableRowStart)
160 {
162 }
163 _tableRowStart = false;
164
166 {
167 *mpa_otxtstream << QString("\"%1\"").arg(
168 QString(text).replace("\"", "\"\""));
169 }
170 else
171 {
172 if(text.contains(_end_of_line) || text.contains(m_separator) ||
173 text.contains("\""))
174 {
175 *mpa_otxtstream << QString("\"%1\"").arg(
176 QString(text).replace("\"", "\"\""));
177 }
178 else
179 {
180 *mpa_otxtstream << text;
181 }
182 }
183
184 _startingSheet = false;
185}

References _end_of_line, _startingSheet, _tableRowStart, ensureSheet(), m_quoteStrings, m_separator, and mpa_otxtstream.

◆ writeCell() [6/10]

void TsvDirectoryWriter::writeCell ( const QUrl &  url_link,
const QString &  text 
)
overridevirtual

write a text cell with an URL link

Parameters
url_linkURL link
texttext to write

Implements CalcWriterInterface.

Definition at line 259 of file tsvdirectorywriter.cpp.

261{
262 writeCell(text);
263}

References writeCell().

◆ writeCell() [7/10]

void TsvDirectoryWriter::writeCell ( double  number)
overridevirtual

write a double in a cell

Parameters
numberdouble to write

Implements CalcWriterInterface.

Definition at line 226 of file tsvdirectorywriter.cpp.

227{
228 writeRawCell(QString::number(num, 'g', numFloatPrecision));
229}
unsigned int numFloatPrecision

References numFloatPrecision, and writeRawCell().

◆ writeCell() [8/10]

void TsvDirectoryWriter::writeCell ( float  number)
overridevirtual

write a float in a cell

Parameters
numberfloat to write

Implements CalcWriterInterface.

Definition at line 221 of file tsvdirectorywriter.cpp.

222{
223 writeRawCell(QString::number(num, 'g', numFloatPrecision));
224}

References numFloatPrecision, and writeRawCell().

◆ writeCell() [9/10]

void TsvDirectoryWriter::writeCell ( int  number)
overridevirtual

write an integer in a cell

Parameters
numberinteger to write

Implements CalcWriterInterface.

Definition at line 216 of file tsvdirectorywriter.cpp.

217{
218 writeRawCell(QString::number(num, 'g', 10));
219}

References writeRawCell().

◆ writeCell() [10/10]

void TsvDirectoryWriter::writeCell ( std::size_t  number)
overridevirtual

write an unsigned integer in a cell

Parameters
numberinteger to write

Implements CalcWriterInterface.

Definition at line 211 of file tsvdirectorywriter.cpp.

212{
213 writeRawCell(QString::number(num, 'g', 10));
214}

References writeRawCell().

◆ writeCellPercentage()

void TsvDirectoryWriter::writeCellPercentage ( double  value)
overridevirtual

write a double as a percentage

Parameters
numberdouble to write must be a ratio (0.5 == 50%)

Implements CalcWriterInterface.

Definition at line 232 of file tsvdirectorywriter.cpp.

233{
234 writeCell(value);
235}

References writeCell().

◆ writeEmptyCell()

void TsvDirectoryWriter::writeEmptyCell ( )
overridevirtual

write an empty cell

Implements CalcWriterInterface.

Definition at line 200 of file tsvdirectorywriter.cpp.

201{
202 ensureSheet();
203 if(!_tableRowStart)
204 {
206 }
207 _tableRowStart = false;
208 _startingSheet = false;
209}

References _startingSheet, _tableRowStart, ensureSheet(), m_separator, and mpa_otxtstream.

◆ writeLine()

void TsvDirectoryWriter::writeLine ( )
overridevirtual

open a new line

Implements CalcWriterInterface.

Definition at line 134 of file tsvdirectorywriter.cpp.

135{
136 ensureSheet();
138 {
139 }
140 else
141 {
143 }
144 _startingSheet = false;
145 _tableRowStart = true;
146
147 if(m_flushLines)
148 mpa_otxtstream->flush();
149}

References _end_of_line, _startingSheet, _tableRowStart, ensureSheet(), m_flushLines, and mpa_otxtstream.

◆ writeRawCell()

void TsvDirectoryWriter::writeRawCell ( const QString &  text)
protected

Definition at line 188 of file tsvdirectorywriter.cpp.

189{
190 ensureSheet();
191 if(!_tableRowStart)
192 {
194 }
195 _tableRowStart = false;
196 *mpa_otxtstream << text;
197 _startingSheet = false;
198}

References _startingSheet, _tableRowStart, ensureSheet(), m_separator, and mpa_otxtstream.

Referenced by writeCell(), writeCell(), writeCell(), writeCell(), writeCell(), writeCell(), and writeCell().

◆ writeSheet()

void TsvDirectoryWriter::writeSheet ( const QString &  sheetName)
overridevirtual

open a new sheet

Parameters
sheetNamethe sheet name

Implements CalcWriterInterface.

Reimplemented in TsvOutputStream, and ZipTsvOutputStream.

Definition at line 92 of file tsvdirectorywriter.cpp.

93{
94 close();
95 // qDebug() << " TsvDirectoryWriter::writeSheet " <<
96 // _directory.absolutePath();
97 mpa_ofile = new QFile(QString(_directory.absolutePath())
98 .append("/")
99 .append(sheetName)
100 .append(this->_file_extension));
101 // qDebug() << " TsvDirectoryWriter::writeSheet " <<
102 // QFileInfo(*_p_ofile).absoluteFilePath();
103 if(mpa_ofile->open(QIODevice::WriteOnly))
104 {
105 mpa_otxtstream = new QTextStream(mpa_ofile);
106 }
107 else
108 {
109 throw OdsException(QString("unable to write into file %1")
110 .arg(QFileInfo(*mpa_ofile).absoluteFilePath()));
111 }
113}

References _directory, close(), initializeSheet(), mpa_ofile, and mpa_otxtstream.

Referenced by ensureSheet().

Member Data Documentation

◆ _directory

const QDir TsvDirectoryWriter::_directory
private

Definition at line 109 of file tsvdirectorywriter.h.

Referenced by TsvDirectoryWriter(), and writeSheet().

◆ _end_of_line

QString TsvDirectoryWriter::_end_of_line = "\n"
protected

Definition at line 104 of file tsvdirectorywriter.h.

Referenced by close(), writeCell(), writeLine(), and TsvOutputStream::writeSheet().

◆ _file_extension

QString TsvDirectoryWriter::_file_extension = ".tsv"
private

Definition at line 111 of file tsvdirectorywriter.h.

◆ _startingSheet

bool TsvDirectoryWriter::_startingSheet = false
private

◆ _tableRowStart

bool TsvDirectoryWriter::_tableRowStart = true
private

◆ m_flushLines

bool TsvDirectoryWriter::m_flushLines = false
private

Definition at line 114 of file tsvdirectorywriter.h.

Referenced by isFlushLines(), setFlushLines(), and writeLine().

◆ m_quoteStrings

bool TsvDirectoryWriter::m_quoteStrings = false
private

Definition at line 113 of file tsvdirectorywriter.h.

Referenced by isQuoteStrings(), setQuoteStrings(), and writeCell().

◆ m_separator

QString TsvDirectoryWriter::m_separator = "\t"
protected

Definition at line 103 of file tsvdirectorywriter.h.

Referenced by setSeparator(), writeCell(), writeEmptyCell(), and writeRawCell().

◆ m_tsvSeparatorEnum

TsvSeparator TsvDirectoryWriter::m_tsvSeparatorEnum = TsvSeparator::tab
private

Definition at line 115 of file tsvdirectorywriter.h.

Referenced by getSeparator(), and setSeparator().

◆ mpa_ofile

QFile* TsvDirectoryWriter::mpa_ofile = nullptr
private

Definition at line 120 of file tsvdirectorywriter.h.

Referenced by close(), and writeSheet().

◆ mpa_otxtstream

◆ numFloatPrecision

unsigned int TsvDirectoryWriter::numFloatPrecision = 12
protected

Definition at line 106 of file tsvdirectorywriter.h.

Referenced by writeCell(), and writeCell().


The documentation for this class was generated from the following files: