Completed
Pull Request — master (#143)
by Jasper
01:24
created

Query   A

Complexity

Total Complexity 14

Size/Duplication

Total Lines 47
Duplicated Lines 0 %

Importance

Changes 3
Bugs 0 Features 0
Metric Value
c 3
b 0
f 0
dl 0
loc 47
rs 10
wmc 14

12 Methods

Rating   Name   Duplication   Size   Complexity  
A getFields() 0 2 1
A __len__() 0 4 2
A __iter__() 0 4 2
A __init__() 0 4 1
A statistics() 0 2 1
A latest() 0 2 1
A byModality() 0 3 1
A bySubject() 0 3 1
A byLocation() 0 2 1
A all() 0 2 1
A byUser() 0 3 1
A byProject() 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.cachedResults = None
10
11
    def __iter__(self):
12
        if self.cachedResults is None:
13
            self.cachedResults = self.repository.inquire(self)
14
        return self.cachedResults.__iter__()
15
16
    def __len__(self):
17
        if self.cachedResults is None:
18
            self.cachedResults = self.repository.inquire(self)
19
        return len(self.cachedResults)
20
21
    def getFields(self):
22
        return self.fields
23
24
    def byLocation(self, val):
25
        return self.repository.byLocation(val)
26
27
    def all(self):
28
        return self.repository.all()
29
30
    def latest(self):
31
        return self.repository.latest()
32
33
    def statistics(self):
34
        return self.repository.statistics()
35
36
    def byModality(self, val):
37
        self.fields.append(QueryField('modality', val))
38
        return self
39
40
    def byProject(self, val):
41
        self.fields.append(QueryField('project', val))
42
        return self
43
44
    def byUser(self, val):
45
        self.fields.append(QueryField('user', val))
46
        return self
47
48
    def bySubject(self, val):
49
        self.fields.append(QueryField('subject', val))
50
        return self
51