data/filter.py
author Eugen Sawin <sawine@me73.com>
Fri, 25 Mar 2011 15:57:06 +0100
changeset 6 189c28168c97
permissions -rwxr-xr-x
Corrections.
     1 #!/usr/bin/python
     2 
     3 import dflowlog
     4 from dflowlog import dflow_fields as fields
     5 
     6 import sys
     7 from optparse import OptionParser
     8 
     9 def purge_zero(plans):
    10 	new_plans = []
    11 	for plan in plans:
    12 		if int(plan[10]) != 0:
    13 			new_plans.append(plan)
    14 	return new_plans
    15 	
    16 def purge_empty(plans):
    17 	new_plans = []
    18 	for plan in plans:
    19 		if len(plan) >= len(fields) and len(plan[fields["flow_point"]]) > 1:
    20 			new_plans.append(plan)
    21 	return new_plans
    22 
    23 def purge_duplicates(plans):
    24 	new_plans = dict()
    25 	for plan in plans:
    26 		if len(plan) >= len(fields):
    27 			new_plans[(plan[fields["call_sign"]], plan[fields["atd"]])] = plan
    28 	return new_plans.itervalues()
    29 
    30 def filter(column, value, plans):
    31 	new_plans = []
    32 	for plan in plans:
    33 		if len(plan) >= fields[column] and plan[fields[column]] == value:
    34 			new_plans.append(plan)
    35 	return new_plans			
    36 
    37 if __name__ == "__main__":
    38 	option_map = {str(purge_duplicates): purge_duplicates,
    39 					str(purge_empty): purge_empty,
    40 					str(purge_zero): purge_zero}
    41 	arg_parser = OptionParser(usage="usage: %prog [options] csv_logs ...")
    42 	arg_parser.add_option("-d", "--duplicate",
    43 				action="store_true", dest=str(purge_duplicates),
    44 				help="remove duplicate entries")
    45 	arg_parser.add_option("-e", "--empty",
    46 				action="store_true", dest=str(purge_empty),
    47 				help="remove entries with empty flow points")
    48 	arg_parser.add_option("-z", "--zero",
    49 				action="store_true", dest=str(purge_zero),
    50 				help="remove entries with empty flow points")
    51 	arg_parser.add_option("-f", "--files",
    52 				action="store_true", dest="files_mode",
    53 				help="arguments (csv_logs) are files")
    54 	arg_parser.set_defaults(purge_duplicates=False)
    55 	arg_parser.set_defaults(purge_empty=False)
    56 	arg_parser.set_defaults(purge_zero=False)
    57 	arg_parser.set_defaults(files_mode=False)
    58 	(options, args) = arg_parser.parse_args()
    59 
    60 	plans = []
    61 
    62 	if options.files_mode:
    63 		plans =	dflowlog.parse_files(args)
    64 		options.files_mode = False
    65 	else:
    66 		plans = dflowlog.parse_pipe(args)
    67 
    68 	for option in options.__dict__:
    69 		if getattr(options, option):
    70 			 plans = option_map[option](plans)
    71 	dflowlog.print_logs(plans)
    72 	
    73