You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

46 lines
1.9 KiB
Python

import options
class Ungrouper(object):
def __init__(self, name, file_name, merger, br_order, br_to_groups,
records, output_file, br_to_gr_output):
self.merger = merger
self.name = name
self.file_name = file_name
self.br_order = br_order
self.br_to_groups = br_to_groups
self.flow_records = records
self.output_file = output_file
self.br_to_gr_output = br_to_gr_output
def groups(self):
for rec in self.merger:
for br in self.br_order:
gr_rec_id = getattr(rec, br)
gr_rec = self.br_to_groups[br].read_row(gr_rec_id)
yield gr_rec
def records(self):
for rec in self.merger:
for br in self.br_order:
gr_rec_id = getattr(rec, br)
gr_rec = self.br_to_groups[br].read_row(gr_rec_id)
for record in self.flow_records.read_rows_list(gr_rec.records):
yield record
def go(self):
if options.do_not_expand_groups:
for rec in self.merger:
for br in self.br_order:
gr_rec_id = getattr(rec, br)
gr_rec = self.br_to_groups[br].read_row(gr_rec_id)
self.br_to_gr_output[br].append(gr_rec)
else:
for rec in self.merger:
for br in self.br_order:
gr_rec_id = getattr(rec, br)
gr_rec = self.br_to_groups[br].read_row(gr_rec_id)
self.br_to_gr_output[br].append(gr_rec)
for record in self.flow_records.read_rows_list(
gr_rec.records):
self.output_file.append(record)
print 'Ungrouper %s finished exectution'%self.name