#!/usr/bin/python2

import logging
import os
import re
import string
import sys

from UploadClasses import _SiteInfo
from UploadClasses import _Database
from UploadClasses import _RLS

from UploadFunctions import *

# ===PROLOG START===
print "This script won't run as is -- it must be installed into another"
print "directory using Install.sh."
sys.exit(1)
# ===PROLOG END===

rootlogger = logging.getLogger('')
rootlogger.setLevel(logging.INFO)

if len(sys.argv) != 4:
  logging.error("Wrong number of arguments!")
  logging.error("Usage:")
  logging.error(" UpdateRLS.py PROJECTNAME SUBJECTID VISITID")
  sys.exit(1)

projectname = sys.argv[1]
subjectid = sys.argv[2]
visitid = sys.argv[3]
try:
  int(visitid)
except:
  logging.error("VISITID (" + visitid + ") should be an integer!")
  sys.exit(1)

SiteInfo = _SiteInfo()
Database = _Database()
Database.set_SiteInfo(SiteInfo)

ScriptInstallDir = os.environ['ScriptInstallDir']

ConfigFile = os.path.join(ScriptInstallDir, 'ConfigureSite')
f=open(ConfigFile, "r")
lines=f.readlines()
f.close()

# Read in all of the lines and break into key-value pairs. Store those
# in the dictionary "results".
results={}
for line in lines:
  if re.match("^[ \t]*\#.*$", line) != None:
    continue
  if line=="\n":
    continue
  split=line[:-1].split("=")
  key=split[0]
  val=split[1]
  if val == "":
    continue
  if val[0]=='"' and val[-1]=='"':
    val=val[1:-1]
  else:
    val=string.atoi(val)
  results[key]=val

try:
  SiteInfo.set_dbHost(results["DBHost"])
except: 
  pass
try:
  SiteInfo.set_dbPort(results["DBPort"])
except: 
  pass
try:
  SiteInfo.set_dbInstance(results["DBInstance"])
except: 
  pass
try:
  SiteInfo.set_dbUser(results["DBUser"])
except: 
  pass
try:
  SiteInfo.set_dbPass(results["DBPass"])
except: 
  pass
try:
  SiteInfo.set_dbType(results["DBType"])
except: 
  pass
try:
  SiteInfo.set_UseCXOracle(results["UseCXOracle"])
except: 
  pass
assert SiteInfo.get_dbType() != None, "dbType was None!"
try:
  SiteInfo.set_ScriptInstallDir(results["ScriptInstallDir"])
except: 
  SiteInfo.set_ScriptInstallDir(".")
try:
  SiteInfo.set_MyProxyHost(results["MyProxyHost"])
except: 
  pass
try:
  SiteInfo.set_MyProxyPort(results["MyProxyPort"])
except: 
  pass
try:
  SiteInfo.set_GridFTPHost(results["GridFTPHost"])
except: 
  pass
try:
  SiteInfo.set_GridFTPPort(results["GridFTPPort"])
except: 
  pass

if UpdateRLS(Database, SiteInfo, experimentname=projectname, subjectid=subjectid, visitid=visitid) == 0:
  sys.exit(1)
