/* 
* Copyright 2016 Agencia Estatal de Administración Tibutaria
*
* Licencia con arreglo a la EUPL, Versión 1.1 o –en cuanto
* sean aprobadas por la Comisión Europea– versiones
* posteriores de la EUPL (la «Licencia»);
* Solo podrá usarse esta obra si se respeta la Licencia.
* Puede obtenerse una copia de la Licencia en:
*  
* https://joinup.ec.europa.eu/software/page/eupl
*  
* Salvo cuando lo exija la legislación aplicable o se acuerde
* por escrito, el programa distribuido con arreglo a la
* Licencia se distribuye «TAL CUAL», SIN GARANTÍAS NI CONDICIONES
* DE NINGÚN TIPO, ni expresasni implícitas.
*
* Véase la Licencia en el idioma concreto que rige los permisos y 
* limitaciones que establece la Licencia.
*/ 

package administrador.datos;

import java.sql.ResultSet;
import java.sql.ResultSetMetaData;

import javax.swing.DefaultComboBoxModel;
import javax.swing.table.DefaultTableModel;

public class TableModelResultSet {

    public static void rellena(ResultSet rs, DefaultTableModel modelo) {
        configuraColumnas(rs, modelo);
        addFilasDeDatos(rs, modelo);
    }

    public static void rellena(ResultSet rs, DefaultComboBoxModel modelo) {
        anhadeFilasDeDatos(rs, modelo);
    }

    private static void addFilasDeDatos(ResultSet rs, DefaultTableModel modelo) {
        try {
            while (rs.next()) {
                Object[] datosFila = new Object[modelo.getColumnCount()];
                for (int i = 0; i < modelo.getColumnCount(); i++) {
                    datosFila[i] = rs.getObject(i + 1);
                }
                modelo.addRow(datosFila);
            }
            rs.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void anhadeFilasDeDatos(ResultSet rs, DefaultComboBoxModel modelo) {
        try {
            while (rs.next()) {
                modelo.addElement(rs.getString(1));
            }
            rs.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void configuraColumnas(final ResultSet rs, final DefaultTableModel modelo) {
        try {
            ResultSetMetaData metaDatos = rs.getMetaData();
            int numeroColumnas = metaDatos.getColumnCount();
            Object[] etiquetas = new Object[numeroColumnas];
            for (int i = 0; i < numeroColumnas; i++) {
                etiquetas[i] = metaDatos.getColumnLabel(i + 1);
            }
            modelo.setColumnIdentifiers(etiquetas);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
