sábado, 30 de julio de 2016

Uso de ficheros Properties en Java

Hola amig@s en esta ocasión les mostrare como podemos hacer uso de un archivo de propiedades en Java Properties.java
package properties;

/**
 *
 * @author ElRinconPrograues
 */
public class Properties {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Propiedades p = new Propiedades();
        if (p.existe("info")) {
            p.getProperties("info");
            System.out.println(p.toString());

        } else {
            p.crearConfiguracionSistema();
            p.getProperties("info");
            System.out.println(p.toString());
        }
    }

}
Propiedades.java
package properties;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Properties;

/**
 *
 * @author ElRinconPrograues
 */
public class Propiedades {

    private static String OS;
    private static String ARCH;
    private static String VERSION;
    private static String USER;
    private static String RUN_DIR;
    private static String USER_HOME;
    private Properties infoSistema;

    public Propiedades() {
        this.infoSistema = new Properties();
    }

    /**
     * *
     * Este metodo obtiene el contenido del archivo de propiedades
     *
     */
    public Properties getProperties(String name) {
        InputStream entrada = null;
        try {
            entrada = new FileInputStream(name + ".properties");
            //se crea una instancia a la clase Properties
            Properties propiedades = new Properties();
            //se leen el archivo .properties
            propiedades.load(entrada);
            //si el archivo de propiedades NO esta vacio retornan las propiedes leidas
            if (!propiedades.isEmpty()) {
                return propiedades;
            } else {//sino  retornara NULL
                return null;
            }
        } catch (IOException ex) {
            return null;
        } finally {
            if (entrada != null) {
                try {
                    entrada.close();
                } catch (IOException e) {
                    System.out.println(e.getMessage());
                }
            }
        }
    }

    /**
     * *
     * Este metodo guarda el archivo de propiedades
     *
     */
    public void saveProperties(String name, Properties conf) {
        OutputStream salida = null;
        try {
            salida = new FileOutputStream(name + ".properties");
            conf.store(salida, null);
        } catch (IOException io) {
            System.out.println("error al guardar el archivo properies");
        }
    }

    /**
     * *
     * Comprueba si el fichero existe
     *
     */
    public boolean existe(String name) {
        File fichero = new File(name + ".properties");
        return fichero.exists();
    }

    /**
     * *
     * borramos el fichero de propiedades
     *
     */
    public boolean borrar(String name) {
        File fichero = new File(name + ".properties");
        fichero.delete();
        return fichero.exists();
    }

    /**
     * *
     * Obtenemos los datos de nuestro sistema
     *
     */
    private static void getOS() {
        OS = System.getProperty("os.name");
        ARCH = System.getProperty("os.arch");
        VERSION = System.getProperty("os.version");
        USER = System.getProperty("user.name");
        RUN_DIR = System.getProperty("user.dir");
        USER_HOME = System.getProperty("user.home");
    }

    /**
     * *
     * crea el archivo de propiedades
     *
     */
    public void crearConfiguracionSistema() {
        getOS();
        infoSistema.put("runDir", RUN_DIR);
        infoSistema.put("user_home", USER_HOME);
        infoSistema.put("user", USER);
        infoSistema.put("arch", ARCH);
        infoSistema.put("version", VERSION);
        infoSistema.put("os", OS);
        saveProperties(OS.trim(), infoSistema);
    }

    @Override
    public String toString() {
        return "Propiedades{" + "infoSistema=" + infoSistema + '}';
    }

    /**
     * Agrega una nueva Propiedad addProperties(llave,valor)
     */
    public void addProperties(String key, String value) {
        infoSistema.put(key, value);
    }

    /**
     * Elimina una Propiedad
     */
    public void removeProperties(String key) {
        infoSistema.remove(key);
    }

    /**
     * remplaza el valor de una Propiedad
     */
    public void replaceProperties(String key, String value) {
        infoSistema.replace(key, value);
    }
}

