/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package adgsyncms.service;

import adgsyncms.repository.Servers;
import static adgsyncms.repository.db._SQLQuery;
import static adgsyncms.repository.db._connection;
import static adgsyncms.repository.db.openConnection;

import static adgsyncms.repository.db_express._ex_SQLQuery;
import static adgsyncms.repository.db_express._ex_connection;
import static adgsyncms.repository.db_express.ex_openConnection;
import static adgsyncms.repository.db_express._ex_Host;
import static adgsyncms.repository.db_express._ex_Database;
import static adgsyncms.repository.db_express._ex_Port;
import static adgsyncms.repository.db_express._ex_User;
import static adgsyncms.repository.db_express._ex_Password;
import adgsyncms.repository.message;
import adgsyncms.repository.repository;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Iterator;
import javax.swing.JLabel;
import javax.swing.JTextArea;

/**
 *
 * @author amartinez
 */
public class Ofertas {

    public Boolean b_result;
    public String Caja, Compania;
    JTextArea jtext1;
    JLabel lblTransaccion;

    public boolean BuscarOfertasCajas() {
        ResultSet rs_ofertas, rsCaja;
        PreparedStatement ps;
        this.b_result = true;
        repository repo1 = new repository();
        repo1.readSetting();

        Iterator<Servers> servidor = repo1.lstservidores.iterator();

        while (servidor.hasNext()) {
            Servers caja = servidor.next();

            try {
                 if (_connection != null && !_connection.isClosed()) {
                    _connection.close();
                }
                openConnection();
                this.SetCaja(caja.cajas, repo1.Company);
                this.SetSlaveConnection(caja.host_name, caja.database_name, caja.port_number, caja.user_name, caja.user_pwd);
                message.setMessage(jtext1, "Sincronizando ofertas en el servidor: " + caja.alias + " - " + caja.host_name);
                /*
                     * Consultando los productos por sincronizar en la caja
                 */
                if (ex_openConnection()) {
//Consultando las cajas del servidor local
                    _ex_SQLQuery = "SELECT caja_cod FROM inv_cajas WHERE cia_codigo = ? ORDER BY caja_cod";
                    ps = _ex_connection.prepareStatement(_ex_SQLQuery);
                    ps.setString(1, repo1.Company);
                    rsCaja = ps.executeQuery();
                    Caja = "";
                    while (rsCaja.next()) {
                        Caja = Caja + (!Caja.isEmpty() ? "," : " ") + ("'" + rsCaja.getString("caja_cod") + "'");
                    }
                    _SQLQuery = "Select cia_codigo,id_oferta from vtas.ofertas_cajas where cia_codigo = ? AND caja_cod in (" + Caja
                            + ") and sincronizada = false group by cia_codigo,id_oferta;";

                    ps = _connection.prepareStatement(_SQLQuery);
                    ps.setString(1, repo1.Company);
                    rs_ofertas = ps.executeQuery();
                    while (rs_ofertas.next()) {
                        this.b_result = ActualizarOfertas(rs_ofertas.getString("cia_codigo"), rs_ofertas.getInt("id_oferta"));

                        if (this.b_result) {
                            _connection.commit();
                            _ex_connection.commit();
                        } else {
                            _connection.rollback();
                            _ex_connection.rollback();
                        }
                    }
                    _ex_connection.close();
                    _connection.close();
                } else {
                    this.b_result = false;
                }

            } catch (SQLException ex) {
                message.setMessage(jtext1, "Ocurrio el siguiente error al actualizar las ofertas: " + ex.getMessage());
                this.b_result = false;
            }
        }
        try {
            _connection.close();
            if (_ex_connection != null && !_ex_connection.isClosed()) {
                _ex_connection.close();
            }
        } catch (SQLException ex) {

            message.setMessage(jtext1, "Ocurrio el siguiente error al actualizar las ofertas: " + ex.getMessage());
            this.b_result = false;
        }

        return this.b_result;
    }

