viernes, 6 de febrero de 2009

Ordenar colecciones

Para ordenar colecciones:
FORMA 1: Implementando la interfaz comparable en la clase
1) El objeto del que está compuesto la colección tiene que implementar la interfaz Comparable.
Ej:
public class Alumno implements Comparable{(...)}

2) Tiene que sobreescribir el método:compareTo(), teniendo en cuenta que lo que devuelve es el criterio de ordenación.
EJ:
public int compareTo(Alumno o) {
return dni.compareTo(o.dni);
}

3)Llamada al método sort() desde Collections en el código.
EJ:
List alumnos=new ArrayList();
alumnos.add(a1); (...)
Collections.sort(alumnos);

FORMA 2:Utilizando un objeto comparator
1) Nos creamos una clase nueva que tiene que implementar la interfaz Comparable.
EJ:
public class AlumnoNombreComparator implements Comparator {}

2) Esta clase tiene que sobreescribir el método:compareTo().
Este método recibe dos objetos del tipo a ordenar y devuelve un entero.
EJ: En este ejemplo se van a ordenar por el atributo nombre de la clase alumno.
public int compare(Alumno alumno1, Alumno alumno2) {
return alumno1.nombre.compareTo(alumno2.nombre);
}

3)Llamada al método sort() desde Collections en el código.
List alumnos=new ArrayList();
alumnos.add(a1); (...)
Collections.sort(alumnos, comparadorAlumnoPorNombre);

miércoles, 4 de febrero de 2009

JSPs (modelo 2) Y CONTROLADOR FRONTAL

Hasta ahora: hemos trabajado con servlets trabajando con el modelo 1.

Ahora: vamos a trabajar con JSPs (modelo 2)

Se cambio el modelo para separar la vista de la lógica de negocio.
La vista y la lógica de negocio no tienen que coincidir.
Deben estar separadas.

Un jsp trabaja igual que un servlet en tiempo de ejecucion.
Cuando lo lanzamos al tomcat, este traduce el jsp a un servlet.

Con JSPs el código en lenguaje Java tiene que ir entre script <% %> y el código de HTML se escribe normal.

----------------------------------------------------------------
CONTROLADOR FRONTAL
tODAS LAS PETICIONES LLEGAN AL CONTROLADOR, Y ESTE SE PREGUNTA CUAL ES LA URL.
Recoge la URL y los parámetros mediante determinados metodos.
Una vez q tiene la URL decide a quién le manda la peticion(comprobando si contiene determinadas palabras)
En definitiva no hace nada, solo controla a quien se lo manda y puede tomar decisiones.(puede filtrar)
VENTAJAS: no tenemos que tener muchos servlets. Recomendable segun el caso.

lunes, 2 de febrero de 2009

TDD: testNG (desarrollo dirigido por pruebas)

- Sirve para realizar pruebas.
Es una librería que sigue un estandart y una nomenclatura concreta.

- La prueba existe antes del desarrollo.
Al hacer el código en base a las pruebas, se falicita el desarrollo de código modular, y facilita ...

- Habrá una estructura simetrica entre el codigo de prueba y el código del programa.
Esto nos sirve para probar las clases como si estuviera en el mismo paquete

- plugin para eclipse:
Para instalarlo y usarlo seguimos los pasos de este enlace:
http://testng.org/doc/eclipse.html

- Cómo se hace una prueba:
* Se van a crear clases con el nombre de la clase que vamos a probar y le ponemos la terminacion "test".
* Dentro de la clase habrá métodos de prueba.
* Tendrá que llevar la anotación test "@test" para indicar que un método es de prueba.
*Se crea un objeto de la clase a probar, se hace algo y se comprueba que el resultado es correcto.
*Para lanzar la prueba está el código de eclipse:
btn derecho encima de la prueba/run as testNG Test

viernes, 30 de enero de 2009

Clase Calendar