Descargar el código: Dropbox Mega

miércoles, 9 de diciembre de 2015

Crear archivos Zip Java

Hola amig@s ahora les mostrare como crear archivos zip desde java, estos archivos podrán estar con y sin contraseña así como también se podrán comprimir capetas.

Codigo:
package elrinconprograues.zip;

import java.io.File;
import java.util.ArrayList;
import net.lingala.zip4j.core.ZipFile;
import net.lingala.zip4j.exception.ZipException;
import net.lingala.zip4j.model.UnzipParameters;
import net.lingala.zip4j.model.ZipParameters;
import net.lingala.zip4j.util.Zip4jConstants;

/**
 *
 * @author Alex Callejas
 */
public class Zip {
    
    
    public void encryptedZipFile(String pass, String ruta, String archivo) {
        try {           
            ZipFile zipFile = new ZipFile(ruta +".zip");
            ArrayList filesToAdd = new ArrayList();
            filesToAdd.add(new File(archivo));
            ZipParameters parameters = new ZipParameters();
            parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
            parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
            parameters.setEncryptFiles(true);
            parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_AES);
            parameters.setAesKeyStrength(Zip4jConstants.AES_STRENGTH_256);
            parameters.setPassword(pass);
            zipFile.addFiles(filesToAdd, parameters);
        } catch (ZipException e) {
            System.out.println(e.getMessage());
        }
    }
    
    public void zipFile(String ruta, String archivo) {
        try {           
            ZipFile zipFile = new ZipFile(ruta +".zip");
            ArrayList filesToAdd = new ArrayList();
            filesToAdd.add(new File(archivo));
            ZipParameters parameters = new ZipParameters();
            parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
            parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
            parameters.setEncryptFiles(false);
            zipFile.addFiles(filesToAdd, parameters);
        } catch (ZipException e) {
            System.out.println(e.getMessage());
        }
    }
    
    public void zipFolder(String ruta,String folder){
        try {
            ZipFile zipFile=new ZipFile(ruta +".zip");
            ZipParameters parameters = new ZipParameters();
            parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
            parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
            parameters.setEncryptFiles(false);
            zipFile.addFolder(folder, parameters);
        } catch (ZipException e) {
            System.out.println(e.getMessage());
        }
    }
    
    public void zipFolderEncrypted(String ruta,String folder,String pass){
        try {
            ZipFile zipFile=new ZipFile(ruta +".zip");
            ZipParameters parameters = new ZipParameters();
            parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
            parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
            parameters.setEncryptFiles(true);
            parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_AES);
            parameters.setAesKeyStrength(Zip4jConstants.AES_STRENGTH_256);
            parameters.setPassword(pass);
            zipFile.addFolder(folder, parameters);
        } catch (ZipException e) {
            System.out.println(e.getMessage());
        }
    }
    
    public void unzip(String zip,String ruta){
        try {
            ZipFile zipFile=new ZipFile(new File(zip));
            zipFile.extractAll(ruta);
        } catch (ZipException e) {
            System.out.println(e.getMessage());
        }
    }
    
    public void unzip(String zip,String ruta,String pass){
        try {
            ZipFile zipFile=new ZipFile(new File(zip));
            UnzipParameters unzipParameters= new UnzipParameters();
            zipFile.setPassword(pass);
            zipFile.extractAll(ruta);
        } catch (ZipException e) {
            System.out.println(e.getMessage());
        }
    }
    
    public static void main(String[] args) {
        Zip zip=new Zip(); 
        //zip.zipFile("c:\\prueba\\pruebaZip", "c:\\prueba\\fichero.txt");
        //zip.encryptedZipFile("password", "c:\\prueba\\pruebaZipPass", "c:\\prueba\\fichero.txt");
        //zip.zipFolderEncrypted("c:\\prueba\\zipFolderPass", "c:\\prueba\\pruebaZip\\","password");
        zip.unzip("c:\\prueba\\zipFolderPass.zip", "c:\\prueba\\pruebaZip\\cc\\","password");
        //
    }
    
} 
 
 
 
