package br.com.elotech.websaude.odontograma.backend.model.dao;

import com.vaadin.ui.Notification;
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author elotech
 */
public class Conexao {

    public static Connection CONN;
    protected static final String DRIVER = "org.postgresql.Driver";

    public synchronized static boolean abrirConexao(String[] args) {

        try {

            Class.forName(DRIVER);
            CONN = DriverManager.getConnection("jdbc:postgresql://" + args[0] + "?currentSchema=social", args[1], args[2]);
            CONN.createStatement().execute("set search_path to 'social'");
            CONN.setAutoCommit(false);

            return true;

        } catch (ClassNotFoundException | SQLException ex) {
            Logger.getLogger(Conexao.class.getName()).log(Level.SEVERE, null, ex);
            Notification.show("Ocorreu um erro!","Por favor, contacte o suporte para reportar.\n"+ex.getMessage(), Notification.Type.ERROR_MESSAGE);
        }

        return false;
    }

    /*
    public synchronized static void fecharConexao() {
        if (CONN != null)
            try {
                if (!CONN.isClosed())
                    CONN.close();
            } catch (SQLException ex) {
                Logger.getLogger(Conexao.class.getName()).log(Level.SEVERE, null, ex);
            }
    }
    */

    public synchronized static String tratar(String unidadeId, int par) {

        if (unidadeId == null)
            return null;
        if (unidadeId.length() > par)
            unidadeId = unidadeId.substring(0, par);

        return unidadeId;
    }

    public synchronized static int tratarInt(String cnes) {

        if (cnes == null)
            return 0;

        for (char c : cnes.toCharArray())
            if (!Character.isDigit(c))
                return 0;

        if (cnes.length() > 0)
            return Integer.parseInt(cnes);
        else
            return 0;
    }

}
