Programando con Café

Programando con Café es el lugar de encuentro de todos sus tutoriales de programación que usted necesita en diferentes lenguajes de programación y base de datos

sábado, septiembre 20, 2008

Java - Calculo de la edad desde Java


"Si usa algún código del siguiente tutorial, den el icono de ME GUSTA del Facebook que se encuentra en su mano derecha, para que se vuelva Seguidor del Blog y también comentenos que tal les pareció el tutorial"


Acontinuacion les presento un metodo para el calculo de la edad de una persona desde java

public static int calcularEdad(String fecha) {
String datetext = fecha;
try {
Calendar birth = new GregorianCalendar();
Calendar today = new GregorianCalendar();
int age=0;
int factor=0;
Date birthDate=new SimpleDateFormat("dd-MM-yyyy").parse(datetext);
Date currentDate=new Date(); //current date
birth.setTime(birthDate);
today.setTime(currentDate);
if (today.get(Calendar.MONTH) <= birth.get(Calendar.MONTH)) {
if (today.get(Calendar.MONTH) == birth.get(Calendar.MONTH)) {
if (today.get(Calendar.DATE) > birth.get(Calendar.DATE)) {
factor = -1; //Aun no celebra su cumpleaños
}
} else {
factor = -1; //Aun no celebra su cumpleaños
}
}
age=(today.get(Calendar.YEAR)-birth.get(Calendar.YEAR))+factor;
return age;
} catch (ParseException e) {
return -1;
}

}

sábado, junio 28, 2008

Java - Expresiones regulares: Pattern Matcher

"Si usa algún código del siguiente tutorial, den el icono de ME GUSTA del Facebook que se encuentra en su mano derecha, para que se vuelva Seguidor del Blog"


En una expresión regular existe un patrón, el cual es el encargado de definir mediante una determinada notación un lenguaje. La clase Pattern define ese patrón. Y la clase Matcher verifica si se cumple un valor dicho patron especificado por la clase Pattern

static Pattern compile (String expreg)
Crea un patrón a partir de la expresión regular dada por expreg.


  • static Pattern compile(String regex, int flags)
    Crea un patrón a partir de la expresión expreg teniendo en cuenta los flags. Los flags son opciones que se incluyen para tener un trato especial cuando se este trabajando con la expresión regular.
    Ejemplo: si quiero que no me distinga entre mayúsculas y minúsculas, tendré que añadir el flag Pattern.CASE_INSENSITIVE.
  • int flags ()
    Devuelve los flags asociados a la expresión regular o patrón.
  • Matcher matcher(CharSequence input)
    Realizará el tratamiento del patrón sobre el texto que se le pase como entrada.
    static boolean matches(String regex, CharSequence input)
    La utilidad de este método es que permite la no utilización de un matcher para indicar si una expresión regular puede albergar una cadena o parte de esta.
  • String pattern()
    Devuelve la expresión regular asociada al objeto Pattern sobre el que estemos trabajando.

import java.util.regex.*;
/**
* Valida que los datos ingresados sean los correctos * Revisa los posibles errores en el ingreso de datos
* @author
hwongu
* @version 1.0.0.0
* @since 1.5
*/

public class Validador {

/**
* Metodo que verifica si el dato ingresado es un número teléfonico
* @param Valor Representa el dato a comprobar
*/

public static boolean isPhoneNumber(String Valor){
return validar("[\\d{2,3}[- ]*]*\\d{6,10}", Valor);
}

/**
* Metodo que verifica si el dato ingresado es un correo electrónico * @param Valor Representa el dato a comprobar
*/

public static boolean isEmail(String valor){
return validar("^[\\w-\\.]+\\@[\\w\\.-]+\\.[a-z]{2,4}$",valor);
}

/**
* Metodo valida el ingreso de datos
* @param Valor Representa el dato a comprobar
* @param expReg Representa la regla de formacion

* @return boolean
*/

public static boolean validar(String expReg, String valor){
Pattern patron = Pattern.compile(expReg) ;
Matcher encajador = patron.matcher(valor) ;
return encajador.matches() ;
}


martes, junio 24, 2008

Java - Centrar imagen en JLabel

"Si usa algún código del siguiente tutorial, den el icono de ME GUSTA del Facebook que se encuentra en su mano derecha, para que se vuelva Seguidor del Blog"


Cuando nosotros queremos que se centren una imagen en JLabel o que cuadre la imagen exactamente en JLabel, se deberia de implementar un metodo que me devuelva la imagen centrada exactamente al tamaño del JLabel, es por eso que nosotros en nuestra aplicación deberiamos de poner el siguiente código que devuelve un tipo de dato ImageIcon, para establecerlo en nuestro JLabel

/**
* Imagen reducida a cierto tamaño y sirve para almacenarlo en un JLabel
* @param direccionArchivo Lugar donde se encuentra la imagen que deseo redimencionar
* @return ImageIcon
*/
public ImageIcon loadImage(String direccionArchivo) {
ImageIcon tmpIconAux = new ImageIcon(direccionArchivo);
ImageIcon tmpIcon = new ImageIcon(tmpIconAux.getImage().getScaledInstance(150, -1, Image.SCALE_DEFAULT));
return tmpIcon;
}

/**
* Imagen reducida a cierto tamaño y sirve para almacenarlo en un JLabel
* @param imagen La imagen a redimencionar de forma virtual
* @return ImageIcon
*/
public ImageIcon loadImage(Image imagen) {
ImageIcon tmpIconAux = new ImageIcon(imagen);
ImageIcon tmpIcon = new ImageIcon(tmpIconAux.getImage().getScaledInstance(150, -1, Image.SCALE_DEFAULT));
return tmpIcon;
}

Java - Encriptación en Java - Algoritmo MD5


"Si usa algún código del siguiente tutorial, den el icono de ME GUSTA del Facebook que se encuentra en su mano derecha, para que se vuelva Seguidor del Blog y también comentenos que tal les pareció el tutorial"


Cuando deseamos que nuestra clave se almacene de forma encriptada en nuestra base de datos, para que nuestro DBA no sepa nuestra clave de acceso a algun sistemas, se crearon algunos algoritmos de encriptaciones como MD5,Blowfish, etc, para poder implementar dicha funcionalidad.

Por ejemplo si nosotros escribimos
clave
se deberia de almacenar algun valor como el siguiente
fbc71ce36cc20790f2eeed2197898e71

Este valor se obtuvo aplicando el algoritmo MD5.

Es por eso que Java pensando en esa necesidad creo un paquete que sirve para encriptar palabras. Esta vez utilizaremos el algoritmo MD5 de encriptación que viene por defecto en Java.



private static String md5(String clear) throws Exception {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] b = md.digest(clear.getBytes());

int size = b.length;
StringBuffer h = new StringBuffer(size);
for (int i = 0; i < size; i++) {
int u = b[i] & 255;
if (u < 16) {
h.append("0" + Integer.toHexString(u));
} else {
h.append(Integer.toHexString(u));
}
}
return h.toString();
}

