sábado, 17 de junio de 2017

Sistema de ferreteria en Java & Postgrest + Codigo

Este es un sistema que realice en los primero ciclos de la universidad espero que les sirva, consistía en una ferretería que quería controlar sus compras y ventas, lo que compraba con factura y lo que compraba SIN factura de igual manera para sus ventas, esto para poder ver lo que iba a declarar ante la SUNAT (El peor enemigos de las MYPES).


Formulario de inicio

Formulario principal

Formulario donde se muestra los mantenimientos

Formulario donde se muestran las transacciones

Formulario de ventas

Formulario de compras

Formulario de gestion de ventas

Formulario de gestion de compras

Reportes

Informacion del sistema

Formulario de deportes basicos

Formato del reporte


Descargar

Clave de cifrado: !2S41HZJLaR3x_rOVWSGzldZtf74ttjH96j9WwRaBdJs








viernes, 16 de junio de 2017

Generador de visitas a mi blog..... en Java

En este post les dejare una pequeña aplicacion muy simple que lo hace es aumentar las vistas de un blog jejej, esta aplicacion se me ocurrio hacerla dado que no tenia muchas visitas en mi blog, ademas si corres esta aplicacion PUEDES COLGAR LA PC si no ingresas los parametros correctos.

¿COMO FUNCIONA?

1.- Ingresas el link de una pagina web y esta se abrira de una manera infinita jejej



2.- En el segundo panel vemos más parámetros:
*La URL ha abril y a generar visitas
*Tiempo de ejecución: cada que tiempo quieres que se habrá dicha página.
*Número de páginas segundo: Hace referencia a las páginas que se abrirá según el parámetro anterior.
* Tiempo de cierre: se refiere al tiempo en minutos que las ventanas del navegador se cerrara, esto para que no se cuelgue  la máquina y lo puedas dejar ejecutando todo el día la aplicación. 








Clave cifrada: !RVXRT6YMtxcdfhobHYKEog7M260MbRD08LRTQpUFdak

miércoles, 14 de junio de 2017

Exportar JTable a excel en Java + Código

En esta publicación les mostrare como exportar los datos de un jtable a excel (java). El código es el siguiente:







public void exportarExcel(JTable t) throws IOException {
        JFileChooser chooser = new JFileChooser();
        FileNameExtensionFilter filter = new FileNameExtensionFilter("Archivos de excel", "xls");
        chooser.setFileFilter(filter);
        chooser.setDialogTitle("Guardar archivo");
        chooser.setAcceptAllFileFilterUsed(false);
        if (chooser.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) {
            String ruta = chooser.getSelectedFile().toString().concat(".xls");
            try {
                File archivoXLS = new File(ruta);
                if (archivoXLS.exists()) {
                    archivoXLS.delete();
                }
                archivoXLS.createNewFile();
                Workbook libro = new HSSFWorkbook();
                FileOutputStream archivo = new FileOutputStream(archivoXLS);
                Sheet hoja = libro.createSheet("Mi hoja de trabajo 1");
                hoja.setDisplayGridlines(false);
                for (int f = 0; f < t.getRowCount(); f++) {
                    Row fila = hoja.createRow(f);
                    for (int c = 0; c < t.getColumnCount(); c++) {
                        Cell celda = fila.createCell(c);
                        if (f == 0) {
                            celda.setCellValue(t.getColumnName(c));
                        }
                    }
                }
                int filaInicio = 1;
                for (int f = 0; f < t.getRowCount(); f++) {
                    Row fila = hoja.createRow(filaInicio);
                    filaInicio++;
                    for (int c = 0; c < t.getColumnCount(); c++) {
                        Cell celda = fila.createCell(c);
                        if (t.getValueAt(f, c) instanceof Double) {
                            celda.setCellValue(Double.parseDouble(t.getValueAt(f, c).toString()));
                        } else if (t.getValueAt(f, c) instanceof Float) {
                            celda.setCellValue(Float.parseFloat((String) t.getValueAt(f, c)));
                        } else {
                            celda.setCellValue(String.valueOf(t.getValueAt(f, c)));
                        }
                    }
                }
                libro.write(archivo);
                archivo.close();
                Desktop.getDesktop().open(archivoXLS);
            } catch (IOException | NumberFormatException e) {
                throw e;
            }
        }
    }




Pueden descargar el proyecto completo en el siguiente link:

Clave del cifrado: !R6y_KYmS6QsGbluNkQqMvDego8fudWGBo9gQaDOrH2M





domingo, 11 de junio de 2017

Sistema de Almacen + Código Fuente. (Java y Postgres)


SISTEMA DE ALMACÉN

Este es un pequeño sistema con muchas cosas interesantes que espero les sirva, el sistema cuenta con lo siguiente:


-Entrada de materiales
-Salida de Materiales
-Ordenes de Compra
-Ordenes de Servicio
-Gestión de Ordenes de Compra
-Gestión de Ordenes de Servicio
-Reportes de almacén
-Reportes de Logística
-Mantenimientos
-Generador de códigos QR.

Datos de acceso al sistema:
usuario: ADMIN
Contraseña: DARWINOMAR
Programa: Infraestructura Basica


