#!/usr/bin/env python
import sys, math, argparse
import os.path
import ConfigParser

from pymonetdb.sql.connections import Connection as connect
from pymonetdb.exceptions import Error as DBError

#import lofar.gsm.gsmutils as gsm
from gsm import utils as gu
from gsm.exceptions import GSMException
#from gsm.config import config as cfg
#from gsm.config import DBConfig

parser = argparse.ArgumentParser()
parser.add_argument('--dbconf', '-d', help='config file of GSM database setting'\
                                           '(default ./dbconfig.cfg)')
parser.add_argument('--conf', "-c", help='config file of input params'\
                                         '(default ./config.cfg)')

args = parser.parse_args()

dbconf = args.dbconf
conf = args.conf

if dbconf is None:
    dbconf = './dbconfig.cfg'
if conf is None:
    conf = './config.cfg'

if not os.path.isfile(dbconf):
    raise GSMException('No valid dbconfig file is specified.')
if not os.path.isfile(conf):
    raise GSMException('No valid config file is specified.')

#print "dbconf = %s" % (dbconf)
#print "conf = %s" % (conf)

dbcfg = ConfigParser.ConfigParser()
dbcfg.read(dbconf)
cfg = ConfigParser.ConfigParser()
cfg.read(conf)

try:
    conn = connect(hostname = dbcfg.get("database", "host")
                  ,database = dbcfg.get("database", "dbname")
                  ,username = dbcfg.get("database", "uname")
                  ,password = dbcfg.get("database", "pword")
                  ,port = dbcfg.get("database", "port")
                  )
    gu.expected_fluxes_in_fov(conn
                             ,cfg.get("gsmparams", "basecat")
                             ,float(cfg.get("gsmparams", "RA"))
                             ,float(cfg.get("gsmparams", "DEC"))
                             ,float(cfg.get("gsmparams", "radius"))
                             ,float(cfg.get("gsmparams", "assocTheta"))
                             ,cfg.get("gsmparams", "outfile")
                             ,float(cfg.get("gsmparams", "fluxCutoff"))
                             ,cfg.get("gsmparams", "patchname")
                             ,cfg.get("gsmparams", "storespectraplots")
                             ,float(cfg.get("gsmparams", "deRuiter_radius"))
                             )
except DBError, e:
    raise

