#!/usr/bin/env python
"""
Export Periscope data in MongoDB to a CSV table.
"""
# system
import optparse
import sys
import csv
# third-party
import pymongo
# local
from netlogger.analysis.datamining.psmongo import PeriscopeCollection

def main(argv=None):
    usage = "%prog [options]"
    desc = ' '.join(__doc__.split())
    parser = optparse.OptionParser(usage=usage, description=desc)
    parser.add_option("--host", dest="host", action="store", default="localhost",
                      help="MongoDB server host (default=%default)")
    parser.add_option("--port", dest="port", action="store", type="int", default=27017,
                      help="MongoDB server listen port (default=%default)")
    parser.add_option("--collection", dest="coll", action="store", default="xsp",
                     help="MongoDB collection name (default=%default)")
    parser.add_option("--db", dest="db", action="store", default="test",
                     help="MongoDB database (default=%default)")
    parser.add_option("--required", dest="reqmeta", action="append", type="string", default= [ ],
                    help="Required metadata field, repeatable")
    if argv is None:
        argv = sys.argv[1:]
    options, args = parser.parse_args(argv)

    conn = pymongo.Connection(host=options.host, port=options.port)
    ps = PeriscopeCollection(conn[options.db][options.coll])
    if options.reqmeta:
        ps.set_req_meta(options.reqmeta)
    w = csv.writer(sys.stdout)
    w.writerow(ps.get_table_hdr(0))
    for row in ps.get_table_body():
        w.writerow(row)

if __name__ == '__main__':
    sys.exit(main())
