Completed
Push — master ( 261f00...a2b53b )
by Adam
02:35
created

Filter   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 74
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 10
lcom 1
cbo 5
dl 0
loc 74
ccs 25
cts 25
cp 1
rs 10
c 0
b 0
f 0

6 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 2
A setAnalyzer() 0 4 1
A getAnalyzer() 0 4 1
A addFilter() 0 11 3
A setFilters() 0 8 2
A getFilters() 0 4 1
1
<?php
2
3
namespace BestServedCold\LaravelZendSearch\Lucene;
4
5
use BestServedCold\LaravelZendSearch\Lucene\Filter\Factory;
6
use ZendSearch\Lucene\Analysis\Analyzer\Analyzer;
7
use ZendSearch\Lucene\Analysis\Analyzer\Common\AbstractCommon;
8
use ZendSearch\Lucene\Analysis\Analyzer\Common\Utf8Num\CaseInsensitive;
9
use ZendSearch\Lucene\Search\QueryParser;
10
11
/**
12
 * Class Filter
13
 *
14
 * @package BestServedCold\LaravelZendSearch\Lucene
15
 */
16
class Filter
17
{
18
    /**
19
     * @var null|AbstractCommon
20
     */
21
    private static $analyzer = null;
22
23
    /**
24
     * @var array
25
     */
26
    private static $filters = [];
27
28
    /**
29
     * Filter constructor.
30
     *
31
     * @param CaseInsensitive $caseInsensitive
32
     */
33 29
    public function __construct(CaseInsensitive $caseInsensitive)
34
    {
35 29
        self::$analyzer = self::$analyzer ?: $caseInsensitive;
36 29
    }
37
38
    /**
39
     * @param AbstractCommon $analyzer
40
     */
41 1
    public static function setAnalyzer(AbstractCommon $analyzer)
42
    {
43 1
        self::$analyzer = $analyzer;
44 1
    }
45
46
    /**
47
     * @return null|AbstractCommon|CaseInsensitive
48
     */
49 2
    public static function getAnalyzer()
50
    {
51 2
        return self::$analyzer;
52
    }
53
54
    /**
55
     * @param string $filter
56
     * @param mixed  $option
57
     */
58 22
    public static function addFilter($filter, $option)
59
    {
60 22
        if (self::$analyzer === null) {
61 1
            self::$analyzer = new CaseInsensitive;
62 1
        }
63
64 22
        if (!in_array($filter, self::$filters)) {
65 1
            self::$analyzer->addFilter(Factory::getFilter($filter, $option));
66 1
            self::$filters[] = $filter;
67 1
        }
68 22
    }
69
70
    /**
71
     * @return void
72
     */
73 7
    public function setFilters()
74
    {
75 7
        QueryParser::setDefaultEncoding('UTF-8');
76 7
        if (self::$analyzer instanceof AbstractCommon) {
77 7
            Analyzer::setDefault(self::$analyzer);
78 7
        }
79
80 7
    }
81
82
    /**
83
     * @return array
84
     */
85 1
    public static function getFilters()
86
    {
87 1
        return self::$filters;
88
    }
89
}
90