jueves, 28 de junio de 2012

5 libros gratis de java

http://www.mkyong.com/featured/top-5-free-java-ebooks/

Jquery++

Esto lo saque del siguiente post http://www.ejugo.net/?p=56.

El proyecto se encuentra aquí y pues las ventajas son bastantes a mi me gusto bastante la parte de integración jQuery.cookie.

Algunos códigos utiles para cuando trabajas rutas de imagenes

System.getProperty("com.sun.aas.instanceRoot"); //Util para cuando trabajas con glassfish y tienes imagenes como por ejemplo fotos, estas no pueden estar dentro del proyecto porque cada que subes el war, elimine los directorios, entonces lo comun es ponerlas dentro del dominio en glassfish te devuelve algo así glassfish/domains/nombreDominio esto ayuda cundo no tienes alguna parte de ambientación.


String ruta=request.getSession().getServletContext().getRealPath("/").//Struts
Este codigo te trae la ruta de donde se encuentra la aplicacion

Struts 1.x json ajax

 Este pedazo de código retorna un json.


HashMap hm = new HashMap();
hm.put("url","www.google.com");
response.addHeader("Content-Type", "application/json");//Navegadores nuevos

//Navegadores viejos o como iexplorer     response.addHeader("Content-Type", "text/html; charset=utf-8");
 try {
            response.getOutputStream().write(json.toString().getBytes("UTF-8"));
            response.getOutputStream().flush();
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
return mapping.findForward("success");
/*El return success puede ser hacia la misma pagina o tambien puede ser null*/       

Redirecciones en javascript

 
// es como un HTTP redirect, este es mejor porque no pone la pagina en la sesion
//del historial 
window.location.replace("http://google.com");
// es como dar un click en un link
window.location.href = "http://google.com";

Plugin para letras jquery

Encontre este útil plugin para transformacion de letras http://jquerybyexample.blogspot.com/2011/12/jquery-plugin-for-uppercase-lowercase.html

miércoles, 13 de junio de 2012

String a HTML en Java

Afortunadamente ya existe una librería que realiza este trabajo. StringEscapeUtils.

 http://commons.apache.org/lang/api-2.4/org/apache/commons/lang/StringEscapeUtils.html


String caracteres = "á é í ó ú ü ñ ½" ; 
 
  System.out.println("Texto Original");
  System.out.println(caracteres);

   System.out.println("Escape en HTML");
   System.out.println(StringEscapeUtils.escapeHtml(caracteres));

   System.out.println("Escape en Javascript");
   System.out.println(StringEscapeUtils.escapeJavaScript(caracteres));

   System.out.println("Escape en xml");
   System.out.println(StringEscapeUtils.escapeXml(caracteres));


El resultado de ejecutar este código es:
     Texto Original
     á é í ó ú ü ñ ½


Escape en HTML
     á é í ó ú ü ñ ½

     Escape en Javascript
     u00E1 u00E9 u00ED u00F3 u00FA u00FC u00F1 u00BD

     Escape en xml
     á é í ó ú ü ñ ½

Consulta sql a clase o entidad en Hibernate

Algunas veces se tiene una consulta SQL y digamos que se quiere mapear directo a 
la clase. 
 
sess.createSQLQuery("SELECT * FROM DOGS").addEntity(DOG.class);
sess.createSQLQuery("SELECT ID, PEC_NAME FROM DOGS").addEntity(DOG.class);

martes, 12 de junio de 2012

Fecha mayor, fecha menor o igual en Mysql

No es la mejor solución pero si llevas algo de prisa te puede servir.

/*Regresa una fecha igual*/
select * from tabla_fechas
where DATEDIFF(fech_hra_operacion,STR_TO_DATE('19/05/2010','%d/%m/%Y'))=0

cambiar el igual por mayor o menor según se requiera

jueves, 7 de junio de 2012

Formateo de fechas en java

Ya hay muchos post sobre esto pero bueno, aquí un ejemplo.
 
 
SimpleDateFormat formateador = new SimpleDateFormat("EEEEEEEEE dd 'de' MMMMM 'de' yyyy",new Locale("es"));
System.out.println(formateador.format(new Date()));
 
Links consultados.
 
http://www.localeplanet.com/java/es-MX/index.html 

http://chuwiki.chuidiang.org/index.php?title=SimpleDateFormat

Enviar correo(e mail) con imagen en línea o embebida con spring JAVA

Pues a pesar, de que en el proyecto que trabajo ya existe un framework con clases que envían correos, no existe un método que me permita enviar imagenes en línea, así que pense en usar javamail, pero aprovechando que uso spring encontre una forma mucho más fácil. En este link http://static.springsource.org/spring/docs/1.2.x/reference/mail.html dan una explicación. Hice una clase muy generica que se podría mejorar bastante pero por el momento puede servir de base para algunos proyectos. De hecho algunos de mis compañeros  usarán mi clase como base y le agregarán bastantes mejoras gg.

Si usas Spring configura tu config.properties.

mail.smtpHost=127.0.0.1
mail.smtpPort=25
mail.smtpUsername=userSMT9
mail.smtpPassword=12345
mail.charSet=ISO-8859-1

Opcionalmente si quieres evitarte la carga del properties puedes configurar el application-context.xml

    <bean id="mailUtil" class=" com.util.MailUtil">
        <property
            name="useSSL"
            value="${mail.useSSL}" />
        <property
            name="smtpHost"
            value="${mail.smtpHost}" />
        <property
            name="smtpPort"
            value="${mail.smtpPort}" />
        <property
            name="smtpUsername"
            value="${mail.smtpUsername}" />
        <property
            name="smtpPassword"
            value="${mail.smtpPassword}" />
    </bean>

//Esta de abajo es la clase
package com.util;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;




@SuppressWarnings("unchecked")
public class MailUtil {
   
    private boolean useSSL = false;
    private String smtpHost;
    private int smtpPort = 25;
    private String smtpUsername;
    private String smtpPassword;
    private String charSet = "ISO-8859-1";
   
    public boolean isUseSSL() {
        return useSSL;
    }


    public void setUseSSL(boolean useSSL) {
        this.useSSL = useSSL;
    }


    public String getSmtpHost() {
        return smtpHost;
    }


    public void setSmtpHost(String smtpHost) {
        this.smtpHost = smtpHost;
    }


    public int getSmtpPort() {
        return smtpPort;
    }


    public void setSmtpPort(int smtpPort) {
        this.smtpPort = smtpPort;
    }


    public String getSmtpUsername() {
        return smtpUsername;
    }


    public void setSmtpUsername(String smtpUsername) {
        this.smtpUsername = smtpUsername;
    }


    public String getSmtpPassword() {
        return smtpPassword;
    }


    public void setSmtpPassword(String smtpPassword) {
        this.smtpPassword = smtpPassword;
    }


    public String getCharSet() {
        return charSet;
    }


    public void setCharSet(String charSet) {
        this.charSet = charSet;
    }
   
   
    public void sendMail(String from,String to, String html,String subject,HashMap mapaImagenes){
         JavaMailSenderImpl sender = new JavaMailSenderImpl();
         sender.setHost(this.smtpHost);
         sender.setPort(this.smtpPort);
         sender.setUsername(this.smtpUsername);
         sender.setPassword(this.smtpPassword);
         MimeMessage message = sender.createMimeMessage();
         try {
             MimeMessageHelper helper = new MimeMessageHelper(message, true);
             helper.setFrom(from);
             helper.setTo(to);
             helper.setSubject(subject);
             helper.setText(html,true);
             Iterator it = mapaImagenes.entrySet().iterator();
             while (it.hasNext()) {
                  Map.Entry e = (Map.Entry)it.next();
                  Resource resource=new ClassPathResource(e.getValue().toString());
                  helper.addInline(e.getKey().toString(), resource);
             }
           
           
             sender.send(message);
        } catch (MessagingException e) {
            // TODO Auto-generated catch block agregar log
            e.printStackTrace();
        }
    };
}

La forma de uso sería así.
//Forma de uso
 HashMap mapaIdentificador = new HashMap();
        mapaIdentificador.put("identifier1234","resources/mail/header.jpg");// la imagen esta en el package resources
        MailUtil mailUtil= new MailUtil();
  mailUtil.sendMail("administrador@lafabricadesoftware.com","usuario@lafabricadesoftware.com",
 "<html><body><img src='cid:identifier1234'></body></html>"
, "hola Mundo", mapaIdentificador);

martes, 5 de junio de 2012

Eliminado lógico en hibernate

Entendemos por eliminado lógico cuando de una tabla solo se cambia el status del registro, en el proyecto que estoy trabajando se mapean las tablas en xml no con anotaciones.

 < class name="mx.modelo.persona" table="persona" where="eliminado <> 1" >

Ojo si te marca un error en el xml hay que transformar el <>
a & lt;& gt; pero sin espacios.
de esta forma discriminará los registros con el status eliminado.

Si usas anotaciones tal vez este post te sea útil http://featurenotbug.com/2009/07/soft-deletes-using-hibernate-annotations/

sábado, 2 de junio de 2012

Evitar que hibernate mapee un atributo de una clase

Pues a veces pasa que tienes un atributo que no quieres que hibernate te mapee, para esto puedes usar la anotacion
@Transient

Inventos locos, Jardín en el metro del DF

La verdad es que con este invento pareciera que fume algo extraño, pero me latería que hubiera un jardín dentro del metro, un microjardin con pequeños árboles un estilo oriental aca medio locochon, con una fuente, creo que ayudaría al desestres de los usuarios.

Inventos locos, banda que cambia las estaciones, en el metrobus

Pues esta idea me surgió ya que antes viajaba una ruta desde el sur hasta al centro de la ciudad, entonces me di cuenta que algunas veces llegaban a subirse gente extranjera por lo que a la hora de ver las estaciones del metrobus se confundían, esto es más que nada debido a que el metrobus da la vuelta y las estaciones no se ven en sentido inverso, de forma que los carteles de las estaciones del metrobus deberían de rotar, pues a mi se me ocurrio que se podrían poner un par de palos como de plastico y que el metrobus al dar vuelta tuviera un mecanismo o un boton que cambie o inverta los carteles de las estaciones, serían como dos microrodillos de tortillería que moverían los letreros de las estaciones.

Inventos locos, playera de facebook

Y que tal una playera, con leds que se pueda conectar por Bluetooth o Wifi a tu cel .
Y que encienda cada las luces cada que te llegue una notificación o un like.

Inventos locos, chikle de cerveza o de tequila

Si combinamos un chikle de cerveza o de tequila estaria genial, uno que te alegrar un poquitin tu vida, para esos días de éstres aunque no estaría nada mal uno de pulque(me encanta), y estaría bien tener igual chikles de broma que te dejen un aliento a dragon, estaría super divertido

Nueva Sección inventos locos


Pues bueno, abró esta nueva sección donde puedo poner todas las ideas loquitas que se me vienen a la mente, alguna vez hicieron un concurso de inventos en mi clase y pues que creen, que ganó mi invento, un poco exotico, que era un escritorio de vidrio transparente, adentro del escritorio tenia peces, y el escritorio contaba con una parrilla por eso de que si se te antojaba un pescadito jajajaja, espero que les guste.

 

De Tareas y Ventas

Esta semana me dijeron 2 frases.

La primera dice más o menos así.

Tarea ordenada no verificada se la lleva la chingada.

Ventas:Trata a un cliente como si tu fueras el cliente.