Descarga código + librerías: MEGA

Enviar correos desde java

Hola amig@s esta vez les mostrare como enviar correos desde nuestra aplicación  java les enseñare como enviar correos unicamente con texto y tambien con archivos adjuntos.

Imagen:



Código:

package elrinconprograues.mail;

import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

/**
 *
 * @author Alex Callejas
 */
public class SendMail {

    public static final String Username = "example@gmail.com";
    public static final String PassWord = "password";
    static Session session;
    static Properties props;

    public SendMail() {        
    }

    public Session sessionMail() {
        props = new Properties();
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.host", "smtp.gmail.com");
        props.put("mail.smtp.port", "587");
        session = Session.getInstance(props,
                new javax.mail.Authenticator() {
                    @Override
                    protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication(Username, PassWord);
                    }
                });
        return session;
    }
    
    public void send(String to,String msg){
        try {
            Message message = new MimeMessage(sessionMail());
            message.setFrom(new InternetAddress(Username));
            message.setRecipients(Message.RecipientType.TO,
                    InternetAddress.parse(to));
            message.setSubject("Subject");
            message.setText(msg);
            Transport.send(message);   
        } catch (MessagingException e) {
            System.out.println(e.getMessage());
        }
    }
    
    public void send(String to,String msg,String srcAttached){
        try {
            sessionMail();
            BodyPart attached = new MimeBodyPart();
            BodyPart texto = new MimeBodyPart();
            texto.setText(msg);
            MimeMultipart multiParte = new MimeMultipart();
            attached.setDataHandler(
                    new DataHandler(new FileDataSource(srcAttached)));
            attached.setFileName("File Name");
            multiParte.addBodyPart(texto);
            multiParte.addBodyPart(attached);
            Message message = new MimeMessage(sessionMail());
            message.setFrom(new InternetAddress(Username));
            message.setRecipients(Message.RecipientType.TO,
                    InternetAddress.parse(to));
            message.setSubject("Subject");
            message.setContent(multiParte);
            message.setText(msg);
            message.setContent(multiParte);
            Transport.send(message);            
        } catch (MessagingException ex) {
            System.out.println(ex.getMessage());
        }        
    }
    
    public static void main(String[] args) {
        SendMail sendMail=new SendMail();
        sendMail.send("example@mail.com", "Esta es una prueba de envio de correos con java");
    }
    
}

Descarga: Mega

domingo, 6 de diciembre de 2015

Excepciones propias en Java

Hola amig@s esta vez les mostrare como crear nuestras propias excepciones en java para hacer validaciones en nuestras aplicaciones dado que el lenguaje Java proporciona las clases que manejan casi cualquier tipo de excepción. Sin embargo, podemos imaginar situaciones en la que producen excepciones que no están dentro del lenguaje Java. Para poder crear nuestras propias excepciones debemos extender una nuestra clase con Exception de la siguiente manera:

<pre class="brush:js"><br />class MiExcepcion extends Exception {
public MiExcepcion(String msg){
super(msg);
}
}
</pre>

La definición de la clase es muy simple. Se le pasa un string msg, que contiene un mensaje, en el único parámetro que tiene el constructor de la clase derivada y éste se lo pasa a la clase base mediante super.

Ejemplo:

<pre class="brush:js"><br />class PruebaMiExcepcion{
//Clase interna
static class MiExcepcion extends Exception {
public MiExcepcion(String msg){
super(msg);
}
}

public static void main(String[] args) {
try{
vacio("");
}catch (MiExcepcion mi) {
System.out.println(mi.getMessage());
}
}

public static void vacio(String str) throws MiExcepcion{
if (str.equals("")) {
throw new MiExcepcion("El campo no debe estar vacio");
}
}
}
</pre>