martes, 19 de agosto de 2014

Imprimir un comprobante desde web con un applet


Holas!!, como siempre un gran problema al hacer un sistema web de venta retail oal menudeo es la impresion de comprobantes, porque debemos hacerlo al estilo "desktop", es decir sin pasar por un pdf previo.. o un "diseño" html con impresion javascript, porque debemos usar muchas veces la "potencia" de impresoras matriciales. Entonces si lo hacemos con tecnologia MS la solucion es a traves de un COM/DLL o como quieran llamarlo. Si es con nuestro querido java entonces debemos incrustar en un jsp un lindo Applet que llame a un bonito diseño en jasperreport que se conecta a nuestra base de datos en forma remota desde el cliente.

Como hacemos eso???? Pues aqui viene la explicacion (vale decir que tambien sirve para cualquier applet que quieran se conecte a una base de datos remota)
 
1. Crear su applet en netbeans, sino saben como se crea un applet pueden seguir el tutorial de aqui:
https://netbeans.org/kb/docs/web/applets.html

2. Firmar sus .jar ; tanto el applet .jar como las librerias adicionales que esten usando en su Applet. Para este caso especifico del comprobante:
 postgres jdbc
     postgresql-8.1-414.jdbc2ee.jar
 jasperreports libs
     commons-collections-3.2.1.jar
     commons-digester-2.1.jar
     commons-logging-1.1.jar
     jasperreports-5.1.0.jar
     groovy-all-2.0.1.jar (este lo pueden obviar si cambian el lenguaje groovy por java en el mismo jasper            diseñado)

Ahora para firmar los .jar seguimos estos 3 pasos desde consola linux o DOS (el keytool y jarsigner estan en la carpeta de ejecutables donde instalaste tu JDK):

                              1. keytool -genkey -keystore myKeyStore -alias me
                              2. keytool -selfcert -keystore myKeyStore -alias me
                              3. jarsigner -keystore myKeyStore jarfile.jar me

Cuando te pregunte por la clave coloca la de tu gusto, lo demas dejalo como "default" o si deseas pon la informacion de tu empresa u organizacion, eso lo decides tu,

3. Recuerda que la etiqueta HTML debe ser algo como esto:

codebase="classes" 
code="comet/ClsPrint.class" 
archive="printApplet.jar,
postgresql-8.1-414.jdbc2ee.jar,
commons-collections-3.2.1.jar,
commons-digester-2.1.jar,
commons-logging-1.1.jar,
groovy-all-2.0.1.jar,
jasperreports-5.1.0.jar" 

El codebase indica la carpeta donde estaran los .jar , el code es la clase que se ejecutara cuando el Applet cargue.
Si desean ver los errores de su applet no olviden activar la consola de Java.

Eso es todo.. hasta otra

jueves, 5 de junio de 2014

Icono personalizado en Java Swing

Esto solo funciona en JFrame;
Agregar lo siguiente en su Form

@Override
    public Image getIconImage() {
        Image retValue = Toolkit.getDefaultToolkit().
                getImage(ClassLoader.getSystemResource("imagenes/icono.png"));
        return retValue;
    }

donde icono.png es tomado de un paquete de recursos que usas en tu proyecto

Luego ir a la ventana de propiedades, escoger la propiedad "IconImage", click en el boton.

Cambiar la propiedad de "Set Form's iconImage property using" a "Value from existing component"

Luego cambiar "Get value from" a "Property", presionar el boton, seleccionar IconImage en la ventana que se abrio.

Luego acepta acepta y listo.. icono cambiado de su proyecto.

Bye

Eliminar registros duplicados en una tabla mysql

La forma mas facil es crear un indice unico usando el indicador IGNORE:

ALTER IGNORE TABLE `mitabla`
ADD UNIQUE `mitabla_idx1` (`campo1`, `campo2`);

Lo probe en tablas tipo myisam e innodb en MySQL 5.1

Me ayudo mucho este link :
http://blog.openalfa.com/como-eliminar-registros-duplicados-en-una-tabla-mysql

Bye