martes, 17 de junio de 2008

Genéricos para colecciones.

En un texto anterior expuse que cuando guardamos elementos

en una colección y que en general yo ocupo la interfaz List ,(ArrayList
o LinkedList), nosotros guardamos objetos de tipo object ,pero en
algunos casos seria conveniente guardar un tipo especifico como lo
hace un array (osea decirle al compilador el tipo que estamos
guardando), esto es para evitar el casting que se realiza
constantemente cuando obtenemos un objeto de una colección
, además nos ayuda a encontrar el error en momento de
compilación y no en ejecución.

Ejemplo:

ArrayList<String> v = new ArrayList<String> ();
v.add(”prueba”);
String cadena= v.get(0);

vemos que al capturar el elemento guardado en el
ArrayList no tenemos que realizar un casting

v.add(10);

en la inserción de arriba nos mostrara un error ,por
motivo que se esta guardando un entero en vez de
un string (como se señalo en el ArrayList).

http://java.sun.com/j2se/1.5.0/docs/guide/language/generics.html

viernes, 13 de junio de 2008

Un calendario para java

una critica que se le realiza a java es que no trae un calendario ,
pero para solucionar este problema existen distribuciones
gratuitas para bajar y aplicarlo en nuestro programa.

Pero como la idea no es plagio doy el link de otro blog que sale
bien detallado como instalar este calendario en netbeans .

http://monillo007.blogspot.com/2008/04/un-selector-de-fechas-para-aplicaciones.html


la forma de utilizar es super simple se captura la fecha como un String.

EJ:

String fecha;
fecha=dateChooserCombo1.getText();

jueves, 12 de junio de 2008

Encapsulamiento de datos con Netbeans

si tenemos varias variables de instacias y estas tenemos
que generar los famosos get y set , el IDE Netbeans nos
proporciona una forma muy sencilla de realizar esta tarea.

1.- crear una clase con sus atributos (del objeto)

2.- en la barra de netbeans buscar refactorizar y seleccionar Encapsular campos

3.- luego saldra este cuadro donde seleccionamos que atributos vamos a
encapsular, (se puede elegir solamentes set o get ).

4.- luego Siguiente y nos muestra el siguiente cuadro en la parte inferior del ide

5.- y por ultimo refatorizar.

como seleccionamos todos los atributos private y sus get y set
respectivos nos queda la clase asi

public class encapsulamiento {

private String nombre;
private String apellido;
private String rut;
private int edad;

public encapsulamiento() {
}

public String getNombre() {
return nombre;
}

public void setNombre(String nombre) {
this.nombre = nombre;
}

public String getApellido() {
return apellido;
}

public void setApellido(String apellido) {
this.apellido = apellido;
}

public String getRut() {
return rut;
}

public void setRut(String rut) {
this.rut = rut;
}

public int getEdad() {
return edad;
}

public void setEdad(int edad) {
this.edad = edad;
}
}

otra forma de ver y modificar los get y set mediante el IDE es
mediante los patrones de beans , bueno en la imagen quedara claro


el cuadro inferior de la imagen es la propiedad de apellido y en el modo
podemos cambiar su estructura.

martes, 10 de junio de 2008

BLUEJ

BlueJ es un entorno de desarrollo Java diseñado específicamente
para la enseñanza a un nivel introductoria
.

www.bluej.org/

Para hecharle un vistaso no esta malo , posee
un enfoque
fuerte a uml , (Diagramas de clases y para
ello mejor lo hacemos con otra herramienta mas poderosa).

Bueno es para estudiantes jejejejeje ,pero para aprender
esta herramienta no esta mala, en su pagina se encuentran los
manuales que explican como trabajar con este entorno

Imagen del entorno

Jdbc : Conexión con Access

Para aplicaciones mas simples , seria muy cómodo utilizar
Access puesto que toda la gente lo tiene instalado sin tener
idea , además seria súper fácil para el usuario , realizar el
respaldo de la BD ya que es solo copiar el archivo que genera
el Access , trabajar en distintas partes es fácil ,porque se debe
tener instalado el programa en distintas partes (trabajo y casa )
y transportar el archivo para trabajar en ambas partes de
forma sencilla
La conexión de Access no es una muy común , ya que no
tiene el driver nativo para realizar la conexión , esta conexión
no es de las mejores y además es de las mas lentas, En la
siguiente imagen se mostrara como se establece la conexión.

Obs: no se debe cargar el jar de la BD , pero si configurar el ODBC.

Pasos:
1.- Crear nuestra BD en Access con su respectiva tabla.
2.- Configurar el ODBC , en este caso lo vamos a realizar con xp.
Panel de control -> Herramientas administrativas y
después seleccionamos

Seleccionamos Agregar

Seleccionamos el driver que muestra la imagen

Aquí , seleccionar la base de dato , el archivo mdb
y en avanzadas tenemos la posibilidad de colocar la clave