    public boolean ActualizarOfertas(String s_Compania, Integer IDOferta) {
        Boolean b_return = true;
        PreparedStatement ps;
        ResultSet rsOfertas, rsDetalle;

        _SQLQuery = "select nombre, cantidad_lim, fecha_lim, tipo_oferta, estado,"
                + "  prod_referencia,  cantidad,  fecha_inicio,  imagen,  filtrar_cajas,  filtrar_tipcxc,"
                + "  filtrar_tipcliente,  filtrar_clasificacion,  filtrar_categoria,  filtrar_familia,  porc_descuento "
                + " from inv_ofertas where cia_codigo = ?::varchar and codigo = ?::integer ";
        try {
            ps = _connection.prepareStatement(_SQLQuery);
            ps.setString(1, s_Compania);
            ps.setInt(2, IDOferta);
            rsOfertas = ps.executeQuery();
            while (rsOfertas.next()) {
                PreparedStatement ps_Condicion, ps_Cambios, ps_Valores;

                String tabla = "inv_ofertas";
                String Campos = " codigo,  cia_codigo,  nombre,  cantidad_lim,  fecha_lim,  tipo_oferta,  estado,"
                        + " prod_referencia,  cantidad,  fecha_inicio,  imagen,  filtrar_cajas,  filtrar_tipcxc,"
                        + " filtrar_tipcliente,  filtrar_clasificacion,  filtrar_categoria,  filtrar_familia,  porc_descuento ";

                String Condicion = " codigo = ?::integer";

                String Cambios = "nombre = ?::varchar, cantidad_lim = ?::smallint,  fecha_lim = ?::date,  tipo_oferta = ?::integer,"
                        + " estado = ?::varchar, prod_referencia = ?::varchar,  cantidad = ?::integer,  fecha_inicio = ?::date,"
                        + " imagen = ?::varchar,  filtrar_cajas = ?::boolean,  filtrar_tipcxc = ?::boolean,"
                        + " filtrar_tipcliente = ?::boolean,  filtrar_clasificacion = ?::boolean,  filtrar_categoria = ?::boolean,"
                        + " filtrar_familia = ?::boolean,  porc_descuento = ?::numeric";

                String Valores = "?::integer, ?::varchar , "
                        + " ?::varchar,  ?::smallint, ?::date,    ?::integer,"
                        + " ?::varchar,  ?::varchar,  ?::integer, ?::date,"
                        + " ?::varchar,  ?::boolean,  ?::boolean,"
                        + " ?::boolean,  ?::boolean,  ?::boolean,"
                        + " ?::boolean,  ?::numeric ";

                ps_Condicion = _ex_connection.prepareStatement(Condicion);
                ps_Condicion.setInt(1, IDOferta);

                message.setCaption(lblTransaccion, "Actualizando oferta: " + rsOfertas.getString("nombre").trim());

                ps_Cambios = _ex_connection.prepareStatement(Cambios);
                ps_Cambios.setString(1, rsOfertas.getString("nombre"));
                ps_Cambios.setInt(2, rsOfertas.getInt("cantidad_lim"));
                ps_Cambios.setDate(3, rsOfertas.getDate("fecha_lim"));
                ps_Cambios.setInt(4, rsOfertas.getInt("tipo_oferta"));

                ps_Cambios.setString(5, rsOfertas.getString("estado"));
                ps_Cambios.setString(6, rsOfertas.getString("prod_referencia"));
                ps_Cambios.setInt(7, rsOfertas.getInt("cantidad"));
                ps_Cambios.setDate(8, rsOfertas.getDate("fecha_inicio"));

                ps_Cambios.setString(9, rsOfertas.getString("imagen"));
                ps_Cambios.setBoolean(10, rsOfertas.getBoolean("filtrar_cajas"));
                ps_Cambios.setBoolean(11, rsOfertas.getBoolean("filtrar_tipcxc"));

                ps_Cambios.setBoolean(12, rsOfertas.getBoolean("filtrar_tipcliente"));
                ps_Cambios.setBoolean(13, rsOfertas.getBoolean("filtrar_clasificacion"));
                ps_Cambios.setBoolean(14, rsOfertas.getBoolean("filtrar_categoria"));

                ps_Cambios.setBoolean(15, rsOfertas.getBoolean("filtrar_familia"));
                ps_Cambios.setDouble(16, rsOfertas.getDouble("porc_descuento"));

                ps_Valores = _ex_connection.prepareStatement(Valores);
                ps_Valores.setInt(1, IDOferta);
                ps_Valores.setString(2, s_Compania);
                ps_Valores.setString(3, rsOfertas.getString("nombre"));
                ps_Valores.setInt(4, rsOfertas.getInt("cantidad_lim"));
                ps_Valores.setDate(5, rsOfertas.getDate("fecha_lim"));
                ps_Valores.setInt(6, rsOfertas.getInt("tipo_oferta"));

                ps_Valores.setString(7, rsOfertas.getString("estado"));
                ps_Valores.setString(8, rsOfertas.getString("prod_referencia"));
                ps_Valores.setInt(9, rsOfertas.getInt("cantidad"));
                ps_Valores.setDate(10, rsOfertas.getDate("fecha_inicio"));

                ps_Valores.setString(11, rsOfertas.getString("imagen"));
                ps_Valores.setBoolean(12, rsOfertas.getBoolean("filtrar_cajas"));
                ps_Valores.setBoolean(13, rsOfertas.getBoolean("filtrar_tipcxc"));

                ps_Valores.setBoolean(14, rsOfertas.getBoolean("filtrar_tipcliente"));
                ps_Valores.setBoolean(15, rsOfertas.getBoolean("filtrar_clasificacion"));
                ps_Valores.setBoolean(16, rsOfertas.getBoolean("filtrar_categoria"));

                ps_Valores.setBoolean(17, rsOfertas.getBoolean("filtrar_familia"));
                ps_Valores.setDouble(18, rsOfertas.getDouble("porc_descuento"));

//?tabla, ?cambios1, ?cambios2, ?cambios3, ?condicion, ?campos, ?valores1, ?valores2, ?valores3
                _ex_SQLQuery = "SELECT * FROM public.fn_editar(?::varchar, ?::varchar, ?::varchar, ?::varchar, ?::varchar, ?::varchar, ?::varchar, ?::varchar, ?::varchar);";
                ps = _ex_connection.prepareStatement(_ex_SQLQuery);
                ps.setString(1, tabla);
                ps.setString(2, ps_Cambios.toString());
                ps.setString(3, "");
                ps.setString(4, "");
                ps.setString(5, ps_Condicion.toString());
                ps.setString(6, Campos);
                ps.setString(7, ps_Valores.toString());
                ps.setString(8, "");
                ps.setString(9, "");
                ps.executeQuery();

                //Borrrando el detalle de las ofertas para insertarlos nuevamente
                _SQLQuery = "SELECT "
                        + "  codigo, cia_codigo,prod_referencia,cantidad,precio,cantidad_lim,cantidad_usada,id_unidad"
                        + " FROM public.inv_det_ofertas  "
                        + " WHERE codigo = ?::integer";
                ps = _connection.prepareStatement(_SQLQuery);
                ps.setInt(1, IDOferta);
                rsDetalle = ps.executeQuery();

                _ex_SQLQuery = "delete from inv_det_ofertas where codigo = ?::integer;";
                ps = _ex_connection.prepareStatement(_ex_SQLQuery);
                ps.setInt(1, IDOferta);
                ps.execute();

                while (rsDetalle.next()) {
                    _ex_SQLQuery = "INSERT INTO "
                            + "  public.inv_det_ofertas "
                            + "(  codigo,  cia_codigo,  prod_referencia,  cantidad,  precio,  cantidad_lim,  cantidad_usada,  id_unidad)"
                            + "values(?::integer, ?::varchar, ?::varchar, ?::integer, ?::numeric, ?::integer, ?::integer, ?::integer)";

                    ps = _ex_connection.prepareStatement(_ex_SQLQuery);
                    ps.setInt(1, IDOferta);
                    ps.setString(2, s_Compania);
                    ps.setString(3, rsDetalle.getString("prod_referencia"));
                    ps.setInt(4, rsDetalle.getInt("cantidad"));
                    ps.setDouble(5, rsDetalle.getDouble("precio"));
                    ps.setInt(6, rsDetalle.getInt("cantidad_lim"));
                    ps.setInt(7, rsDetalle.getInt("cantidad_usada"));
                    ps.setInt(8, rsDetalle.getInt("id_unidad"));

                    ps.execute();
                }

                //Ofertas por cajas 
                _SQLQuery = "SELECT codigo_caja "
                        + "FROM public.inv_ofertas_cajas  "
                        + "WHERE codigo_oferta = ?::integer";
                ps = _connection.prepareStatement(_SQLQuery);
                ps.setInt(1, IDOferta);
                rsDetalle = ps.executeQuery();

                _ex_SQLQuery = "delete from inv_ofertas_cajas where codigo_oferta = ?::integer;";
                ps = _ex_connection.prepareStatement(_ex_SQLQuery);
                ps.setInt(1, IDOferta);
                ps.execute();

                while (rsDetalle.next()) {
                    _ex_SQLQuery = "INSERT INTO "
                            + " public.inv_ofertas_cajas (codigo_oferta,codigo_caja)"
                            + " values(?::integer,?::integer)";

                    ps = _ex_connection.prepareStatement(_ex_SQLQuery);
                    ps.setInt(1, IDOferta);
                    ps.setInt(2, rsDetalle.getInt("codigo_caja"));

                    ps.execute();
                }

                //Ofertas por tipo de producto 
                _SQLQuery = "SELECT codigo_tipoproducto "
                        + "FROM public.inv_ofertas_tipoproducto "
                        + "WHERE codigo_oferta = ?::integer";
                ps = _connection.prepareStatement(_SQLQuery);
                ps.setInt(1, IDOferta);
                rsDetalle = ps.executeQuery();

                _ex_SQLQuery = "delete from inv_ofertas_tipoproducto where codigo_oferta = ?::integer;";
                ps = _ex_connection.prepareStatement(_ex_SQLQuery);
                ps.setInt(1, IDOferta);
                ps.execute();

                while (rsDetalle.next()) {
                    _ex_SQLQuery = "INSERT INTO "
                            + " public.inv_ofertas_tipoproducto (codigo_oferta,codigo_tipoproducto)"
                            + " values(?::integer,?::integer)";

                    ps = _ex_connection.prepareStatement(_ex_SQLQuery);
                    ps.setInt(1, IDOferta);
                    ps.setInt(2, rsDetalle.getInt("codigo_tipoproducto"));

                    ps.execute();
                }

                //Ofertas por clasificacion de producto 
                _SQLQuery = "SELECT codigo_clasificacion "
                        + "FROM public.inv_ofertas_clasificacion  "
                        + "WHERE codigo_oferta = ?::integer";
                ps = _connection.prepareStatement(_SQLQuery);
                ps.setInt(1, IDOferta);
                rsDetalle = ps.executeQuery();

                _ex_SQLQuery = "delete from inv_ofertas_clasificacion where codigo_oferta = ?::integer;";
                ps = _ex_connection.prepareStatement(_ex_SQLQuery);
                ps.setInt(1, IDOferta);
                ps.execute();

                while (rsDetalle.next()) {
                    _ex_SQLQuery = "INSERT INTO "
                            + " public.inv_ofertas_clasificacion (codigo_oferta,codigo_clasificacion)"
                            + " values(?::integer,?::integer)";

                    ps = _ex_connection.prepareStatement(_ex_SQLQuery);
                    ps.setInt(1, IDOferta);
                    ps.setInt(2, rsDetalle.getInt("codigo_clasificacion"));

                    ps.execute();
                }

                //Ofertas por sub-clasificacion de producto 
                _SQLQuery = "SELECT codigo_subclasif "
                        + "FROM public.inv_ofertas_subclasif  "
                        + "WHERE codigo_oferta = ?::integer";
                ps = _connection.prepareStatement(_SQLQuery);
                ps.setInt(1, IDOferta);
                rsDetalle = ps.executeQuery();

                _ex_SQLQuery = "delete from inv_ofertas_subclasif where codigo_oferta = ?::integer;";
                ps = _ex_connection.prepareStatement(_ex_SQLQuery);
                ps.setInt(1, IDOferta);
                ps.execute();

                while (rsDetalle.next()) {
                    _ex_SQLQuery = "INSERT INTO "
                            + " public.inv_ofertas_subclasif (codigo_oferta,codigo_subclasif)"
                            + " values(?::integer,?::integer)";

                    ps = _ex_connection.prepareStatement(_ex_SQLQuery);
                    ps.setInt(1, IDOferta);
                    ps.setInt(2, rsDetalle.getInt("codigo_subclasif"));

                    ps.execute();
                }

                //Ofertas por familia de producto 
                _SQLQuery = "SELECT codigo_familia "
                        + "FROM public.inv_ofertas_familias  "
                        + "WHERE codigo_oferta = ?::integer";
                ps = _connection.prepareStatement(_SQLQuery);
                ps.setInt(1, IDOferta);
                rsDetalle = ps.executeQuery();

                _ex_SQLQuery = "delete from inv_ofertas_familias where codigo_oferta = ?::integer;";
                ps = _ex_connection.prepareStatement(_ex_SQLQuery);
                ps.setInt(1, IDOferta);
                ps.execute();

                while (rsDetalle.next()) {
                    _ex_SQLQuery = "INSERT INTO "
                            + " public.inv_ofertas_familias (codigo_oferta,codigo_familia)"
                            + " values(?::integer,?::integer)";

                    ps = _ex_connection.prepareStatement(_ex_SQLQuery);
                    ps.setInt(1, IDOferta);
                    ps.setInt(2, rsDetalle.getInt("codigo_familia"));

                    ps.execute();
                }

                //Ofertas por fabricante de producto 
                _SQLQuery = "SELECT codigo_fabricante "
                        + "FROM public.inv_ofertas_fabricantes "
                        + "WHERE codigo_oferta = ?::integer";
                ps = _connection.prepareStatement(_SQLQuery);
                ps.setInt(1, IDOferta);
                rsDetalle = ps.executeQuery();

                _ex_SQLQuery = "delete from inv_ofertas_fabricantes where codigo_oferta = ?::integer;";
                ps = _ex_connection.prepareStatement(_ex_SQLQuery);
                ps.setInt(1, IDOferta);
                ps.execute();

                while (rsDetalle.next()) {
                    _ex_SQLQuery = "INSERT INTO "
                            + " public.inv_ofertas_fabricantes (codigo_oferta,codigo_fabricante)"
                            + " values(?::integer,?::integer)";

                    ps = _ex_connection.prepareStatement(_ex_SQLQuery);
                    ps.setInt(1, IDOferta);
                    ps.setInt(2, rsDetalle.getInt("codigo_fabricante"));

                    ps.execute();
                }

                //Ofertas por suplidor de producto 
                _SQLQuery = "SELECT codigo_suplidor "
                        + "FROM public.inv_ofertas_suplidores "
                        + "WHERE codigo_oferta = ?::integer";
                ps = _connection.prepareStatement(_SQLQuery);
                ps.setInt(1, IDOferta);
                rsDetalle = ps.executeQuery();

                _ex_SQLQuery = "delete from inv_ofertas_suplidores where codigo_oferta = ?::integer;";
                ps = _ex_connection.prepareStatement(_ex_SQLQuery);
                ps.setInt(1, IDOferta);
                ps.execute();

                while (rsDetalle.next()) {
                    _ex_SQLQuery = "INSERT INTO "
                            + " public.inv_ofertas_suplidores (codigo_oferta,codigo_suplidor)"
                            + " values(?::integer,?::integer)";

                    ps = _ex_connection.prepareStatement(_ex_SQLQuery);
                    ps.setInt(1, IDOferta);
                    ps.setInt(2, rsDetalle.getInt("codigo_suplidor"));

                    ps.execute();
                }

                //Ofertas por tipo de cliente
                _SQLQuery = "SELECT codigo_tipcliente "
                        + "FROM public.inv_ofertas_tipcliente "
                        + "WHERE codigo_oferta = ?::integer";
                ps = _connection.prepareStatement(_SQLQuery);
                ps.setInt(1, IDOferta);
                rsDetalle = ps.executeQuery();

                _ex_SQLQuery = "delete from inv_ofertas_tipcliente where codigo_oferta = ?::integer;";
                ps = _ex_connection.prepareStatement(_ex_SQLQuery);
                ps.setInt(1, IDOferta);
                ps.execute();

                while (rsDetalle.next()) {
                    _ex_SQLQuery = "INSERT INTO "
                            + " public.inv_ofertas_tipcliente (codigo_oferta,codigo_tipcliente)"
                            + " values(?::integer,?::integer)";

                    ps = _ex_connection.prepareStatement(_ex_SQLQuery);
                    ps.setInt(1, IDOferta);
                    ps.setInt(2, rsDetalle.getInt("codigo_tipcliente"));

                    ps.execute();
                }

                //Ofertas por tipo de cuenta por cobrar
                _SQLQuery = "SELECT codigo_tipocxc "
                        + "FROM public.inv_ofertas_tipcxc "
                        + "WHERE codigo_oferta = ?::integer";
                ps = _connection.prepareStatement(_SQLQuery);
                ps.setInt(1, IDOferta);
                rsDetalle = ps.executeQuery();

                _ex_SQLQuery = "delete from inv_ofertas_tipcxc where codigo_oferta = ?::integer;";
                ps = _ex_connection.prepareStatement(_ex_SQLQuery);
                ps.setInt(1, IDOferta);
                ps.execute();

                while (rsDetalle.next()) {
                    _ex_SQLQuery = "INSERT INTO "
                            + " public.inv_ofertas_tipcxc (codigo_oferta,codigo_tipocxc)"
                            + " values(?::integer,?::integer)";

                    ps = _ex_connection.prepareStatement(_ex_SQLQuery);
                    ps.setInt(1, IDOferta);
                    ps.setInt(2, rsDetalle.getInt("codigo_tipocxc"));

                    ps.execute();
                }

                //Ofertas por tipo de categoria de cuenta por cobrar
                _SQLQuery = "SELECT codigo_categoria "
                        + "FROM public.inv_ofertas_categoriascxc "
                        + "WHERE codigo_oferta = ?::integer";
                ps = _connection.prepareStatement(_SQLQuery);
                ps.setInt(1, IDOferta);
                rsDetalle = ps.executeQuery();

                _ex_SQLQuery = "delete from inv_ofertas_categoriascxc where codigo_oferta = ?::integer;";
                ps = _ex_connection.prepareStatement(_ex_SQLQuery);
                ps.setInt(1, IDOferta);
                ps.execute();

                while (rsDetalle.next()) {
                    _ex_SQLQuery = "INSERT INTO "
                            + " public.inv_ofertas_categoriascxc (codigo_oferta,codigo_categoria)"
                            + " values(?::integer,?::integer)";

                    ps = _ex_connection.prepareStatement(_ex_SQLQuery);
                    ps.setInt(1, IDOferta);
                    ps.setInt(2, rsDetalle.getInt("codigo_categoria"));

                    ps.execute();
                }

                //Ofertas por dias
                _SQLQuery = "SELECT dia "
                        + "FROM public.inv_ofertas_dias "
                        + "WHERE codigo_oferta = ?::integer";
                ps = _connection.prepareStatement(_SQLQuery);
                ps.setInt(1, IDOferta);
                rsDetalle = ps.executeQuery();

                _ex_SQLQuery = "delete from inv_ofertas_dias where codigo_oferta = ?::integer;";
                ps = _ex_connection.prepareStatement(_ex_SQLQuery);
                ps.setInt(1, IDOferta);
                ps.execute();

                while (rsDetalle.next()) {
                    _ex_SQLQuery = "INSERT INTO "
                            + " public.inv_ofertas_dias (codigo_oferta,dia,cia_codigo)"
                            + " values(?::integer,?::integer,?::varchar)";

                    ps = _ex_connection.prepareStatement(_ex_SQLQuery);
                    ps.setInt(1, IDOferta);
                    ps.setInt(2, rsDetalle.getInt("dia"));
                    ps.setString(3, s_Compania);
                    ps.execute();
                }

                //Actualizando como sincronizada la oferta en la caja
                _SQLQuery = "update vtas.ofertas_cajas set sincronizada = true where caja_cod in(" + this.Caja + ") and cia_codigo = ?::varchar and id_oferta = ?::integer;";
                ps = _connection.prepareStatement(_SQLQuery);
                ps.setString(1, s_Compania);
                ps.setInt(2, IDOferta);
                ps.execute();

            }
        } catch (SQLException ex) {
            message.setMessage(jtext1, "Ocurrio el siguiente error: " + ex.getMessage());
            b_return = false;
        }

        return b_return;
    }

    public void SetCaja(String CodigoCaja, String codigocompania) {
        this.Caja = CodigoCaja;
        this.Compania = codigocompania;

    }

    public void SetSlaveConnection(String host, String database, String portnumber, String username, String password) {
        _ex_Host = host;
        _ex_Database = database;
        _ex_User = username;
        _ex_Port = portnumber;
        _ex_Password = password;

    }
}