La clase calendar contiene toda la información relativa a una fecha.
Para usarla hay que
1) importar el paquete:
java.util.Calendar
2) crear una variable y llamar al método getInstance()
EJ: Calendar fecha = Calendar.getInstance(); //toma la fecha actual edl sistema
3) Métodos útiles
* set()->para signar valores relativos a las fechas
EJ: fecha.set(Calendar.YEAR,2008);//asigna un año
* get() -> para obtener valores relativos a las fechas
EJ: fecha.get(Calendar.DAY_OF_MONTH);//obtiene entero correspondiente al dia del mes.
*roll()->para modificar valores en las fechas
EJ: fecha.roll(Calendar.DAY_OF_MONTH, +5);//suma 5 dias al atributo dia de la variable fecha

miércoles, 28 de enero de 2009

Uso de Subversion

PARA USAR SUBVERSION CON ECLIPSE:
Seguir los pasos de este enlace que indica como instalar el plugin y como usarlo:
enlace

PARA COMPRATIR UN PROYECTO:
share project
commit->para subirlo
ignore-> PARA QUE NO SUBA DETERMINADAS PARTES
cuando commit-> 1º coger la ultima version probar que va bien con lo nuevo y entonces subir.

PARA BAJARTE UN PROYECTO EXISTENTE:
OPCION A: Nos creamos un nuevo proyecto SVN y seguimos los pasos.
OPCION B: en la vista svn boton derecho->checkout

NOTA: También se pueden compartir documentos de texto con googlecode en gmail.

martes, 27 de enero de 2009

Atajos de Eclipse y otras curiosidades

- Atajo para volver atrás:
Alt+Izquierda.

- Atajo que convierte la página de eclipse en una página web para navegar por el código:
Ctrl Pulsado y clic con el ratón.

- Para guardar todos los archivos modificados:
Ctrl+Mayúscula+s

- Atajo de System.out.println() :
Syso + barra espaciadora

- Para organizar el formato del código:
ctrl+Mayúscula+f

- Para cuando un metodo te devuelva un objeto, te cree el objeto directamente:
Alt+Mayúscula+l

- Para buscar clases en todo el workspace(solo en los proyectos abiertos):
Ctrl+Mayúscula+T

- Para buscar recursos en todo el workspace(solo en los proyectos abiertos):
Ctrl+Mayúscula+R

- Generación y manejo automático de código:
Botón derecho del ratón/source/ hay varias útiles:
• Generate hashCode and Equals
• Organize import…

- Para comentar(que aparezca //)
Ctrl+7

- Para borrar una linea:
Ctrl+D

- Para mover una linea por el código:
alt + Ctrl + (flecha arriba, flecha abajo)

-Para que te copie una linea:
alt + (flecha arriba, flecha abajo)

- Para acentuar una letra en una página Web:
&acute;.
Ejemplo: pérgola -> pérgola

- Para escribir ñ en una página Web:
ñ -> ñ

viernes, 23 de enero de 2009

Filtros

1) Definición
-- Los filtros son componentes que pueden utilizarse para analizar y/o transformar tanto los datos solicitados como los enviados en una petición web.
-- Pueden trabajar en conjunto con páginas jsp o servlets.
-- Hay 3 maneras de resolver problemas:
* Servlet
* Listener
* Filter

2) Ventajas
-- Elimina relaciones innecesarias entre objetos.
-- Descarga funcionalidad a los servlets.
-- Pueden ser añadidos y eliminados de la aplicacción facilmente.

3) Utilización

3.1) Crear una clase que implemente Filter.
public class implements Filter{(...) }

3.2) Sobreescribir el método:
doFilter(ServletRequest request, ServletResponse response, FilterChain chain){(...)}
-- En este método siempre tiene que haber una llamada a:
chain.doFilter(request, response);
Para que despues del filtrado se pueda seguir llevando a cabo la ejecución normal.

3.3) Dar de alta en web.xml