Fetishcode…Thinking in objects

Java Conversion Utils

Publicado en Java by fetishcode en Junio 21st, 2008

Java – comparing strings

Use == for primitive data types like int
If (mystring == null)
Use the equals() method to compare objects
Use .equals for strings : if (a.equals(“cat”))

Java - Converting int to string

String myString = Integer.toString(my int value) or String str = “” + i

Java - Converting String to int

int i = Integer.parseInt(str);   or int i = Integer.valueOf(str).intValue();

double to String:

 String str = Double.toString(i);

long to String:

String str = Long.toString(l);

float to String:

String str = Float.toString(f);

String to double:

double d = Double.valueOf(str).doubleValue();

String to long:

long l = Long.valueOf(str).longValue(); or long l = Long.parseLong(str);

String to float:

float f = Float.valueOf(str).floatValue();

decimal to binary:

  int i = 42;
 String binstr = Integer.toBinaryString(i);

decimal to hexadecimal:

   int i = 42;
   String hexstr = Integer.toString(i, 16);
   or
   String hexstr = Integer.toHexString(i);
   or (with leading zeroes and uppercase)
   public class Hex {
     public static void main(String args[]){
       int i = 42;
       System.out.print
         (Integer.toHexString( 0×10000 | i).substring(1).toUpperCase());
      }
     }

hexadecimal to integer:

int i = Integer.valueOf(”B8DA3″, 16).intValue(); or int i = Integer.parseInt(”B8DA3″, 16); 

ASCII code to String

int i = 64;
String aChar = new Character((char)i).toString();

integer to ASCII code (byte)

char c = ‘A’;
int i = (int) c; // i will have the value 65 decimal

integer to boolean

 b = (i != 0);

boolean to integer

i = (b)?1:0;
Etiqueta con:,

Combos dependientes en jsp con AJAX.

Publicado en Java by fetishcode en Abril 26th, 2008

Para ello lo que haremos será crear los combos dependientes en jsp separados,llamarles via ajax y el resultado incrustarlo en el jsp que contiene el formulario con el combo principal.
A continuación un pequeño ejemplo:

Jsp Principal:


<form name="formulario" action="action.jsp" method="POST" id="formulario">
   <div>
      <label for="comboprincipal"> comboPrincipal </label>
      <select name=" comboprincipal " id=" comboprincipal " onchange="javascript:cargarCombo(' combodependiente.jsp', 'comboprincipal', div_combodependiente)">
            <option value="">Selecciona</option>
             < %//cogemos valores de la bbdd%>
       </select>
     </div>
     <div id="div_combodependiente">
         <label for="combodependiente">comboDependiente</label>
         <select name="combodependiente"  id="combodependiente" ></select>
     </div>
 </form>

A continuación el javascript que hace la peticion AJAX del jsp combodependiente. Este método recibe tres parámetros:el jsp que tiene que llamar, el campo que ha recogido del combodeprincipal, del cual depende y el id del componente html donde volcara el resultado de la petición Ajax.


