Java Conversion Utils
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;
Combos dependientes en jsp con AJAX.
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
Extracción de ficheros desde JAR
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.
Crear Thumbnails de imágenes en Java con JIMI
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.
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");
Aplicando formatos con Formatter
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?
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.