46 lines
No EOL
1.9 KiB
Python
46 lines
No EOL
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 |