/*PETICIONES AJAX PARA COMBOS ANIDADOS*/
var peticion = false;
var  testPasado = false;
try {
  peticion = new XMLHttpRequest();
  } catch (trymicrosoft) {
  try {
  peticion = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (othermicrosoft) {
  try {
  peticion = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (failed) {
  peticion = false;
  }
  }
}
if (!peticion)
alert("ERROR AL INICIALIZAR!");

function cargarCombo (url, comboAnterior, element_id) {
    //Obtenemos el contenido del div
    //donde se cargaran los resultados
    var element =  document.getElementById(element_id);
    //Obtenemos el valor seleccionado del combo anterior
    var valordepende = document.getElementById(comboAnterior)
    var x = valordepende.value
    //construimos la url definitiva
    //pasando como parametro el valor seleccionado
    var fragment_url = url+'?Id='+x;
    element.innerHTML = '<img src="Imagenes/loading.gif" />';
    //abrimos la url
    peticion.open("GET", fragment_url);
    peticion.onreadystatechange = function() {
        if (peticion.readyState == 4) {
	//escribimos la respuesta
	element.innerHTML = peticion.responseText;
        }
    }
   peticion.send(null);
}

Y por último el combodependiente.jsp


< %
    out.println("<label for='combodependiente'> comboDependiente ");
    out.println("<select name='combodependiente'  id='combodependiente' >");
    out.println("<option value=''>Selecciona</option>");
//recogemos el parámetro
if(request.getParameter("Id")!=null){ //cogemos valores de la bbdd
}
%>

Como veis en el combodependiente.jsp solo cargamos los posibles valores del combo sin el elemento  contenedor “Select” ya que este se implementa en el jsp principal.

Nota:El JavaScript fue sacado de http://www.webintenta.com

Actualización:En el combodependiente.jsp es importante cargar todo mediante out.println sino no funciona en IE7

Etiqueta con:, ,

Extracción de ficheros desde JAR

Publicado en Java by fetishcode en Octubre 20th, 2007

Creating the self-extracting jar file
Hace ya algún tiempo recibí, un correo consultandome sobre la extracción de ficheros desde un jar. Es decir, como extraer ficheros desde el jar que se esta ejecutando, en tiempo de ejecución.

Mas concretamente, el tema era el siguiente: Desplegar una aplicación en formato JAR, mediante JavaWebStart, y al ejecutar la aplicación extraer una serie de ficheros de configuración del propio jar y copiarlos en un lugar determinado.

Lo principal es como conseguir la URL de nuestro JAR y jugar con la clase ZipFile para extraer los archivos del mismo.

myClassName = this.getClass().getName() + ".class";
URL urlJar = this.getClass().getClassLoader().getSystemResource(myClassName);

Les dejo un articulo de javaworld donde se trata este tema con mas profundidad.

Etiqueta con:, , ,

Crear Thumbnails de imágenes en Java con JIMI

Publicado en Java by fetishsue en Octubre 4th, 2007

How to create image thumbnails programmatically cropping a region of an image instead of scaling it. We explain how JIMI (Java Image Management Interface) can provide a easy solution.

Si lo que queremos es generar una imagen en miniatura a partir de otra imagen, dentro de una aplicación java, pero con un tamaño fijo, podemos hacerlo de una forma muy sencilla. Para ello necesitamos la librería JIMI (Java Image Management Interface), una api propia de Sun para leer, crear y manipular imágenes en múltiples formatos.

En nuestro caso estamos desarrollando en struts una galeria de imágenes al estilo de Flickr y necesitamos crear miniaturas de las imágenes con un HxW fijo, por ejemplo 100×100, sin modificar la imagen al escalarla. Por lo que si la imagen original es rectangular para evitar deformarla necesitamos recortar una parte de ésta con las medidas adecuadas, con JIMI es posible.

thumb_jimi

Primero, necesitamos incluir las clases de JIMI en nuestro proyecto, para ello primero descargamos la librería en la página oficial de Sun:

http://java.sun.com/products/jimi/

Después descomprimimos el zip en local, renombramos el archivo JimiProClasses.zip como jimi-1.0.jar y lo copiamos en el path /WEB-INF/lib de nuestro proyecto y lo añadimos al Build Path del proyecto desde Eclipse:

Project –> Properties –> Java Build Path –> pestaña Libraries –> Add JARs…

Una vez hecho este paso nuestra aplicación ya puede reconocer las clases de jimi, lo último que queda por hacer es incluir este pequeño código:

import java.awt.image.*;
import com.sun.jimi.core.Jimi;
(...)

ImageProducer p1=Jimi.getImageProducer("image.jpg");
ImageFilter f=new CropImageFilter(0,0,100,100);
ImageProducer p2=new FilteredImageSource(f, p1);
Jimi.putImage(p2, "image.jpg");

fuente

Etiqueta con:,

Aplicando formatos con Formatter

Publicado en Java by fetishcode en Diciembre 14th, 2006

Generalmente al realizar aplicaciones nos encontramos con el problema de darle cierto formato a los datos que recuperamos de la base de datos y que debemos presentar por la GUI.

En java tenemos la clase java.uitl.Formatter que nos brinda la posibilidad de darle el formato deseado a nuestros datos sin tener que pelearnos con substrings o cosas por el estilo.

A continuación se muestran dos pequeños ejemplos:

//fijamos a dos decimles tras la coma
public String fijarDosDecimales (Number base){
   double a = base.doubleValue();
   String str2 = String.format("%.2f", a);
   return str2;
}
//rellena con ceros a la izquierda  si la longitud es menor de 5
public String fijarLongitud (String s){
   int i = Integer.parseInt(s);
   String as=String.format("%05d", i);
   System.out.println("----->"+as);
   return as;
}

En este pdf de la UPM explican la clase Formatter en castellano, y otras pequeñas nociones fundamentales.

Y para mas información la API.

¿Y tu que JRE usas?

Publicado en Java by fetishcode en Noviembre 6th, 2006

Hace ya algún tiempo descubrí que dependiendo de que JRE se usara se podían obtener ciertos comportamientos distintos.

Estaba haciendo un código, en java, que se comunicaba con la impresora, para poder imprimir mediante java de forma transparente al usuario. Esto se hacia mediante la librería awt.print.
Pues por lo visto la impresión no salía correctamente en algunos ordenadores.
En un principio se pensó que seria por temas de sistemas operativos, pero no fue así.
Por lo visto es por una incompatibilidad entre versiones de JRE. Es decir que el código en cuestión solo funciona en versiones JRE 1.4 para abajo. Por lo que en JRE 1.5 no funciona correctamente.
Así que ya estáis avisados antes de poneros en “plan killer” con vuestro código mirar que JRE utilizáis y hacer pruebas con diversas versiones de JRE.
Y en el caso de tener varias JRE´s instaladas en el mismo ordenador aseguraros de cual estáis utilizando.

Aquí dejo un enlace al almacén de Sun donde podemos encontrar todas las jre´s, las sdk existentes, etc.