Y ahora nos vamos a nuestro IDE , y que en mi caso trabajo con NETBEANS y
generamos nuestro código.

try{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection(
"jdbc:odbc:base", "access", "1234");

Statement stat = con.createStatement();
String unsql="select ……….. ";
ResultSet respuesta= stat.executeQuery(unsql);

while(respuesta.next()){

System.out.println(respuesta.getString(“nombre”));

}
respuesta.close();
stat.close();
con.close();

}catch(java.lang.ClassNotFoundException e)
{
JOptionPane.showConfirmDialog(null,"Error = " + e.toString() , "Advertencia",
JOptionPane.ERROR_MESSAGE + JOptionPane.DEFAULT_OPTION);
}
catch(java.lang.InstantiationException e)
{
JOptionPane
.showConfirmDialog. . . . . . . . . .
}
catch(java.lang.IllegalAccessException e)
{
JOptionPane.showConfirmDialog. . . . . . . . . .
}
catch(java.sql.SQLException e)
{
JOptionPane.showConfirmDialog. . . . . . . . . .
}


Fin .



miércoles, 4 de junio de 2008

Procedimiento almacenado desde JDBC

No vamos a explicar el potencial que tienen los procedimientos
almacenados , solamente mencionaremos que desde JDBC
podemos crear y llamar a ellos , en el siguiente ejemplo vamos
a trabajar con la siguiente base de dato

que ocupa el lenguaje plpgsql;

Desarrollo:

1.- primero tenemos que cargamos el jar de prostgres en nuestro
proyecto de netbeans .

2.- cargar nuestro procedimiento almacenado en la base de dato ,
para lo cual abrimos nuestra base de datos y lo ejecutamos.
---------- Procedimiento almacenado ------------------------

CREATE or replace FUNCTION estafunc()
RETURNS INTEGER AS '

DECLARE
cantidad INTEGER := 30;
i integer := 1;
BEGIN
while (i <= 30) loop
RAISE NOTICE ''Cantidad contiene aqui³ %'',i;
i := i + 1;
end loop;

cantidad := 50;
RETURN cantidad;
END;' LANGUAGE 'plpgsql';
-------------------------------------------------------------
3.- lo llamamos desde nuestro codigo

try{
Class.forName("org.postgresql.Driver");

Connection con =
DriverManager.getConnection(
"jdbc:postgresql://localhost/eliminar", "postgres", "1234");

CallableStatement cs = con.prepareCall("{call estafunc()}");
ResultSet rs = cs.executeQuery();

if(rs.next()){
System.out.println("valor"+rs.getInt(1));
}

}catch(Exception e){
System.out.println("fallo conexion ");
e.printStackTrace();
}
//////////////////////////////////////////////////
lo importante del codigo es
CallableStatement: que es para ejecutar procedimientos
almacenados en la BD.
Para mayor informacion existen unos link interesantes



lunes, 2 de junio de 2008

JAR

Unos de los primeros temas a buscar cuando uno se inicia a
programar en java es el significado de este famoso archivo de
java , leí al principio mucho en algunos foros que era el ejecutable,
etc. Por ello es que vamos a definir bien este archivo.

Nos permite empaquetar varios ficheros en un sólo archivo.
Típicamente un fichero JAR que contendrá los ficheros de clases
y los recursos auxiliares asociados a nuestra aplicación (pueden
tener distintos archivos, sonido, imagen ,etc) , es completamente
igual a un archivo de compresión zip , y no pierde la famosa
caracteristica de la multiplataforma.

Beneficios de este formato:

Seguridad: Puedes firmar digitalmente el contenido de
un fichero JAR.

Disminuir el tiempo de descarga: Si tus applets están
empaquetados en un fichero JAR, los ficheros de clases y los
recursos asociados pueden ser descargados por el navegador
en una sóla transación HTTP sin necesidad de abrir una nueva
conexión para cada fichero.

Compresión: esta diciendo , para ahorra espacio.

Portabilidad.

Creación del archivo JAR


Operación(archivo JAR) Comando

Para crear un fichero jar cf jar-file input-file(s)

Para ver el contenido de un fichero jar tf jar-file

Para extraer el contenido de un fichero jar xf jar-file

Para extraer ficherso jar xf jar-file archivedfile(s)
específicos de un fichero JAR

Para ejecutar una aplicación jre -cp app.jar MainClass
empaquetada en un fichero JAR

Cuando creamos un JAR se crea un archivo de
manifiesto , este es META INF/MANIFEST.MF ,
El manifiesto es un fichero especial que puede contener
información sobre los otros ficheros empaquetados en
un fichero JAR. Personalizar la información "meta" del
manifiesto, te permite utilizar los ficheros JAR para una
gran variedad de propósitos.

Bueno en otro escrito especificare con claridad la creación del
ejecutable de java ,con un jar , un bat y con la aplicacion como
jexelCreator