viernes, 16 de marzo de 2018

Crear PDF con Ireport

Se me presento la oportunidad de crear un reporte en PDF desde JAVA SWING y posteriormente abrir el PDF creado.

Para implementarlo use los siguientes recursos:

  1. Ireport 4.7: Para crear el reporte y compilar a .jasper, en la propiedades del reporte se debe indicar lenguaje java. (Por defecto esta seleccionado Groovy)
  2. Las librerias utilizadas son: 
    • commons-beanutils-1.8.2.jar
    • commons-collections-3.2.1.jar
    • commons-digester-2.1.jar
    • commons-javaflow-20060411.jar
    • commons-logging-1.1.jar
    • iText-2.1.7.jar
    • jasperreports-4.7.1.jar
    • jasperreports-fonts-4.5.0.jar
    • jfreechart-1.0.17.jar
    • jxl-2.6.10.jar
    • png-encoder-1.5.jar
    • poi-3.7-20101029.jar
  3. Creamos una clase con el metodo para crear los reportes PDF:
import java.util.Map;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.util.JRLoader;

/**
 *
 * @author lcampos
 */
public class UtilJasper {

    final public static void repPdf(
            Map parametro,
            String _rutaJasper,
            String _rutaPdf
    ) {
        JasperPrint jasperPrint = null;
        JasperReport masterReport = null;
        try {
            masterReport = (JasperReport) JRLoader.loadObject(_rutaJasper);
            jasperPrint = JasperFillManager.fillReport(masterReport, parametro, Mdi.cn);
            JasperExportManager.exportReportToPdfFile(jasperPrint, _rutaPdf);
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Error al Generar Reporte..");
        }
    }
}

Observacion: El parametro Mdi.cn, hace referencia a la conexion a la base de datos via JDBC.

El método se llama de la siguiente manera:

 //CREAR PDF
                        Map _parm = new HashMap();
                        _parm.put("_parm1", parametro1);
                        _parm.put("_parmN", parametroN);      
                        UtilJasper.repPdf(_parm, _ruta, _urlPdf);
Donde: 

_parm: Es el conjunto de parametros que estan definidos es nuestro reporte.
_ruta: Es el directorio en donde se encuentra el archivo .jasper (Fuera del SRC)
_urlPdf: Es el directorio en donde se guarda el PDF creado

Para abrir el PDF creado usaremos el siguiente codigo:

//ABRIR PDF
 try {
       File path = new File(_urlPdf);
       Desktop.getDesktop().open(path);
 } catch (IOException ex) {
       ex.printStackTrace();
 }

jueves, 8 de marzo de 2018

Backup Automatico Base de Datos MySQL

Para asegurar la disponibilidad de los datos de nuestros clientes, es necesario tomar diferentes medidas de seguridad, una de estas medidas es realizar copias de seguridad de la base de datos.

En esta oportunidad les enseñare la forma de generar los BACKUPS de una base de datos MYSQL en un Sistema Operativo Windows.

PRIMERO: Debemos construir un archivo de texto plano con extension *.BAT, en el cual escribiremos las siguientes sentencias:

@echo off
title Creando BackUp base de datos MySQL
color 0a
set FECHA=%date%
set FECHA=%FECHA:/=%
set FECHA=%FECHA: =%
set FECHA=%FECHA::=%
set FECHA=%FECHA:,=%
set hora= %time%
set hora=%hora::=%
set hora=%hora: =%
set hora=%hora:.=%
set us=USR_BASEDEDATOS
set pa=PASWD_BASEDEDATOS
set db=NOMBRE_BASEDEDATOS
"C:/Program Files/MySQL\MySQL Server 5.7/bin/mysqldump.exe" --host=192.168.10.100 --port=3306 --user=%us% --password=%pa%  %db% > D:/SQL/%db%_BK_%FECHA%%hora%.sql

Los parametros sombreados con amarillo deben ser reemplazados de acuerdo a su configuracion de su base de datos y al directorio en donde quieren guardar las copias de seguridad.

SEGUNDO: En el programador de tareas de windows, crearemos una tarea simple, indicandole los parametros de acuerdo a las siguientes imagenes.




Tarea programada.





martes, 6 de marzo de 2018

Creando Código de Barras


Mediante la Resolución Superintendencia 185-2015, a partir del 01/01/2018, los emisores de comprobantes electronicos, estan obligados a colocar el un codigo de barras en la parte inferior de la representacion impresa del comprobante electronico.

Para los que usan Tecnologia Java como herramienta de desarrollo les entrego un pequeño aporte para poder generar el codigo de barras QR y PDF417.

Codigo Fuente:

import com.google.zxing.BarcodeFormat;
import com.google.zxing.Writer;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.pdf417.PDF417Writer;
import com.google.zxing.qrcode.QRCodeWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 *
 * @author Lusmilo Campos
 */

public class CodigoFS {

    public static void main(String[] args) throws WriterException, IOException {
        BitMatrix bitMatrix;
        Writer writer = new QRCodeWriter();
     
        bitMatrix = writer.encode("www.google.com", BarcodeFormat.QR_CODE, 200, 200);
        MatrixToImageWriter.writeToStream(bitMatrix, "png", new FileOutputStream(new File("d:/codigoQR.png")));
        System.out.println("Codigo Generado:");
     
     
     
        //EL NOMBRE DEL PNG DEBE SER EL MISMO DE LA FACTURA
        writer = new PDF417Writer();
        bitMatrix = writer.encode("www.titorlab.com", BarcodeFormat.PDF_417, 200, 200);
        MatrixToImageWriter.writeToStream(bitMatrix, "png", new FileOutputStream(new File("d:/codigoPDF417.png")));
        System.out.println("Codigo Generado:");
    }

}


Las librerias utilizadas son:

zxing-core-3.1.0.jar
zxing-core-1.7.jar
zxing-j2se-1.7.jar

Resultado:


Codigo de Barra PDF417

Codigo de Barra QR




domingo, 9 de abril de 2017

Seguridad Informática: Empresarial, Profesional y Personal

La seguridad informática de acuerdo a definicion.de, es una disciplina que se encarga de proteger la integridad y la privacidad de la información almacenada en un sistema informático.


Alejándome de las definiciones y frases técnicas, diré que todas las empresas, profesionales y personas en general, usan diferentes tecnologías informáticas como son: El hardware (Computadoras personales, servidores, dispositivos móviles, etc.), el software (Sistemas operativos, programas telemáticos, aplicaciones, etc.) y servicios informáticos (Correo corporativo, computación en la nube, etc.) de numerosas compañías transnacionales. Todas estas tecnologías o la mayoría han sido desarrolladas con la finalidad de mejorar nuestra calidad de vida, como mantenernos más comunicados, compartir información, trabajo colaborativo con nuestros familiares, amigos y compañeros sin importar su ubicación geográfica. De la misma forma que trae múltiples beneficios, la tecnología informática, puede traernos verdaderos dolores de cabeza: Cuando nuestros datos privados se ven expuestos al público por terceros; cuando los dispositivos se averían, son perdidos o robados; o cuando de alguna forma de borra o elimina información importante. Estos dolores de cabeza pueden traducirse en:
  • Pérdidas de tiempo: Cuando se tiene que rehacer los trabajos y estos pueden tardar horas, días, meses en rehacerlos.
  • Pérdidas económicas: Cuando a raíz de la pérdida de información no se puede cumplir con compromisos, que desencadenan en multas,  penalidades, etc.
  • Pérdida de credibilidad e imagen personal: Cuando la información confidencial se ve expuesta a personas que nunca debieron tener acceso a nuestros datos o información, cuando a raíz de la pérdida de nuestros correos no podemos hacer trazabilidad de compromisos con nuestros clientes y proveedores, etc.
  • Algunas de las medidas a tener en cuenta para prevenir los dolores de cabeza mencionados anteriormente son:
Algunas de las medidas a tener en cuenta para prevenir los dolores de cabeza mencionados anteriormente son:
  1. Las contraseñas deben cambiarse periódicamente; las contraseñas deber ser frases y utilizar Mayúsculas, minúsculas, números y caracteres especiales (Ejemplo de contraseña: Lo$pollitosdicenp1op1o) y sobre todo bajo ninguna circunstancia se debe compartir contraseñas personales.
  2. Las copias de seguridad deben guardarse en dispositivos externos al que usamos siempre, en cuentas de almacenamiento en la nube (ejemplo: Dropbox, Google drive, Onedrive, sistemas de control de versiones, etc.) y en instalaciones geográficamente diferentes. Las copias deben sacarse con regularidad pensando en cuanto tiempo y dinero estoy dispuesto invertir en caso de pérdida de la información.
  3. Usar clientes de correo, para evitar la perdida de los correos en caso de averías en el servidor de correos, perdidas de linea de Internet o problemas al renovar el alquiler de dicho servicio. Algunos clientes de correo que puede utilizar son Microsoft outlook, Mozilla thunderbird, etc.
Existen muchas otras medidas para lograr proteger la integridad y la privacidad de la información, si toma conciencia de la importancia de tomar las medidas antes mencionadas seguramente evitará los dolores de cabeza, podrá dormir tranquilo(a) y sobre todo padrá pasar más tiempo con su familia. Éxitos!!!.