#!/usr/bin/python

import sys
import Dballe
import string
import os
from optparse import OptionParser

VERSION="0.1"

class Parser(OptionParser):
    def __init__(self, *args, **kwargs):
        OptionParser.__init__(self, *args, **kwargs)

    def error(self, msg):
        sys.stderr.write("%s: error: %s\n\n" % (self._get_prog_name(), msg))
        self.print_help(sys.stderr)
        sys.exit(2)

    def print_help (self, file=None):
        OptionParser.print_help(self, file)
        file.write("""
Supported commands:

stations  output the list of stations in the database
""")


class DB:
    def __init__(self, dsn, user, password):
        self.db = Dballe.DB(dsn, user, password)

    def stations(self):
        for result in self.db.queryAnaSummary(Dballe.Record()):
            print "%d %f %f" % \
                (result.enqi("ana_id"), result.enqd("lat"), result.enqd("lon")),
            name = result.enqc("ident")
            if name:
                print " ", name,
            print


parser = Parser(usage="usage: %prog [options] command [args...]",
                version="%prog "+ VERSION,
                description="perform common operations on a DB-ALLe database")
parser.add_option("--dsn", default="test", help="DSN to use to connect to the database (default: %default)")
parser.add_option("--user", default=os.environ['USER'], help="User name to use to connect to the database (default: %default)")
parser.add_option("--pass", default="", dest="password", help="Password to use to connect to the database (default: none)")

(options, args) = parser.parse_args()

if len(args) == 0:
    parser.print_help()
else:
    cmd = args.pop(0)

    if cmd == "stations":
        db = DB(options.dsn, options.user, options.password)
        db.stations()
    else:
        parser.error("I do not know how to handle the function " + cmd)

# vim:set ts=4 sw=4 expandtab:
