def main():
    # Group raw DPI and TCP files w.r.t. the same hour
    hour_files_map = {} # {hour: [dpi, tcp]}
    files = FileReader.list_files(input_dpi_log, DPI_FN_PATTERN)
    for fn in files:
        bname = os.path.basename(fn)
        dt = datetime.datetime.strptime(bname.split('.',1)[0], DPI_TIME_PATTERN)
        dt = dt.replace(minute=0, second=0)
        if dt not in hour_files_map:
            hour_files_map[dt] = [fn, None]
        else:
            print("WARNNING: Hour %s occurs with more one DPI file found" % str(dt))

    files = FileReader.list_files(input_tcp_log, TCP_FN_PATTERN)
    for fn in files:
        bname = os.path.basename(fn)
        dt = datetime.datetime.strptime(bname.rsplit('-',1)[0], TCP_TIME_PATTERN)
        dt = dt.replace(minute=0, second=0)
        if dt in hour_files_map:
            hour_files_map[dt][1] = fn
        else:
            hour_files_map[dt] = [None, fn]
            print("WARNNING: Hour %s occurs without DPI file found" % str(dt))

    multipleThread(hour_files_map)
def main():
    day_files = {} # {day: [wifilog, [trafficFiles]]}

    # wifilog files
    files = FileReader.list_files(wifilog, WIFILOG_FN_PATTERN)
    for fn in files:
        dt = _extract_time_from_wifilog_filename(fn)
        if dt not in day_files:
            day_files[dt] = [fn, []]    # wifilog without traffic files
        else:
            print("WARNNING: day %s occurs more than once" % str(dt))

    # Traffic files
    files = FileReader.list_files(trafficlog, TRAFFIC_FN_PATTERN)
    for fn in files:
        dt = _extract_time_from_traffic_filename(fn)
        dt = dt.replace(hour=0, minute=0, second=0)
        if dt in day_files:
            day_files[dt][1].append(fn)
        else:
            day_files[dt] = [None, [fn]]
            print("WARNNING: day %s occurs without wifilog found" % str(dt))

    multipleThread(day_files)