62 lines
2.2 KiB
Python
62 lines
2.2 KiB
Python
|
from filter import Rule
|
||
|
import profiler
|
||
|
|
||
|
class GroupFilter(object):
|
||
|
def __init__(self, rules, records, branch_name, groups_table, index):
|
||
|
self.rules = rules
|
||
|
self.records = records
|
||
|
self.branch_name = branch_name
|
||
|
self.index = index
|
||
|
self.groups_table = groups_table
|
||
|
self.record_reader = RecordReader(self.groups_table)
|
||
|
|
||
|
def go(self):
|
||
|
count = 0
|
||
|
for record in self.records: # These are the grouped records according to the groupers/modules
|
||
|
# print record
|
||
|
matched = False
|
||
|
for or_rules in self.rules:
|
||
|
# matched = False
|
||
|
for rule in or_rules: # This for-loop, just extracts the rule from the list
|
||
|
# print rule
|
||
|
if rule.match(record):
|
||
|
# print rule.operation
|
||
|
matched = True
|
||
|
break
|
||
|
if not matched:
|
||
|
break
|
||
|
if matched:
|
||
|
record.rec_id = count
|
||
|
count += 1
|
||
|
# Adds a record to the TimeIndex class' time interval
|
||
|
# as an index value, over those times that the record
|
||
|
# covers with its start-/end-time intervals.
|
||
|
self.index.add(record)
|
||
|
self.groups_table.append(record)
|
||
|
print "Finished group-filtering for branch " + self.branch_name
|
||
|
|
||
|
self.groups_table.flush()
|
||
|
|
||
|
|
||
|
|
||
|
def __iter__(self):
|
||
|
for rec in self.record_reader:
|
||
|
yield rec
|
||
|
|
||
|
class AcceptGroupFilter(GroupFilter):
|
||
|
def __init__(self, records, branch_name, groups_table, index):
|
||
|
GroupFilter.__init__(self, None, records, branch_name, groups_table,
|
||
|
index)
|
||
|
# NIK commented out on Feb 08
|
||
|
# This function is not used anywhere
|
||
|
# in the code
|
||
|
# def go(self):
|
||
|
# count = 0
|
||
|
# for record in self.records:
|
||
|
# record.rec_id = count
|
||
|
# count += 1
|
||
|
# self.index.add(record)
|
||
|
# self.groups_table.append(record)
|
||
|
# print "Finished filtering groups for branch " + self.branch_name
|
||
|
# self.groups_table.flush()
|