Completed
Push — master ( 6d6a7d...e4617d )
by Jasper
8s
created

Query   A

Complexity

Total Complexity 15

Size/Duplication

Total Lines 53
Duplicated Lines 0 %

Importance

Changes 4
Bugs 0 Features 0
Metric Value
dl 0
loc 53
rs 10
c 4
b 0
f 0
wmc 15

13 Methods

Rating   Name   Duplication   Size   Complexity  
A statistics() 0 2 1
A latest() 0 2 1
A byModality() 0 3 1
A getFields() 0 2 1
A __len__() 0 4 2
A bySubject() 0 3 1
A __iter__() 0 4 2
A byLocation() 0 3 1
A all() 0 2 1
A byUser() 0 3 1
A byProject() 0 3 1
A __init__() 0 5 1
A byApproval() 0 3 1
1
from collections import namedtuple
2
QueryField = namedtuple('QueryField', ['name', 'value'])
3
4
class Query(object):
5
6
    def __init__(self, dependencies):
7
        self.fields = []
8
        self.repository = dependencies.getRepository()
9
        self.location = dependencies.getLocationFactory()
10
        self.cachedResults = None
11
12
    def __iter__(self):
13
        if self.cachedResults is None:
14
            self.cachedResults = self.repository.inquire(self)
15
        return self.cachedResults.__iter__()
16
17
    def __len__(self):
18
        if self.cachedResults is None:
19
            self.cachedResults = self.repository.inquire(self)
20
        return len(self.cachedResults)
21
22
    def getFields(self):
23
        return self.fields
24
25
    def byLocation(self, val):
26
        val = self.location.completeString(val)
27
        return self.repository.byLocation(val)
28
29
    def all(self):
30
        return self.repository.all()
31
32
    def latest(self):
33
        return self.repository.latest()
34
35
    def statistics(self):
36
        return self.repository.statistics()
37
38
    def byModality(self, val):
39
        self.fields.append(QueryField('modality', val))
40
        return self
41
42
    def byProject(self, val):
43
        self.fields.append(QueryField('project', val))
44
        return self
45
46
    def byUser(self, val):
47
        self.fields.append(QueryField('user', val))
48
        return self
49
50
    def bySubject(self, val):
51
        self.fields.append(QueryField('subject', val))
52
        return self
53
54
    def byApproval(self, val):
55
        self.fields.append(QueryField('approval', val))
56
        return self
57