En el caso necesiten implementar un proyecto en base a este ahí les dejo el código y bd, pero aun le falta muchas cosas a implementar y esta un poco DESORDENADO EL CÓDIGO.

Nota: Los link de mis anteriores publicaciones e perdieron, mas adelante estaré publicando nuevas cosas,.
No olviden compartir.

Link  Descargar
Clave cifrado de mega !zuVXc-0ITUkj77AMe4vi30ajiTr7nKuxBrNMOf4-rN0





lunes, 24 de octubre de 2016

Sistema básico de logística.

SISTEMA BÁSICO DE LOGÍSTICA

En esta publicación les mostrare un pequeño sistema que implemente hace un tiempo y que actualmente esta en una versión mas avanzada. El sistema gestiona el almacén y lo que respecta a las compras.
Este sistema se esta utilizando para el control de costos de proyectos así como el control del almacén.  




*Registro todas las ordenes de compra y ordenes de servicio. (Vídeo parte 1 )









*El almacén registra todas las entradas y salidas



*Reportes: En este modulo se muestras los reportes básicos. 

Mas adelante estaré publicando el vídeo del sistema.







domingo, 23 de agosto de 2015

Clases en Java "Generar Reportes, Conexión a BD y Validaciones"

En este post les brindare unas clases.java que utilizo para mis proyectos, estas clases en parte las he implementado y en parte me las han pasado. espero les sirva.

Reportes: Esta clase la utilizo para crear reportes en Java SE, con solo mandar los parámetros y en nombre del archivo(se tiene que tener los jar de ireport para que funcione):
Desde el formulario lo llamo de esta manera:
List<Parametro> listaParametros = new ArrayList();
        Reporte r;
        Programa programa;
        Proyecto proyecto;
        if (validar() == true) {
            r = new Reporte();
            programa = (Programa) this.cbProgramas.getSelectedItem();
            proyecto = (Proyecto) this.cbProyecto.getSelectedItem();
            listaParametros.add(new Parametro("id_programa", programa.getCodigo()));
            listaParametros.add(new Parametro("id_proyecto", proyecto.getIdProyecto()));
            r.generarReporteParametro("reporteMatPorgramaProyecto.jasper", listaParametros);
        }


DAO: Esta clase la utilizo para mis conexiones y para ejecutar mis sql y funciones. Cuenta con los siguientes métodos(esta se complementa con la clase parámetro y esta hecha para postgresql pero también se puede utilizar para mysql o sqlserver con los cambiar el url del driver y jdbc):


Parámetro: Esta clase la utilizo para carga los parámetros que se enviaran a si como activar o desactivar el "setAutoCommit(false)"

MetodosFunciones: Esta clase contiene una serie de metodos personalizados que utilizo cuando programo como:
-SoloNumero
-SoloLetras
-NumeroConDecimales
-ActivarDesactivaControles(estado)
-Limpiarcontroles etc ..

si puede mejorar o agregar los métodos seria interesante y de gran ayuda :D


Descargar Clases

jueves, 12 de febrero de 2015

Generador de códigos QR

Creación de códigos QR.


En este post les mostrare como crear códigos QR, con una librería gratuita zxing-1.6, la documentación de esta librería está en internet dado que es “open source “ y esta trae dos métodos:
-crear código QR y 
-Leer el código QR, 
En este post solo veremos la creación de los códigos QR.

Nota: Lo que he realizado es solo adaptar o modificar los métodos proporcionados por la librería para crear una aplicación más interactiva y con un diseño mejorado, que de gusto usar la aplicación. 

Descargar
Clave de cifrado: !UuEDw5vtNMiAHWSFR6bQyQ

jueves, 16 de octubre de 2014

Creación de codigo QR en Java

Creación de códigos QR.

En este post les mostrare como crear códigos QR, con una librería gratuita zxing-1.6, la documentación de esta librería está en internet dado que es “open source “ y esta trae dos métodos:
-crear código QR y 
-Leer el código QR, 
En este post solo veremos la creación de los códigos QR.

Nota: Lo que he realizado es solo adaptar o modificar los métodos proporcionados por la librería para crear una aplicación más interactiva.

