File indexing completed on 2024-05-12 05:48:41

0001 /*
0002     SPDX-FileCopyrightText: 2007 Nicolas Ternisien <nicolas.ternisien@gmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "xorgAnalyzer.h"
0008 #include <KLocalizedString>
0009 
0010 XorgAnalyzer::XorgAnalyzer(LogMode *logMode)
0011     : FileAnalyzer(logMode)
0012     , mCurrentDateTime(QDateTime::currentDateTime())
0013 {
0014     initializeTypeName();
0015 }
0016 
0017 XorgAnalyzer::~XorgAnalyzer()
0018 {
0019 }
0020 
0021 LogViewColumns XorgAnalyzer::initColumns()
0022 {
0023     LogViewColumns columns;
0024 
0025     columns.addColumn(LogViewColumn(i18n("Line"), false, false));
0026     columns.addColumn(LogViewColumn(i18n("Type"), false, false));
0027     columns.addColumn(LogViewColumn(i18n("Message"), false, false));
0028 
0029     columns.setGroupByDay(false);
0030     columns.setGroupByHour(false);
0031 
0032     return columns;
0033 }
0034 
0035 LogFileReader *XorgAnalyzer::createLogFileReader(const LogFile &logFile)
0036 {
0037     return new LocalLogFileReader(logFile);
0038 }
0039 
0040 Analyzer::LogFileSortMode XorgAnalyzer::logFileSortMode()
0041 {
0042     return Analyzer::AscendingSortedLogFile;
0043 }
0044 
0045 LogLine *XorgAnalyzer::parseMessage(const QString &logLine, const LogFile &originalFile)
0046 {
0047     QString string(logLine);
0048 
0049     const QString type = string.left(4);
0050 
0051     LogLevel *logLineType = findTypeName(type);
0052 
0053     // If the type is not empty, the log message has a type, so we can delete it
0054     if (logLineType) {
0055         string.remove(0, 5);
0056     } else {
0057         logLineType = Globals::instance().informationLogLevel();
0058     }
0059 
0060     QStringList list;
0061     list.append(logLineType->name());
0062     list.append(string);
0063 
0064     return new LogLine(mLogLineInternalIdGenerator++, mCurrentDateTime, list, originalFile.url().toLocalFile(), logLineType, mLogMode);
0065 }
0066 
0067 void XorgAnalyzer::initializeTypeName()
0068 {
0069     mXorgLevels[QStringLiteral("(--)")] = new LogLevel(1001, i18n("Probed"), QStringLiteral(PROBED_LOG_LEVEL_ICON), QColor(246, 206, 30), this);
0070 
0071     mXorgLevels[QStringLiteral("(**)")] = new LogLevel(1002, i18n("From config file"), QStringLiteral(CONFIG_FILE_LOG_LEVEL_ICON), QColor(161, 133, 240), this);
0072 
0073     mXorgLevels[QStringLiteral("(==)")] =
0074         new LogLevel(1003, i18n("Default setting"), QStringLiteral(DEFAULT_SETTING_LOG_LEVEL_ICON), QColor(169, 189, 165), this);
0075 
0076     mXorgLevels[QStringLiteral("(++)")] =
0077         new LogLevel(1004, i18n("From command Line"), QStringLiteral(COMMAND_LINE_LOG_LEVEL_ICON), QColor(179, 181, 214), this);
0078 
0079     mXorgLevels[QStringLiteral("(!!)")] = Globals::instance().noticeLogLevel();
0080     mXorgLevels[QStringLiteral("(II)")] = Globals::instance().informationLogLevel();
0081     mXorgLevels[QStringLiteral("(WW)")] = Globals::instance().warningLogLevel();
0082     mXorgLevels[QStringLiteral("(EE)")] = Globals::instance().errorLogLevel();
0083 
0084     mXorgLevels[QStringLiteral("(NI)")] =
0085         new LogLevel(1005, i18n("Not implemented"), QStringLiteral(NOT_IMPLEMENTED_LOG_LEVEL_ICON), QColor(136, 146, 240), this);
0086 
0087     mXorgLevels[QStringLiteral("(\?\?)")] = Globals::instance().noLogLevel();
0088 }
0089 
0090 LogLevel *XorgAnalyzer::findTypeName(const QString &type)
0091 {
0092     QMap<QString, LogLevel *>::iterator it;
0093 
0094     it = mXorgLevels.find(type);
0095     if (it != mXorgLevels.end()) {
0096         return *it;
0097     } else {
0098         return nullptr;
0099     }
0100 }
0101 
0102 #include "moc_xorgAnalyzer.cpp"