
namespace GMLL00ImportadorXsd.Logica
{
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;
    using System.Globalization;
    using System.Configuration;

    public class FicheroSql
    {

        FicheroTexto ObjFichTexto = new FicheroTexto();


        public FicheroSql()
        {

        }
        //Vamos a leer el fichero SLQ linea a linea para ir lanzandoals
        //Comprobamos si debemos lanzar un insert o un select 
        //La conexion se debe mantener abierta hasta el fin de fichero. Si la abrimos y cerros no es capaz de lanzar los current
        public void LeerFichero(string rutaFicheroSql, string rutaSalidaLog, string cadenaConexion)
        {

            StreamReader sr = null;
            string linea = string.Empty;
            string NombreFicheroLog = ConfigurationManager.AppSettings["NombreFicheroLog"].ToString();
            // int salidaInsert = 0;
            // RutaSalidaLog = rutaSalidaLog;
            DAO.ConectaBbdd ObjDAOConexion = new DAO.ConectaBbdd(cadenaConexion);
            string salidaEjecucion = string.Empty;

            if (File.Exists(rutaFicheroSql))
            {
                sr = new StreamReader(rutaFicheroSql);
                linea = sr.ReadLine();
                while (!(linea.Trim().Substring(linea.Trim().Length - 1, 1).Equals(";")))
                {
                    linea = linea + sr.ReadLine();
                }
            }
            try
            {
                ObjDAOConexion.AbrirConexion();
                while ((linea != null))
                {
                    //////////// si no es insert lanzamos select
                    if (linea.Trim().Substring(0, 6).ToUpper(CultureInfo.InvariantCulture).Equals("INSERT"))
                    {
                        salidaEjecucion = ObjDAOConexion.EjecutaInsert(linea);

                        if ((!(string.IsNullOrEmpty(salidaEjecucion.Trim())) && (salidaEjecucion == "-1")))
                        {
                            ObjFichTexto.EscribirTexto(rutaSalidaLog, NombreFicheroLog, "ERROR:::::" + salidaEjecucion);
                        }
                    }
                    else
                    {
                        salidaEjecucion = ObjDAOConexion.EjecutaSelect(linea);

                        if (!(string.IsNullOrEmpty(salidaEjecucion.Trim())))
                        {
                            ObjFichTexto.EscribirTexto(rutaSalidaLog, NombreFicheroLog, "ERROR:::::" + salidaEjecucion);
                        }
                    }


                    linea = sr.ReadLine();

                    //para el caso de los estilos, buscamos las lineas sin ; y las vamos concatenando hasta que aparezca
                    while ((linea != null) && !(linea.Trim().Substring(linea.Trim().Length - 1, 1).Equals(";")))
                    {

                        linea = linea + sr.ReadLine();
                    }


                }
            }
            finally
            {
                ObjDAOConexion.CerrarConexion();
                sr.Close();
            }

        }
    }
}
