Completed
Push — master ( 28c19e...a4e9ca )
by Joas
04:02
created

RuleMapper   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 235
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 0

Test Coverage

Coverage 95.68%

Importance

Changes 0
Metric Value
wmc 8
lcom 0
cbo 0
dl 0
loc 235
ccs 133
cts 139
cp 0.9568
rs 10
c 0
b 0
f 0

7 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A deleteAll() 0 4 1
A find() 0 4 1
A findAll() 0 4 1
A findByResult() 0 4 1
A findAllMatchedByStatus() 0 4 1
B populate() 0 179 2
1
<?php
2
/**
3
 * Copyright (c) 2015 Victor Dubiniuk <[email protected]>
4
 * This file is licensed under the Affero General Public License version 3 or
5
 * later.
6
 * See the COPYING-README file.
7
 */
8
9
namespace OCA\Files_Antivirus\Db;
10
11
use OCP\IDb;
12
use OCP\AppFramework\Db\Mapper;
13
14
use OCA\Files_Antivirus\Db\Rule;
15
use OCP\IDBConnection;
16
17
class RuleMapper extends Mapper {
18 6
	public function __construct(IDBConnection $db) {
19 6
		parent::__construct($db, 'files_avir_status', '\OCA\Files_Antivirus\Db\Rule');
20 6
	}
21
	
22
	/**
23
	 * Empty the table
24
	 * @return bool
25
	 */
26 4
	public function deleteAll(){
27 4
		$sql = 'DELETE FROM `*PREFIX*files_avir_status`';
28 4
		return $this->execute($sql);
29
	}
30
	
31
	/**
32
	 * Find rule by id
33
	 * @param int $id
34
	 * @return Rule
35
	 */
36
	public function find($id){
37
        $sql = 'SELECT * FROM *PREFIX*files_avir_status WHERE id = ?';
38
        return $this->findEntity($sql, array($id));
39
	}
40
	
41
	/**
42
	 * Get all rules
43
	 */
44
	public function findAll(){
45
		$sql = 'SELECT * FROM `*PREFIX*files_avir_status`';
46
        return $this->findEntities($sql);
47
	}
48
49
	/**
50
	 * Get collection of rules by given exit code
51
	 * @param int $result
52
	 * @return array
53
	 */
54 3
	public function findByResult($result){
55 3
		$sql = 'SELECT * FROM `*PREFIX*files_avir_status` WHERE `status_type`=? and `result`=?';
56 3
		return $this->findEntities($sql, array(Rule::RULE_TYPE_CODE, $result));
57
	}
58
	
59
	/**
60
	 * Get collection of rules of type Match
61
	 * @param int $status
62
	 * @return array
63
	 */
64 3
	public function findAllMatchedByStatus($status){
65 3
		$sql = 'SELECT * FROM `*PREFIX*files_avir_status` WHERE `status_type`=? and `status`=?';
66 3
		return $this->findEntities($sql, array(Rule::RULE_TYPE_MATCH, $status));
67
	}
68
	
69
	/**
70
	 * Fill the table with rules used with clamav
71
	 */
72 4
	public function populate(){
73
		$descriptions = array(
74
			array(
75 4
				'groupId' => 0,
76 4
				'statusType' => Rule::RULE_TYPE_CODE,
77 4
				'result' => 0,
78 4
				'match' => '',
79 4
				'description' => "",
80
				'status' => \OCA\Files_Antivirus\Status::SCANRESULT_CLEAN
81 4
			),
82
83
			array(
84 4
				'groupId' => 0,
85 4
				'statusType' => Rule::RULE_TYPE_CODE,
86 4
				'result' => 1,
87 4
				'match' => '',
88 4
				'description' => "",
89
				'status' => \OCA\Files_Antivirus\Status::SCANRESULT_INFECTED
90 4
			),
91
		
92
			array(
93 4
				'groupId' => 0,
94 4
				'statusType' => Rule::RULE_TYPE_CODE,
95 4
				'result' => 40,
96 4
				'match' => '',
97 4
				'description' => "Unknown option passed.",
98
				'status' => \OCA\Files_Antivirus\Status::SCANRESULT_UNCHECKED
99 4
			),
100
			
101
			array(
102 4
				'groupId' => 0,
103 4
				'statusType' => Rule::RULE_TYPE_CODE,
104 4
				'result' => 50,
105 4
				'match' => '',
106 4
				'description' => "Database initialization error.",
107
				'status' => \OCA\Files_Antivirus\Status::SCANRESULT_UNCHECKED
108 4
			),
109
			
110
			array(
111 4
				'groupId' => 0,
112 4
				'statusType' => Rule::RULE_TYPE_CODE,
113 4
				'result' => 52,
114 4
				'match' => '',
115 4
				'description' => "Not supported file type.",
116
				'status' => \OCA\Files_Antivirus\Status::SCANRESULT_UNCHECKED
117 4
			),
118
			
119
			array(
120 4
				'groupId' => 0,
121 4
				'statusType' => Rule::RULE_TYPE_CODE,
122 4
				'result' => 53,
123 4
				'match' => '',
124 4
				'description' => "Can't open directory.",
125
				'status' => \OCA\Files_Antivirus\Status::SCANRESULT_UNCHECKED
126 4
			),
127
			
128
			array(
129 4
				'groupId' => 0,
130 4
				'statusType' => Rule::RULE_TYPE_CODE,
131 4
				'result' => 54,
132 4
				'match' => '',
133 4
				'description' => "Can't open file. (ofm)",
134
				'status' => \OCA\Files_Antivirus\Status::SCANRESULT_UNCHECKED
135 4
			),
136
			
137
			array(
138 4
				'groupId' => 0,
139 4
				'statusType' => Rule::RULE_TYPE_CODE,
140 4
				'result' => 55,
141 4
				'match' => '',
142 4
				'description' => "Error reading file. (ofm)",
143
				'status' => \OCA\Files_Antivirus\Status::SCANRESULT_UNCHECKED
144 4
			),
145
			
146
			array(
147 4
				'groupId' => 0,
148 4
				'statusType' => Rule::RULE_TYPE_CODE,
149 4
				'result' => 56,
150 4
				'match' => '',
151 4
				'description' => "Can't stat input file / directory.",
152
				'status' => \OCA\Files_Antivirus\Status::SCANRESULT_UNCHECKED
153 4
			),
154
			
155
			array(
156 4
				'groupId' => 0,
157 4
				'statusType' => Rule::RULE_TYPE_CODE,
158 4
				'result' => 57,
159 4
				'match' => '',
160 4
				'description' => "Can't get absolute path name of current working directory.",
161
				'status' => \OCA\Files_Antivirus\Status::SCANRESULT_UNCHECKED
162 4
			),
163
			
164
			array(
165 4
				'groupId' => 0,
166 4
				'statusType' => Rule::RULE_TYPE_CODE,
167 4
				'result' => 58,
168 4
				'match' => '',
169 4
				'description' => "I/O error, please check your file system.",
170
				'status' => \OCA\Files_Antivirus\Status::SCANRESULT_UNCHECKED
171 4
			),
172
			
173
			array(
174 4
				'groupId' => 0,
175 4
				'statusType' => Rule::RULE_TYPE_CODE,
176 4
				'result' => 62,
177 4
				'match' => '',
178 4
				'description' => "Can't initialize logger.",
179
				'status' => \OCA\Files_Antivirus\Status::SCANRESULT_UNCHECKED
180 4
			),
181
			
182
			array(
183 4
				'groupId' => 0,
184 4
				'statusType' => Rule::RULE_TYPE_CODE,
185 4
				'result' => 63,
186 4
				'match' => '',
187 4
				'description' => "Can't create temporary files/directories (check permissions).",
188
				'status' => \OCA\Files_Antivirus\Status::SCANRESULT_UNCHECKED
189 4
			),
190
			
191
			array(
192 4
				'groupId' => 0,
193 4
				'statusType' => Rule::RULE_TYPE_CODE,
194 4
				'result' => 64,
195 4
				'match' => '',
196 4
				'description' => "Can't write to temporary directory (please specify another one).",
197
				'status' => \OCA\Files_Antivirus\Status::SCANRESULT_UNCHECKED
198 4
			),
199
			
200
			array(
201 4
				'groupId' => 0,
202 4
				'statusType' => Rule::RULE_TYPE_CODE,
203 4
				'result' => 70,
204 4
				'match' => '',
205 4
				'description' => "Can't allocate memory (calloc).",
206
				'status' => \OCA\Files_Antivirus\Status::SCANRESULT_UNCHECKED
207 4
			),
208
			
209
			array(
210 4
				'groupId' => 0,
211 4
				'statusType' => Rule::RULE_TYPE_CODE,
212 4
				'result' => 71,
213 4
				'match' => '',
214 4
				'description' => "Can't allocate memory (malloc).",
215
				'status' => \OCA\Files_Antivirus\Status::SCANRESULT_UNCHECKED
216 4
			),
217
			
218
			array(
219 4
				'groupId' => 0,
220 4
				'statusType' => Rule::RULE_TYPE_MATCH,
221 4
				'result' => 0,
222 4
				'match' => '/.*: OK$/',
223 4
				'description' => '',
224
				'status' => \OCA\Files_Antivirus\Status::SCANRESULT_CLEAN
225 4
			),
226
			
227
			array(
228 4
				'groupId' => 0,
229 4
				'statusType' => Rule::RULE_TYPE_MATCH,
230 4
				'result' => 0,
231 4
				'match' => '/.*: (.*) FOUND$/',
232 4
				'description' => '',
233
				'status' => \OCA\Files_Antivirus\Status::SCANRESULT_INFECTED
234 4
			),
235
			
236
			array(
237 4
				'groupId' => 0,
238 4
				'statusType' => Rule::RULE_TYPE_MATCH,
239 4
				'result' => 0,
240 4
				'match' => '/.*: (.*) ERROR$/',
241 4
				'description' => '',
242
				'status' => \OCA\Files_Antivirus\Status::SCANRESULT_UNCHECKED
243 4
			),
244 4
		);
245
		
246 4
		foreach ($descriptions as $description){
247 4
			$rule = Rule::fromParams($description);
248 4
			$this->insert($rule);
249 4
		}
250 4
	}
251
}
252