Métodos para crear código QR:





    /**
     *
     * @param informacion es elcontenido que llevara el codigo QR, que se estrae de la caja de texto
     * @param ruta es la ruta donde vamos a guardar el archivo
     * @throws WriterException
     * @throws IOException
     */
    public void crearCodigoQR(String informacion, String ruta) throws WriterException, IOException {
        FileOutputStream qrCode = null;
        try {
            BitMatrix bm;
            Writer writer = new QRCodeWriter();
            bm = writer.encode(informacion, BarcodeFormat.QR_CODE, ancho, alto);
            BufferedImage image = new BufferedImage(ancho, alto, BufferedImage.TYPE_INT_RGB);
            for (int y = 0; y < ancho; y++) {
                for (int x = 0; x < alto; x++) {
                    int grayValue = (bm.get(x, y) ? 1 : 0) & 0xff;
                    image.setRGB(x, y, (grayValue == 0 ? 0 : 0xFFFFFF));
                }
            }
            image = invertirColores(image);
            qrCode = new FileOutputStream(rutaQR + "." + FORMATO_IMAGEN);
            ImageIO.write(image, FORMATO_IMAGEN, qrCode);
            qrCode.close();
        // ESTO ES PARA ABRIR EL CODIGO QR, CON EL VISOR DE IMAGENS despues de averce creado :D
        // Tiene como parametro la ruta del archivo QR
        //Desktop d = Desktop.getDesktop();
        //d.open(new File("Aqui va la ruta del QR"));
        } catch (FileNotFoundException ex) {
            Logger.getLogger(CodigoQRZinx.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                qrCode.close();
            } catch (IOException ex) {
                Logger.getLogger(CodigoQRZinx.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

    }

    /**
     * Este metodo se utiliza el el metodo crearCodigoQR("","")
     * Mas informacion de esta libreria puede buscarla en internet o en el link que esta en este post
     * @param imagen
     * @return
     */
    private static BufferedImage invertirColores(BufferedImage imagen) {
        for (int x = 0; x < ancho; x++) {
            for (int y = 0; y < alto; y++) {
                int rgb = imagen.getRGB(x, y);
                if (rgb == -16777216) {
                    imagen.setRGB(x, y, -1);
                } else {
                    imagen.setRGB(x, y, -16777216);
                }
            }
        }
        return imagen;
    }


Nota: Las librerías necesarias están en el proyecto 


   
   

miércoles, 24 de septiembre de 2014

Practica de Programación II - PHP & Postgres

Solución de Practica de programación II - Básico :) 

1-Realizar un inicio de sesión 



2- Realizar un agregar y un listar





Nota: En el caso de faltar algo me lo hacen saber :D ... la bd esta incluida en el proyecto

Descargar Ejercicio


lunes, 22 de septiembre de 2014

Métodos, Validaciones, Modelos, Autocometar, LookAndFeel en Java v 1.0

Para descargar todo el proyecto los links están al final de la publicación. 


Auto completar: para un combo y una caja de texto, esto lo encontraras al descargar el proyecto completo.

Cambio del diseño del formulario: 

            UIManager.setLookAndFeel(new SyntheticaBlackEyeLookAndFeel());



Métodos para realizar validaciones: Como por ejemplo solo números, solo letras, solo números y letras, solo números decimales, numeroRuc, numeroTelefono, edad, activarDesactivarBotones etc.


  public static void activarControles(JComponent componetes, boolean estado) {
        Component[] contenedor = componetes.getComponents();
        for (int i = 0; i < contenedor.length; i++) {
            if (contenedor[i] instanceof JTextField
                    || contenedor[i] instanceof JLabel
                    || contenedor[i] instanceof JButton
                    || contenedor[i] instanceof JCheckBox
                    || contenedor[i] instanceof JTextComponent
                    || contenedor[i] instanceof JSpinner
                    || contenedor[i] instanceof JDateChooser
                    || contenedor[i] instanceof JComboBox) {
                contenedor[i].setEnabled(estado);
            }
        }
    }

 

    public static void activarLimpiarControles(JComponent componetes, boolean estado) {
        Component[] contenedor = componetes.getComponents();
        Component aux;
        for (int i = 0; i < contenedor.length; i++) {
            if (contenedor[i] instanceof JTextField
                    || contenedor[i] instanceof JLabel
                    || contenedor[i] instanceof JButton
                    || contenedor[i] instanceof JCheckBox
                    || contenedor[i] instanceof JRadioButton
                    || contenedor[i] instanceof JSpinner
                    || contenedor[i] instanceof JDateChooser
                    || contenedor[i] instanceof JTextComponent
                    || contenedor[i] instanceof JComboBox) {

                contenedor[i].setEnabled(estado);

                if (contenedor[i] instanceof JTextField) {
                    aux = contenedor[i];
                    ((JTextField) aux).setText("");
                }
                if (contenedor[i] instanceof JComboBox) {
                    aux = contenedor[i];
                    ((JComboBox) aux).setSelectedIndex(-1);
                }
                if (contenedor[i] instanceof JCheckBox) {
                    aux = contenedor[i];
                    ((JCheckBox) aux).setSelected(false);
                }
                if (contenedor[i] instanceof JRadioButton) {
                    aux = contenedor[i];
                    ((JRadioButton) aux).setSelected(false);
                }
                if (contenedor[i] instanceof JDateChooser) {
                    aux = contenedor[i];
                    ((JDateChooser) aux).setDate(null);
                }
            }
        }
    }

public static void soloNumeros(JTextField txt, int numeroCaracteres) {
        txt.addKeyListener(new KeyAdapter() {
            @Override
            public void keyTyped(KeyEvent evt) {
                char car = evt.getKeyChar();
                if (car < '0' || car > '9') { // numero que estan entre  0-9
                    evt.consume();
                }

                if (numeroCaracteres > 0) {
                    if (txt.getText().length() == numeroCaracteres) {
                        evt.consume();
                    }
                }
            }
        });
    }


  public static void soloNumerosDecimales(JTextField txt, int numeroCaracteres) {

        txt.addKeyListener(new KeyAdapter() {
            @Override
            public void keyTyped(KeyEvent evt) {
                char c = evt.getKeyChar();
                if (((c < '0') || (c > '9')) && (c != KeyEvent.VK_BACK_SPACE) && (c != '.')) {
                    evt.consume();
                }
                if (c == '.' && txt.getText().contains(".")) {
                    evt.consume();
                }

                if (numeroCaracteres > 0) {
                    if (txt.getText().length() == numeroCaracteres) {
                        evt.consume();
                    }
                }
            }
        });
    }

  public static void soloLetrasNumeros(JTextField txt, int numeroCaracteres) {
        txt.addKeyListener(new KeyAdapter() {
            @Override
            public void keyTyped(KeyEvent e) {
                char c = e.getKeyChar();
                if ((c < 'a' || c > 'z')
                        && (c < 'A' || c > 'Z')
                        && (c < '0' || c > '9')
                        && c != 'á' //Minúsculas
                        && c != 'é'
                        && c != 'í'
                        && c != 'ó'
                        && c != 'ú'
                        && c != 'Á' //Mayúsculas
                        && c != 'É'
                        && c != 'Í'
                        && c != 'Ó'
                        && c != 'Ú'
                        && (c != (char) e.VK_SPACE)) {
                    e.consume(); //evita que se escriba el caracter
                }
                if (numeroCaracteres > 0) {
                    if (txt.getText().length() == numeroCaracteres) {
                        e.consume();
                    }
                }
            }
        });
    }

  public static void soloLetras(JTextField txt, int numeroCaracteres) {
        txt.addKeyListener(new KeyAdapter() {
            @Override
            public void keyTyped(KeyEvent e) {
                char c = e.getKeyChar();
                if ((c < 'a' || c > 'z')
                        && (c < 'A' || c > 'Z')
                        && c != 'á' //Minúsculas
                        && c != 'é'
                        && c != 'í'
                        && c != 'ó'
                        && c != 'ú'
                        && c != 'Á' //Mayúsculas
                        && c != 'É'
                        && c != 'Í'
                        && c != 'Ó'
                        && c != 'Ú'
                        && (c != (char) e.VK_SPACE)) {
                    e.consume(); //evita que se escriba el caracter
                }
                if (numeroCaracteres > 0) {
                    if (txt.getText().length() == numeroCaracteres) {
                        e.consume();
                    }
                }
            }
        });
    }

    public static String formatearNumero(double numero) {
        DecimalFormatSymbols simbolos = new DecimalFormatSymbols();
        simbolos.setDecimalSeparator('.');
        simbolos.setGroupingSeparator(',');
        DecimalFormat formato = new DecimalFormat("###,###.00", simbolos);
        return formato.format(numero);
    }

  public static MaskFormatter validarEntradas(int op) {
        MaskFormatter mascara = null;
        try {
            switch (op) {
                case 1:
//                    ruc
                    mascara = new MaskFormatter("###########");
                    break;
                case 2:
//                    Fechas
                    mascara = new MaskFormatter("##/##/####");
                    break;
                case 3:
//                    Telefono Fijo
                    mascara = new MaskFormatter("(##) ## ## ##");
//                    mascara.setValidCharacters("0123456789");
                    break;
                case 4:
//                    Celular 
                    mascara = new MaskFormatter("### ### ###");
                    break;
                case 5:
//                    Dni
                    mascara = new MaskFormatter("########");
                    break;
            }
        } catch (ParseException erro) {
        }
        return mascara;
    }

Modelo combo 

public class ModeloComboCargoTrabajador extends AbstractListModel
        implements ComboBoxModel {

    private Cargo seleccionado;
    private List<Cargo> listaCargos;

    public Cargo getSeleccionado() {
        return seleccionado;
    }

    public void setSeleccionado(Cargo seleccionado) {
        this.seleccionado = seleccionado;
    }

    public List<Cargo> getListaCargos() {
        return listaCargos;
    }

    public void setListaCargos(List<Cargo> listaCargos) {
        this.listaCargos = listaCargos;
    }
 
    @Override
    public int getSize() {
        int cantidad = 0;
        if (this.listaCargos != null) {
            cantidad = this.listaCargos.size();
        }
        return cantidad;
    }

    @Override
    public Object getElementAt(int i) {
        Object dato = null;
        if (this.listaCargos != null) {
            dato = this.listaCargos.get(i).getNombreCargo();
        }
        return dato;
    }

    @Override
    public void setSelectedItem(Object o) {
        this.seleccionado = null;
        if (o != null && this.listaCargos != null) {
            for (Cargo u : listaCargos) {
                if (u.getNombreCargo().equals(o.toString()) == true) {
                    this.seleccionado = u;
                    return;
                }
            }
        }

    }

    @Override
    public Object getSelectedItem() {
        String valor = "";
        if (this.seleccionado != null) {
            valor = this.seleccionado.getNombreCargo();
        }
        return valor;
    }

// Este Codigo se AGrega Adicionalmente al de lo modelos
    // El cual devolvera el boton modificar
    public void setCargoTrabajador(Cargo car) {
        this.seleccionado = null;
        if (car != null && this.listaCargos != null) {
            for (Cargo c : this.listaCargos) {
                if (c.getNombreCargo().equals(car.getNombreCargo())) {
                    this.seleccionado = c;
                    return;
                }
            }
        }
    }

    public void setCargoTrabajadorId(Trabajador tra) {
        this.seleccionado = null;
        if (tra != null && this.listaCargos != null) {
            for (Cargo c : this.listaCargos) {
                if (c.getCodigo()== tra.getCodigo()) {
                    this.seleccionado = c;
                    return;
                }
            }
        }
    }
}

Modelo Tabla 
public class ModeloTablaTrabajador extends AbstractTableModel {

    private List<Trabajador> listaTrabajadores;

    public List<Trabajador> getListaTrabajadores() {
        return listaTrabajadores;
    }

    public void setListaTrabajadores(List<Trabajador> listaTrabajadores) {
        this.listaTrabajadores = listaTrabajadores;
        this.fireTableDataChanged();
    }

  

    @Override
    public String getColumnName(int columna) {
        String nombreColumna = "";
        switch (columna) {
            case 0:
                nombreColumna = "Nombres";
                break;
            case 1:
                nombreColumna = "Direccion";
                break;
            case 2:
                nombreColumna = "Celular";
                break;
            case 3:
                nombreColumna = "Edad";
                break;
            case 4:
                nombreColumna = "DNI";
                break;
        }
        return nombreColumna;
    }

    @Override
    public int getRowCount() {
        int filas = 0;

        if (this.listaTrabajadores != null) {
            filas = this.listaTrabajadores.size();
        }
        return filas;
    }

    @Override
    public int getColumnCount() {
        return 5;
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        Trabajador tra;
        Object valor = "";
        if (this.listaTrabajadores != null) {
            tra = this.listaTrabajadores.get(rowIndex);
            switch (columnIndex) {
                case 0:
                    valor = tra.getNombresCompletos();
                    break;
                case 1:
                    valor = tra.getDireccion();
                    break;
                case 2:
                    valor = tra.getCelular();
                    break;
                case 3:
                    valor = tra.getEdad();
                    break;
                case 4:
                    valor = tra.getDni();
                    break;
            }
        }
        return valor;
    }
}


Métodos para conectarme a una Base de Datos "Postgres": Insertar usando una cadena, insertar usando una función, insertar usando una función extendiendo de DAO y usando la clase parametro, insertar usando una cadena y extendiendo de DAO, listar etc. 

Nota: para conectar con sqlserver hay algunas variaciones

Clase DAO
package DAO;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.List;

public class DAOPostgres {

    private Connection conexion;
    private boolean transaccionIniciada;
    private String driver= "org.postgresql.Driver";

    protected Connection getConexion() {
        return conexion;
    }

    protected void Conectar(boolean wTransaccion) throws Exception {
        Class.forName(driver);
        this.conexion = DriverManager.getConnection("jdbc:postgresql://localhost/bd_accesodatos_validaciones","postgres", "usatING123");
     
        if (wTransaccion == true) {
            this.conexion.setAutoCommit(false);
            this.transaccionIniciada = true;
        } else {
            this.conexion.setAutoCommit(true);
            this.transaccionIniciada = false;
        }
    }

    protected void Cerrar(boolean wEstado) throws Exception {
        if (this.conexion != null) {
            if (this.transaccionIniciada == true) {
                try {
                    if (wEstado == true) {
                        this.conexion.commit();
                    } else {
                        this.conexion.rollback();
                    }
                } catch (Exception e) {
                    throw e;
                }
            }
            try {
                this.conexion.close();
            } catch (Exception e) {
            }
        }
        this.conexion = null;
    }

    protected void EjecutarOrden(String wSQL) throws Exception {
        Statement st;

        if (this.conexion != null) {
            st = this.conexion.createStatement();
            st.executeUpdate(wSQL);
        }
    }

    protected ResultSet EjecutarOrdenDatos(String wSQL) throws Exception {
        Statement st;
        ResultSet rs = null;

        if (this.conexion != null) {
            st = this.conexion.createStatement();
            rs = st.executeQuery(wSQL); //select
        }
        return rs;
    }

    protected Object EjecutarProcedimiento(String wProcedimiento, List<ParametroPostgres> wParametros) throws Exception {
        CallableStatement cs;
        Object valor = null;
        int parSalida = -1;
        int i = 1;
        try {
            cs = this.getConexion().prepareCall(wProcedimiento);
            if (wParametros != null) {
                for (ParametroPostgres par : wParametros) {
                    if (par.isEntrada() == true) {
                        cs.setObject(i, par.getValor());
//            cs.setObject(par.getNombre(), par.getValor());
                    } else {
                        parSalida = i;
                        cs.registerOutParameter(i, par.getTipo());
                    }
                    i += 1;
                }
            }
            cs.executeUpdate();
            if (parSalida > 0) {
                valor = cs.getObject(parSalida);
                //valor = cs.getObject("xxx");
            }
        } catch (Exception e) {
            throw e;
        } finally {
            cs = null;
        }
        return valor;
    }

    protected ResultSet EjecutarProcedimientoDatos(String wProcedimiento, List<ParametroPostgres> wParametros) throws Exception {
        CallableStatement cs;
        ResultSet rs = null;
        int i = 1;

        try {
            cs = this.getConexion().prepareCall(wProcedimiento);
            if (wParametros != null) {
                for (ParametroPostgres par : wParametros) {
                    if (par.isEntrada() == true) {
                        cs.setObject(i, par.getValor());
                    } else {
                        cs.registerOutParameter(i, par.getTipo());
                    }
                    i += 1;
                }
            }
            cs.execute();
            //rs = cs.executeQuery();
            rs = (ResultSet) cs.getObject(1);
        } catch (Exception e) {
            throw e;
        } finally {
            cs = null;
        }

        return rs;
    }

}

Clase Parámetro: 
package DAO;

public class ParametroPostgres {
  
  private String nombre;
  private Object valor;
  private boolean entrada;
  private int tipo;

  public ParametroPostgres() {
    this.entrada = true;
  }
  
  public ParametroPostgres(String nombre, Object valor) {
    this.nombre = nombre;
    this.valor = valor;
    this.entrada = true;
  }

  public ParametroPostgres(String nombre, boolean entrada, int tipo) {
    this.nombre = nombre;
    this.valor = null;
    this.entrada = entrada;
    this.tipo = tipo;
  }
  
   public int getTipo() {
    return this.tipo;
  }

  public void setTipo(int tipo) {
    this.tipo = tipo;
  }
  
  public boolean isEntrada() {
    return entrada;
  }

  public void setEntrada(boolean entrada) {
    this.entrada = entrada;
  }

  public String getNombre() {
    return nombre;
  }

  public void setNombre(String nombre) {
    this.nombre = nombre;
  }

  public Object getValor() {
    return valor;
  }

  public void setValor(Object valor) {
    this.valor = valor;
  }

  
}

Métodos para insertar y listar usando DAO y parámetro 

public class DAOTrabajador extends DAOPostgres {

    String driver = "org.postgresql.Driver";
    String url = "jdbc:postgresql://localhost/bd_accesodatos_validaciones";
    String usuario = "postgres";
    String clave = "usatING123";

    /**
     * Este metodo me registra un trabajador utilizando una cadena Para poder
     * utilizar este metodo es necesario extender de la clase DAO
     *
     * @param trabajador es la clase Trabajador
     * @throws Exception
     */
    public void regTrabajadorDAOCadena(Trabajador trabajador) throws Exception {
        String sql = "insert into trabajador (nombre, dni, edad, sueldo, fechanacimiento, estado, direccion, telefono, celular, ruc, codigocargo)\n"
                + "values ('" + trabajador.getNombresCompletos()
                + "', '" + trabajador.getDni()
                + "', " + trabajador.getEdad()
                + ", " + trabajador.getSueldo()
                + ", '" + trabajador.getFechaNaciemiento()
                + "', " + trabajador.isEstado()
                + " , '" + trabajador.getDireccion()
                + "', '" + trabajador.getTelefonoFijo()
                + "','" + trabajador.getCelular()
                + "', '" + trabajador.getRuc()
                + "', " + trabajador.getCargoPersona().getCodigo() + ")";
        try {
            this.Conectar(true);
            this.EjecutarOrden(sql);
            this.Cerrar(true);
        } catch (Exception e) {
            this.Cerrar(false);
            throw e;
        } finally {
            sql = "";
        }
    }

    /**
     * Este registrar es con una funcion creada en postgressql y para poder
     * usarla es necesario extender de dao y tener la clase parametro, estas son
     * de mucha utilidad si queremos optimizar y estandarizar nuestro codigo
     *
     * @param trab
     * @throws Exception
     */
    public void regTrabajadorDAOFuncion(Trabajador trab) throws Exception {
        try {

            Date a = new java.sql.Date(trab.getFechaNaciemiento().getTime());
            List<ParametroPostgres> pars = new ArrayList<ParametroPostgres>();
            pars.add(new ParametroPostgres("", trab.getNombresCompletos()));
            pars.add(new ParametroPostgres("", trab.getDni()));
            pars.add(new ParametroPostgres("", trab.getEdad()));
            pars.add(new ParametroPostgres("", trab.getSueldo()));
            pars.add(new ParametroPostgres("", a));
            //parsRegistroResiduos.add(new Parametro("", new java.sql.Date(registroresiduos.getFechaGuiaRemicion().getTime())));
            pars.add(new ParametroPostgres("", trab.isEstado()));
            pars.add(new ParametroPostgres("", trab.getDireccion()));
            pars.add(new ParametroPostgres("", trab.getTelefonoFijo()));
            pars.add(new ParametroPostgres("", trab.getCelular()));
            pars.add(new ParametroPostgres("", trab.getRuc()));
            pars.add(new ParametroPostgres("", trab.getCargoPersona().getCodigo()));
            this.Conectar(true);
            this.EjecutarProcedimiento("{ call fu_r_Trababajador(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) }", pars);
            this.Cerrar(true);
        } catch (Exception e) {
            this.Cerrar(false);
            throw e;
        } finally {

        }

    }

    /**
     * Registro de trabajador, usando una candena
     *
     * @param trabajador
     * @throws Exception
     */
    public void regTrabajadorString(Trabajador trabajador) throws Exception {  // Registro de una persina usando cadena
        Connection cn = null;
        Statement st = null; // SQL 
        String sql = "insert into trabajador (nombre, dni, edad, sueldo, fechanacimiento, estado, direccion, telefono, celular, ruc, codigocargo)\n"
                + "values ('" + trabajador.getNombresCompletos()
                + "', '" + trabajador.getDni()
                + "', " + trabajador.getEdad()
                + ", " + trabajador.getSueldo()
                + ", '" + trabajador.getFechaNaciemiento()
                + "', " + trabajador.isEstado()
                + " , '" + trabajador.getDireccion()
                + "', '" + trabajador.getTelefonoFijo()
                + "','" + trabajador.getCelular()
                + "', '" + trabajador.getRuc()
                + "', " + trabajador.getCargoPersona().getCodigo() + ")";

        try {
            Class.forName(this.driver); //Registro del driver
            cn = DriverManager.getConnection(this.url, this.usuario, this.clave);
            st = cn.createStatement();
            st.executeUpdate(sql);
        } catch (Exception e) {
            throw e;
        } finally {
            if (st != null) {
                st.close();
                st = null;
            }
            if (cn != null) {
                cn.close();
                cn = null;
            }
        }
    }

    /**
     * registro de trabajador usanso un funcion
     *
     * @param trabajador
     * @throws Exception
     */
    public void regTrabajadorFuncion(Trabajador trabajador) throws Exception {
        Connection cn = null;
        CallableStatement cs = null; // Es para la funcion
        java.sql.Date f = new java.sql.Date(trabajador.getFechaNaciemiento().getTime());
        try {
            Class.forName(this.driver);
            cn = DriverManager.getConnection(this.url, this.usuario, this.clave);
            cs = cn.prepareCall("{ call fu_r_Trababajador(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) }");
            cs.setString(1, trabajador.getNombresCompletos());
            cs.setString(2, trabajador.getDni());
            cs.setInt(3, trabajador.getEdad());
            cs.setFloat(4, trabajador.getSueldo());
            cs.setDate(5, f);
            cs.setBoolean(6, trabajador.isEstado());
            cs.setString(7, trabajador.getDireccion());
            cs.setString(8, trabajador.getTelefonoFijo());
            cs.setString(9, trabajador.getCelular());
            cs.setString(10, trabajador.getRuc());
            cs.setInt(11, trabajador.getCargoPersona().getCodigo());
            cs.executeUpdate();
        } catch (Exception e) {
            throw e;
        } finally {
            if (cs != null) {
                cs.close();
                cs = null;
            }
            if (cn != null) {
                cn.close();
                cn = null;
            }
        }
    }

    public List<Trabajador> lisTrabajadoresDAOFuncion() throws Exception {
        List<Trabajador> listaTrabajadores;
        List<ParametroPostgres> pars = new ArrayList();
        Trabajador trab;
        pars.add(new ParametroPostgres("", false, Types.OTHER));
        ResultSet rs = null;
        try {
            this.Conectar(true);
            rs = this.EjecutarProcedimientoDatos("{ ?= call fu_listar() }", pars);
            listaTrabajadores = new ArrayList();
            while (rs.next() == true) {
                trab = new Trabajador();
                trab.setCodigo(rs.getInt(1));
                trab.setNombresCompletos(rs.getString(2));
                trab.setDireccion(rs.getString(3));
                trab.setCelular(rs.getString(4));
                trab.setEdad(rs.getInt(5));
                trab.setDni(rs.getString(6));
                listaTrabajadores.add(trab);

            }
            this.Cerrar(true);
        } catch (Exception e) {
            this.Cerrar(false);
            throw e;
        }
        return listaTrabajadores;
    }

    public List<Trabajador> lisTrabajadoresDAOCadena() throws Exception {
        List<Trabajador> listaTrabajadores;
        Trabajador trab;
        ResultSet rs = null;
        String sql = "SELECT  codigo, nombre, direccion, celular, edad, dni from trabajador";
        try {
            this.Conectar(true);
            rs = this.EjecutarOrdenDatos(sql);
            listaTrabajadores = new ArrayList();
            while (rs.next() == true) {
                trab = new Trabajador();
                trab.setCodigo(rs.getInt(1));
                trab.setNombresCompletos(rs.getString(2));
                trab.setDireccion(rs.getString(3));
                trab.setCelular(rs.getString(4));
                trab.setEdad(rs.getInt(5));
                trab.setDni(rs.getString(6));
                listaTrabajadores.add(trab);
            }
            this.Cerrar(true);
        } catch (Exception e) {
            this.Cerrar(false);
            throw e;
        } finally {
            if (rs != null) {
                rs.close();
                rs = null;
            }
            trab = null;
            sql = null;
        }
        return listaTrabajadores;
    }

    public List<Trabajador> lisTrabajadorCadena() throws Exception {
        Connection cn = null;
        Statement st = null;
        List<Trabajador> lista = null;
        Trabajador trab = null;
        ResultSet rs;
        String sql = "SELECT  codigo, nombre, direccion, celular, edad, dni from trabajador";
        try {
            Class.forName(this.driver);  // Registro driver 
            cn = DriverManager.getConnection(url, this.usuario, this.clave); //creo la coneccion 
            st = cn.createStatement();
            rs = st.executeQuery(sql);
            lista = new ArrayList();
            while (rs.next() == true) {
                trab = new Trabajador();
                trab.setCodigo(rs.getInt(1));
                trab.setNombresCompletos(rs.getString(2));
                trab.setDireccion(rs.getString(3));
                trab.setCelular(rs.getString(4));
                trab.setEdad(rs.getInt(5));
                trab.setDni(rs.getString(6));
                lista.add(trab);
            }
            this.Conectar(false);
        } catch (Exception e) {
            this.Cerrar(false);
            throw e;
        } finally {
            if (trab != null) {
                trab = null;
            }
            if (cn != null || st != null) {
                cn.close();
                st.close();
            }
        }
        return lista;
    }

    public List<Trabajador> listTrabajadorFuncion() throws Exception {
        Connection cn = null;
        ResultSet rs = null;
        CallableStatement cs = null;
        List<Trabajador> lisTrab = null;
        Trabajador trab;
        try {
            Class.forName(this.driver);  // Registro driver 
            cn = DriverManager.getConnection(url, this.usuario, this.clave);
            cn.setAutoCommit(false); // desabilita el autocomic
            cs = cn.prepareCall("{? = call fu_listar()}");
            cs.registerOutParameter(1, Types.OTHER);
            cs.execute(); // tiene que ser execute(); 
            rs = (ResultSet) cs.getObject(1);
            lisTrab = new ArrayList();
            while (rs.next() == true) {
                trab = new Trabajador();
                trab.setCodigo(rs.getInt(1));
                trab.setNombresCompletos(rs.getString(2));
                trab.setDireccion(rs.getString(3));
                trab.setCelular(rs.getString(4));
                trab.setEdad(rs.getInt(5));
                trab.setDni(rs.getString(6));
                lisTrab.add(trab);
            }
            cn.commit();
        } catch (Exception e) {
            throw e;
        } finally {
            trab = null;
            if (rs != null) {
                rs.close();
                rs = null;
            }

        }
        return lisTrab;
    }

    public List<Trabajador> listTrabajadorFuncion(int codigo) throws Exception {
        Connection cn = null;
        ResultSet rs = null;
        CallableStatement cs = null;
        List<Trabajador> lisTrab = null;
        Trabajador trab;
        try {
            Class.forName(this.driver);  // Registro driver 
            cn = DriverManager.getConnection(url, this.usuario, this.clave);
            cn.setAutoCommit(false); // desabilita el autocomic
            cs = cn.prepareCall("{? = call fu_listar_parametro(?)}");
            cs.registerOutParameter(1, Types.OTHER);
            cs.setInt(2, codigo);
            cs.execute(); // tiene que ser execute(); 
            rs = (ResultSet) cs.getObject(1);
            lisTrab = new ArrayList();
            while (rs.next() == true) {
                trab = new Trabajador();
                trab.setCodigo(rs.getInt(1));
                trab.setNombresCompletos(rs.getString(2));
                trab.setDireccion(rs.getString(3));
                trab.setCelular(rs.getString(4));
                trab.setEdad(rs.getInt(5));
                trab.setDni(rs.getString(6));
                lisTrab.add(trab);
            }
            cn.commit();
        } catch (Exception e) {
            throw e;
        } finally {
            trab = null;
            if (rs != null) {
                rs.close();
                rs = null;
            }

        }
        return lisTrab;
    }

    public List<Trabajador> lisTrabajadoresDAOFuncion(int codigo) throws Exception {
        List<Trabajador> listaTrabajadores;
        List<ParametroPostgres> pars = new ArrayList();
        Trabajador trab;
        pars.add(new ParametroPostgres("", false, Types.OTHER));
        pars.add(new ParametroPostgres("", codigo));
        ResultSet rs = null;
        try {
            this.Conectar(true);
            rs = this.EjecutarProcedimientoDatos("{ ?= call fu_listar_parametro(?) }", pars);
            listaTrabajadores = new ArrayList();
            while (rs.next() == true) {
                trab = new Trabajador();
                trab.setCodigo(rs.getInt(1));
                trab.setNombresCompletos(rs.getString(2));
                trab.setDireccion(rs.getString(3));
                trab.setCelular(rs.getString(4));
                trab.setEdad(rs.getInt(5));
                trab.setDni(rs.getString(6));
                listaTrabajadores.add(trab);

            }
            this.Cerrar(true);
        } catch (Exception e) {
            this.Cerrar(false);
            throw e;
        }
        return listaTrabajadores;
    }

}



 



Modelo Combo Descargar
Modelo Table Descargar
Método Validaciones: Descargar
Proyectos completo: Descargar ahí se encuentra  el proyecto en una carpeta y en un archivo comprimido


Nota:
En el proyecto encontraras algunas cosas que no menciono que son de mucha ayuda para programar y se pueden agregar o mejorar mas cosas solo comenten y compartan. Ademas