jueves, mayo 22, 2008

Java - Guardar imagen en Base de Datos MySQL o SQL Server

"Si usa algún código del siguiente tutorial, den el icono de ME GUSTA del Facebook que se encuentra en su mano derecha, para que se vuelva Seguidor del Blog y también comentenos que tal les pareció el tutorial"


Muchas veces la gente se pregunta como puedo guarda una imagen en mi Base de Datos que esta en MySQL (tipo de dato BLOB) o en SQL Server (IMAGE), pues aca les presento el metodo de como gurdar una imagen en un servidor de base de datos MySQL o SQL Server

/**
* El preparedStatement tiene como parametros
* 1. Nombre del archivo
* 2. Longitud
* 3. Imagen a guardar
* @param con Conexion con la base de datos
* @param dirArchivo Ubicacion de la imagen
* @param nomArchivo Nombre del archivo
* @param sentenciaSQL Sentecia SQL
* @return Un booleano diciendo si se inserto la imagen
*/
public boolean escribeImagenEnBD(Connection con, String dirArchivo, String nomArchivo, String sentenciaSQL) {
boolean rpta=false;
try {
File fichero = new File(dirArchivo);
FileInputStream streamEntrada = new FileInputStream(fichero);
PreparedStatement pstmt = con.prepareStatement(sentenciaSQL);
int len = streamEntrada.available();
//Nombre del archivo
pstmt.setString(1, nomArchivo);
//longitud de la imagen
pstmt.setInt(2,len);
//Imagen a guardar
pstmt.setBinaryStream(3, streamEntrada, (int)fichero.length());
pstmt.executeUpdate();
pstmt.close();
streamEntrada.close();
rpta=true;
}
catch(Exception e) {
e.printStackTrace();
}
return rpta;
}

miércoles, mayo 21, 2008

Java - Convertir un String a Date

"Si usa algún código del siguiente tutorial, den el icono de ME GUSTA del Facebook que se encuentra en su mano derecha, para que se vuelva Seguidor del Blog y también comentenos que tal les pareció el tutorial"


/**
* Metodo usado para convertir una fecha en formato STRING a un tipo DATE
* @param fecha Fecha a convertir en formato DATE
*/

public java.util.Date deStringToDate(String fecha){
SimpleDateFormat formatoDelTexto = new SimpleDateFormat("dd-MM-yyyy");

Date fechaEnviar=null;
try {
fechaEnviar = formatoDelTexto.parse(fecha);
return fechaEnviar;
}
catch (ParseException ex) {
ex.printStackTrace();
return null;
}
}

Java - Redondear un número

"Si usa algún código del siguiente tutorial, den el icono de ME GUSTA del Facebook que se encuentra en su mano derecha, para que se vuelva Seguidor del Blog y también comentenos que tal les pareció el tutorial"


La semana pasada se me acerco un grupo de chicos, para que les ayudara a generar un metodo desde Java que permita redondear un numero del tipo DOUBLE en cuantos decimales yo deseara y acontinuacion les presento el metodo y espero que les sea de mucha utilidad
/**
* Metodo usado para redondear un numero a los decimales que le asigne
* @param val El numero a redondear
* @param places Cuantos decimales a redondear
* @return Retorna un DOUBLE con el valor numero redondeado
*/

public double round(double val, int places) {
long factor = (long)Math.pow(10,places);
val = val * factor;
long tmp = Math.round(val);
return (double)tmp / factor;
}