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>
 

Clase MySQLConnection java

Hola amig@s en esta ocasión les traigo algo diferente a lo habitual se trata de una clase de conexión para  MySQL  con la cual se pretende simplificar este proceso que suele ser algo tedioso, esta clase cuenta ademas de métodos para realizar las operaciones de insertar, modificar, eliminar y consultar a MySQL desde una aplicación java:

Código:

import java.sql.Statement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class MySQLConnection { String userName = "root"; String password = "root"; String url = "jdbc:mysql://localhost/"; String urlDriver = "com.mysql.jdbc.Driver"; String database = "database"; Connection con; Statement st; ResultSet rs; /** * constructor vacio * @usage MySQLConnection connect = new MySQLConnection(); */ public MySQLConnection() { } /** * @return retorna la conexion a la base de datos * @use Statement st = connect.OpenConnection().createStatement(); */ public Connection OpenConnection() { con = null; try { Class.forName(urlDriver).newInstance(); con = DriverManager.getConnection(url + database, userName, password); System.out.println("connect"); } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | SQLException e) { System.out.println(e.getMessage()); } return con; } /** * * @use connect.CloseConnection(connect.con) */ public void CloseConnection() { try { con.close(); System.out.println("close connection"); } catch (SQLException e) { System.out.println(e.getMessage()); } } /** * * @param con cierra la conexion a la base de datos * @use connect.CloseConnection(connect.con) */ public void CloseConnection(Connection con) { try { con.close(); System.out.println("close connection"); } catch (SQLException e) { System.out.println(e.getMessage()); } } /** * @param sql query para un select * @return rs retorno de la consulta efectuada caso contrario retorna null * @use */ public ResultSet executeQuery(String sql) { try { st = OpenConnection().createStatement(); rs = st.executeQuery(sql); return rs; } catch (Exception e) { System.out.println(e.getMessage()); } return null; } /** * * @param sql query para un select * @return rs retorno de la consulta efectuada caso contrario retorna null */ public boolean executeUpdate(String sql) { try { st = OpenConnection().createStatement(); rs = st.executeQuery(sql); return true; } catch (Exception e) { System.out.println(e.getMessage()); } return false; } /** * * @param pstm query para un select * @return rs retorno de la consulta efectuada caso contrario retorna null */ public ResultSet PreparedStatementExecuteQuery(PreparedStatement pstm) { try { rs = pstm.executeQuery(); return rs; } catch (Exception e) { System.out.println(e.getMessage()); } return null; } /** * * @param pstm query para un select * @return rs retorno de la consulta efectuada caso contrario retorna null */ public boolean PreparedStatementExecuteUpdate(PreparedStatement pstm) { try { pstm.executeUpdate(); return true; } catch (Exception e) { System.out.println(e.getMessage()); } return false; } /** * * @param sql query para crear un PreparedStatement para agregar los datos * @return rs retorno de la consulta efectuada caso contrario retorna null */ public PreparedStatement create(String sql){ try { PreparedStatement pstm=OpenConnection().prepareStatement(sql); return pstm; } catch (SQLException ex) { System.out.println(e.getMessage()); } return null; } }
Ejemplo de uso: Este es un pequeño ejemplo de un login utilizando dicha clase.

import java.io.UnsupportedEncodingException; import java.security.NoSuchAlgorithmException; import java.sql.PreparedStatement; import java.sql.Statement; import java.sql.ResultSet; import java.sql.SQLException; public class Operations { Statement st; ResultSet rs; MySQLConnection mysqlconnect; PreparedStatement pstm; public Operations() { mysqlconnect = new MySQLConnection(); } public void insertUser(String user, String password, int accessLevel) { try { pstm = mysqlconnect.create("insert into usuario values(?,?,?)"); pstm.setString(1, user); pstm.setString(2,password); pstm.setInt(3, accessLevel); mysqlconnect.PreparedStatementExecuteUpdate(pstm); mysqlconnect.CloseConnection(mysqlconnect.con); } catch (SQLException | NoSuchAlgorithmException | UnsupportedEncodingException ex) { System.out.println("Error to insert: " + ex.getMessage()); } } public String getPassword(String user) { String pass = null; try { pstm = mysqlconnect.create("select password from usuario where user=?"); pstm.setString(1, user); rs = mysqlconnect.PreparedStatementExecuteQuery(pstm); rs.next(); pass = rs.getString(1); rs.close(); mysqlconnect.CloseConnection(); } catch (SQLException ex) { System.out.println("user not found: "+ex.getMessage()); } return pass; } }