#!/usr/bin/python
# -*- coding: iso-8859-1 -*-

from configobj import ConfigObj
import re
import os
import shutil
import execute

os.chdir('/var/scripts/sql_generator/fl-network')

sql_directory = 'sql/'
tpl_directory = 'templates/'


## Fonction de lecture (pour les templates)
def read_file(filename):
	f = open(filename, 'rU')
	content = f.read()
	f.close()
	return content

## Fonction d'ecriture (pour les fichiers SQL generes)
def write_file(filename, directory, content):
	dir_path = os.path.join(sql_directory, directory)
	file_path = os.path.join(dir_path, filename)

	if not os.access(dir_path, os.W_OK):
		os.mkdir(dir_path)

	f = open(file_path, 'a')
	f.write(content)
	f.close()

def display_sql(content):
	print content,



def main(config='config.ini', mode='display'):
	cfg = ConfigObj(config)

	## Nettoyage
	shutil.rmtree(sql_directory)
	os.mkdir(sql_directory)

	# Boucle sur les hotes parametres
	for host in cfg.keys():
		print "\n## %s(%s:%s) ##" % (host, cfg[host]['host'], cfg[host]['port'])
		user = cfg[host]['user']
		schema_range = cfg[host]['schema_range']
		start = int(schema_range[0])
		end = int(schema_range[1])+1
		if cfg[host]['template_sql']:
			sql_template = cfg[host]['template_sql']
	
			for tpl in sql_template:
				tpl_content = read_file(os.path.join(tpl_directory, tpl))
				for r in xrange(start, end):
					tmp_tpl = tpl_content
					tmp_tpl = re.sub(r'FLI_USER', user, tmp_tpl)
					tmp_tpl = re.sub(r'FLI_SCHEMA', str(r), tmp_tpl)
					if mode == 'sql':
						write_file(tpl, host, tmp_tpl)
					elif mode == 'display':
						display_sql(tmp_tpl)
					elif mode == 'execute':
                                                status = execute.execute(cfg[host], tmp_tpl)
						print "\texecution du template %s sur le schema %s : %s" % (tpl, str(r), status)
					else:
						display_sql(tmp_tpl)


if __name__ == "__main__":
    main()

