Added first project implementation
This commit is contained in:
112
LogParser.cpp
Normal file
112
LogParser.cpp
Normal file
@@ -0,0 +1,112 @@
|
||||
#include "LogParser.h"
|
||||
|
||||
#include <QDir>
|
||||
#include <QFile>
|
||||
|
||||
#include <QDebug>
|
||||
|
||||
LogParser::LogParser(QObject* parent)
|
||||
: QObject{parent}
|
||||
{
|
||||
logFolder = "C:/Users/Yury/Documents/M1300LogFolder";
|
||||
}
|
||||
|
||||
LogParser::~LogParser()
|
||||
{
|
||||
}
|
||||
|
||||
void LogParser::setLogFolder(const QString& folder)
|
||||
{
|
||||
logFolder = folder;
|
||||
}
|
||||
|
||||
void LogParser::setStartDateTime(const QDateTime& dateTime)
|
||||
{
|
||||
startDateTime = dateTime;
|
||||
}
|
||||
|
||||
void LogParser::setEndDateTime(const QDateTime& dateTime)
|
||||
{
|
||||
endDateTime = dateTime;
|
||||
}
|
||||
|
||||
QString LogParser::getLogFolder() const
|
||||
{
|
||||
return logFolder;
|
||||
}
|
||||
|
||||
QDateTime LogParser::getStartDateTime() const
|
||||
{
|
||||
return startDateTime;
|
||||
}
|
||||
|
||||
QDateTime LogParser::getEndDateTime() const
|
||||
{
|
||||
return endDateTime;
|
||||
}
|
||||
|
||||
QStringList LogParser::logFilesByDateTime() const
|
||||
{
|
||||
QStringList files;
|
||||
for (const auto& fileInfo: QDir(logFolder).entryInfoList())
|
||||
{
|
||||
const auto fileTime = fileInfo.baseName();
|
||||
auto date = QDateTime::fromString(fileTime, "yyMMdd_hhmmss");
|
||||
if (date.date().year() < 2000)
|
||||
{
|
||||
date = date.addYears(100);
|
||||
}
|
||||
|
||||
if (date.isValid() && date >= startDateTime && date <= endDateTime)
|
||||
{
|
||||
files.append(fileInfo.absoluteFilePath());
|
||||
}
|
||||
}
|
||||
|
||||
return files;
|
||||
}
|
||||
|
||||
QList<DataTypes::LogMessage> LogParser::logMessagesByDateTime() const
|
||||
{
|
||||
QList<DataTypes::LogMessage> logMessages;
|
||||
|
||||
const auto logFiles = logFilesByDateTime();
|
||||
for (const auto& logFile: logFiles)
|
||||
{
|
||||
QFile file(logFile);
|
||||
if (!file.open(QFile::ReadOnly))
|
||||
{
|
||||
qWarning() << "Can't open" << logFile;
|
||||
continue;
|
||||
}
|
||||
|
||||
while (!file.atEnd())
|
||||
{
|
||||
const auto line = QString::fromUtf8(file.readLine());
|
||||
if (line.startsWith("RTC"))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
const auto parameters = line.split(';');
|
||||
if (parameters.size() < 7)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
DataTypes::LogMessage message;
|
||||
message.dateTime = QDateTime::fromSecsSinceEpoch(parameters.at(0).toULongLong());
|
||||
message.startupTime = parameters.at(1).toULongLong();
|
||||
message.type = static_cast<DataTypes::MessageType>(parameters.at(2).toUInt());
|
||||
message.f1 = parameters.at(3).toLongLong();
|
||||
message.f2 = parameters.at(4).toLongLong();
|
||||
message.f3 = parameters.at(5).toLongLong();
|
||||
message.f4 = parameters.at(6).toLongLong();
|
||||
|
||||
// qDebug() << message.dateTime << message.startupTime << int(message.type);
|
||||
logMessages.append(message);
|
||||
}
|
||||
}
|
||||
|
||||
return logMessages;
|
||||
}
|
||||
Reference in New Issue
Block a user