summaryrefslogtreecommitdiffstats
path: root/ksystemlog/src/cups/cupsReader.cpp
blob: 1d472ae39bf2e4e75cd1ec38bb3007e8c6540ab9 (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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
/***************************************************************************
 *   Copyright (C) 2005 by Nicolas Ternisien                               *
 *   nicolas.ternisien@gmail.com                                           *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   This program is distributed in the hope that it will be useful,       *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program; if not, write to the                         *
 *   Free Software Foundation, Inc.,                                       *
 *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.             *
 ***************************************************************************/

#include <klocale.h>
#include <kmessagebox.h>

#include "parsingHelper.h"
#include "cupsReader.h"

#define DEBUG2_LOG_LEVEL_ICON "source"

CupsReader::CupsReader(TQObject *parent, const char *name) : 
	DefaultReader(parent, name)
	{
	
	initializeTypeLevels();
}


CupsReader::~CupsReader() {

}


void CupsReader::initColumns(LogViewColumns* columns) {
	columns->append(new LogViewColumn(i18n("Date"), true, false));
	columns->append(new LogViewColumn(i18n("Message"), true, false));

}


LogLine* CupsReader::parseMessage(TQString& logLine, LogFile* logFile) {
	/*
	 * Log line examples :
	 * I [15/Feb/2004:01:29:32 +0100] LoadPPDs: No new or changed PPDs...
	 * E [15/Feb/2004:01:43:15 +0100] Scheduler shutting down due to SIGTERM.
	 */
	
	TQChar level=logLine[0];
	
	TQString strDateTime=logLine.mid(2, 28);
	TQDateTime dateTime=ParsingHelper::parseDateTimeFromHTTP(strDateTime);
	TQDate date=dateTime.date();
	TQTime time=dateTime.time();
		
	TQString message=logLine.remove(0, 31);
	
	LogLevel* logLevel=getTypeLevel(level);
	
	TQStringList list;
	list.push_back(message);
	
	TQString filePath=logFile->url.path();
		
	LogLine* line=new LogLine(date, time, list, filePath, logLevel, Globals::cupsMode->id);
	
	return(line);
}


void CupsReader::initializeTypeLevels() {
	mapTypeLevels['d']=new LogLevel(20, i18n("debug 2"), DEBUG2_LOG_LEVEL_ICON, TQColor(169, 189, 165));
	mapTypeLevels['D']=Globals::debugLogLevel;
	mapTypeLevels['I']=Globals::informationLogLevel;
	mapTypeLevels['N']=Globals::noticeLogLevel;
	mapTypeLevels['W']=Globals::warningLogLevel;
	mapTypeLevels['E']=Globals::errorLogLevel;
	mapTypeLevels['C']=Globals::criticalLogLevel;
	mapTypeLevels['A']=Globals::alertLogLevel;
	mapTypeLevels['X']=Globals::emergencyLogLevel;
	mapTypeLevels[' ']=Globals::noneLogLevel;
}

LogLevel* CupsReader::getTypeLevel(const TQChar& type) {
	TQMap<TQChar, LogLevel*>::iterator it;
	
	it=mapTypeLevels.find(type);
	if (it!=mapTypeLevels.end()) {
		return(*it);
	}
	else {
		kdDebug() << i18n("New Log Level detected: Please send this log file to the KSystemLog developer to add it.") << endl;
		return(Globals::noneLogLevel);
	}
}



#include "cupsReader.moc"