jueves, 17 de mayo de 2012

Login en JSF Y Mysql

Bien luego de una primera vista a esta tecnologia haremos un ejemplo con una base de datos en Mysql Usando JDBC Directo sin usar ningun ORM.

No entrare en detalle como funciona JDBC en java ya que eso esta en post anteriores los cuales se trabajaba con JSP y que es lo mismo solo que aca lo trabajaremos desde una clase java y no desde un JSP que mesclaba diseño y operaciones en fin un desorden.

Seguiremos con el Ejemplo Anterior solo que le haremos unos pequeños agregados como el driver de Mysql hay agregarlo a nuestras librerias y crear una clase conexion.

Esta clase sera la encargada de conectarnos al servidor de base de datos es la que tendremos que instanciar en nuestro Bean.

Lo primero que haremos es validar los dos InputText del Login anterior la validacion en JSF es mas accesible ya que lo trae nativo el lenguaje podemos usar validadores comunes como que sea requerido y que muestre un conjunto de mensajes o advertencias tambien trae los que son los Converter que son muy utiles para convertir datos que son enviados desde la vista.Pero eso lo tienen que leer esta en el manual de la entrada anterior.

 En nuestro caso solo es necesario que no vallan vacios los campos y muestre las advertencias respectivas con la propiedad required igual a true y el mensaje a mostrar en pantalla que es el requiredMessage.
Ya cuando tenemos validado nuestra vista tenemos que agregar una propiedad privada tipo String a nuestro bean con el nombre tipoUsuario con sus respectivos get y set que sera le encargada de almacenar el tipo de usuario registrado.

Luego agregamos una nueva regla de navegacion en nuestro facesConfig el cual tendra la pagina primaria sera Principal y la pagina resultante sera Index cuando nuestro metodo devuelva cerrar.
Luego en nuestra pagina Principal agregaremos las siguientes lineas las cuales es la informacion del usuario y el boton de cerrar sesion que debera de borrar el objeto en sesion creado.
Si vemos es el mismo LoginBean utilizado en en el login solo que desde otra vista lo que hara aca es luego de que pase correctamente por el login el objeto se guarda en sesion y se podra acceder en cualquier vista y mostrara la informacion que se recogio en el login.

Ahora creamos los metodos que nos hacen falta uno el login que va hacia la base de datos y el otro de cerrar la sesion de usuario.

Ya teniamos un metodo login solo creamos uno privado el cual se conectara a la base de datos y ejecutara la consulta(la consulta no la explicare)si encontro el usuario lo recorrera y llenara el tipo de usuario sino retornara false.
El metodo cerrar sesion usaremos el contexto de java server faces deben investigar para que se usa y que es porque se usara bastante,lo unico que hago aca es obtener el contexto externo para tener acceso al objeto HttpSession y se realiza el casteo ya que el faces context regresa un tipo object.Luego solo hacemos un removed del objeto en sesion que tiene el nombre del bean declarado en el faces config.

Bien ya tenemos listo nuestro Login lo probamos logeandonos con las credenciales correctas y veremos esta pantalla.
La informacion del usuario si presionamos el boton de cerrar sesion destruira el objeto en sesion y nos llevara al login.Eso es todo aca quedan el proyecto esta en Netbeans.

Descargar Achivo.

Mas adelante veremos  hibernate a nivel practico y luego los integraremos a JSF.Espero que sea de mucho conocimiento.

comenten no sean bayuncos.

martes, 8 de mayo de 2012

Java Server Faces Primeros Pasos

Bueno ahora en la actualidad bueno de hace ratos se viene insistiendo en usar Framework de trabajo los cuales nos faciliten el desarrollo de algunos aspectos que no son tan criticos y nos centremos en lo que importa en un sistema.

JavaServer Faces (JSF) es una tecnología y framework para aplicaciones Java basadas en web que simplifica el desarrollo de interfaces de usuario en aplicaciones Java EE. JSF usa JavaServer Pages (JSP) como la tecnología que permite hacer el despliegue de las páginas.

JSF incluye:
  • Un conjunto de APIs para representar componentes de una interfaz de usuario y administrar su estado, manejar eventos, validar entrada, definir un esquema de navegación de las páginas y dar soporte para internacionalización y accesibilidad.
  • Un conjunto por defecto de componentes para la interfaz de usuario.
  • Dos bibliotecas de etiquetas personalizadas para JavaServer Pages que permiten expresar una interfaz JavaServer Faces dentro de una página JSP.
  • Un modelo de eventos en el lado del servidor.
  • Administración de estados.
  • Beans administrados.
Objetivos de Java Server faces
  • Estos objetivos de diseño representan el foco de desarrollo de JSF:
  • Definir un conjunto simple de clases base de Java para componentes de la interfaz de usuario, estado de los componentes y eventos de entrada. Estas clases tratarán los aspectos del ciclo de vida de la interfaz de usuario, controlando el estado de un componente durante el ciclo de vida de su página.
  • Proporcionar un conjunto de componentes para la interfaz de usuario, incluyendo los elementos estándares de HTML para representar un formulario. Estos componentes se obtendrán de un conjunto básico de clases base que se pueden utilizar para definir componentes nuevos.
  • Proporcionar un modelo de JavaBeans para enviar eventos desde los controles de la interfaz de usuario del lado del cliente a la aplicación del servidor.
  • Definir APIs para la validación de entrada, incluyendo soporte para la validación en el lado del cliente.
  • Especificar un modelo para la internacionalización y localización de la interfaz de usuario.
  • Automatizar la generación de salidas apropiadas para el objetivo del cliente, teniendo en cuenta todos los datos de configuración disponibles del cliente, como versión del navegador...
La version actual es la 2.1.

Para Trabajar con JSF lo puedes hacer en Netbeans configurando un servidor o algun contenedor como el Tomcat para desplegar aplicaciones JSF,En eclipse yo recomiendo añadir la extension JbossTools el cual trae una opcion para generar un proyecto JSF y correrlo en Algun Servidor Jboss instalado,En JDeveloper hay que configurar el WebLogic que trae interno el IDE, para ejecutar la aplicacion este ultimo trae un diseñador visual.

La forma mas facil es en Netbeans ya que solo nos bajamos la version full y ya trae la caracteristica para trabajar,En el Ejemplo hago caso omiso a que ya te bajaste el IDE,ya configuraste el tomcat o cualquier otro,y estas listo para crear un proyecto web JSF.

Antes de empezar el pequeño tutorial tienes que haber usado netbeans para que no te perdas en los pasos.

Lo primero que haremos es un proyecto web nuevo como lo vemos en la imagen.
Le ponemos un nombre al proyecto:
Luego le ponemos a que servidor estara ejecutandose antes de eso debemos de configurar el tomcat hay una entrada en el blog que explica como paso a paso.
En la siguiente pantalla seleccionamos que queremos trabajarlo con JSF con las librerias 2.1 que son las mas recientes las demas pestañas no la tocamos lo dejamos por default y presionamos terminar.
Ya creado el proyecto vemos en la imagen que explica las partes del proyecto cada una tiene una funcion especifica y fundamental de existir.Por experiencia la carpeta que mas tocaremos es WEB-INF aca tendremos que tener nuestras imagenes en dado caso usemos las librerias externas que no las contiene el IDE aca deben de ir.

Nos colocamos en la carpeta WEB-INF y presionamos click derecho y seleccionamos nuevo y nos saldra esta pantalla.

Y seleccionamos del panel izquiedo java server faces y del derecho jsf configuration.
le dejamos por default el nombre ya que solo abra uno pero que es esto que acabamos de crear.

Es el archivo de Configuracion de JSF como su nombre lo indica aca iran todos los beans las vistas y los casos de navegacion para nuestra aplicacion.

Luego de estos en donde tienen que ir nuestras clases java creamos un paquete y una clase con nombre BeanLogin como lo vemos en la imagen.

Un bean en JSF es el que comunicara la vista de nuestra aplicacion con nuestra logica de negocio lo cual sigue el patron de diseño MVC para un mejor desarrollo y distribucion de las capas de la aplicacion.

Lo siguiente que tenemos que hacer es metodos get y set para la propiedad de usuario tipo String y pass como lo vemos en la imagen.

Luego tenemos que abrir el faces config y editar su codigo para poder agregar un managed bean el cual nos ayudara a comunicar la vista(pagina XHTML,JSP) con la logica de negocio(tus clases Java).


Damos clik derecho sobre el archivo como lo vemos en la imagen y nos saldra un menu el cual seleccionaremos managed bean.Y nos saldra la siguiente pantalla.

Aca le ponemos un nombre al bean en mi caso LoginBean en la opcion de bean class presionamos el boton señalado en la imagen para que buscar la clase que anteriormente habiamos creado,luego de eso cambiamos el estado del bean a session porque lo necesitaremos en cada cliente,los scopes son el ambito del bean,session quiere decir que estara creado por cada cliente y no se destruira hasta que nosotros lo indiquemos,el aplication esta presente en todo el sistema en general, y request es el que solo se crea en una peticion luego desaparece.

Luego de esto abrimos nuestro XHTML y ponemos el siguiente codigo que se muestra en la imagen:
Esto son etiquetas JSF mescladas con html normal.si vemos en la propiedad value del inputText  enlazo mi bean.propiedad con el objeto de la vista asi cuando se haga una peticion a un metodo nosotros obtendremos los valores que en inputText digitaron y en caso de asignar informacion desde el servidor a la vista.Por medio de la propiedad que declaramos en el bean.Para llamar un metodo desde un boton podemos usar la propiedad Action el cual nos pedira el nombre del bean y el metodo (solo el nombre).

Luego de eso nos vamos a nuestro bean para crear el metodo login:
Un metodo que retorne un String lo siguiente es crear una nueva pagina XHTML que se llame principal que sera la que se muestre cuando el login sea correcto y ponemos el siguiente codigo en la nueva pagina.
Regresamos a nuestro faces config para crear una nueva regla de navegacion que nos servira para redireccionar entre paginas cuando haya un metodo de por medio.
Y nos saldra un menu el cual tenemos que indicar el origen de la nueva regla.
Otra vez presionamos clik derecho para crear un nuevo caso de navegacion.
Y nos saldra un menu el cual tenemos que indicar que regresara la pagina y que hara si eso se cumple.
Acordemonos que en el metodo regresamos correcto por eso el caso de navegacion retornara correcto.En dado caso se cumpla se mostrara la pagina principal,cuando no sea correcto tenemos que crear otro caso de navegacion en este caso cuando la pagina retorno incorrecto.
Y listo ya esta listo nuestro Ejemplo cuando no sea el usuario correcto se quedara en la misma pagina si es correcto se mostrara la pagina principal.
Presionamos Entrar y veremos la pagina principal.
Y eso es todo para una pequeña introduccion a algo que es muy potente y bonito de manejar ahora ya pueden leer el manual para hacer cosas mas complicadas.
Manual JSF

Mas adelante veremos cosas mas interesantes Comenten no sean Bayuncos

lunes, 23 de abril de 2012

El Universo de Java

Bien ya cuando dominemos JDBC y conoscamos java por lo menos la sintaxis basica es hora de adentrarnos a un uso mas complejo de este lenguaje,cuando nos lo enseñan, primero lo vemos a consola como un lenguaje estructurado luego Orientado a objetos y se complica mas la cosa,despues lo bonito de interfaz grafica y algunos vamos directo a la web con JSP.

Yo no soy ningun experto pero tampoco conoci JAVA ayer ya tengo mi rato por aca pero todos los dias son de aprendizaje,a lo que voy es que les explicare como es que esta divido todo este bonche bueno por lo menos por donde yo he pasado y visto.

La primera estacion se llaman Aplicaciones de escritorio construidas con Swing o AWT o algunas librerias extras como SwingX,Como funcionan estas aplicaciones? pues son a lo antiguo a lo visual basic tu creas tu aplicacion con tu IDE preferido el mas comun es Netbeans.


Algunos Post antiguos tenemos de esta herramienta lo basico para comenzar,En la paleta tenemos widgets de los mas basicos hasta algunos que son complejos,Una de las ventajas que se pueden crear componente personalizados que quiere decir esto tu agarras un windgets java lo extiendes y los personalizas luego lo pones en la paleta y listo un componente propio en la web explican como hacerlos la mayoria ya estan hechos solo es de darles un toque personal,(Crear componentes es complejo).

Estas aplicaciones se pueden integrar con base de datos cualquiera que sea soportada yo lo he probado con  Mysql Server,PostgreSQL,Oracle, tambien con los ORM,yo lo use con hibernate, y algunos framework que  simplifican la vida como Spring Framework.

Tambien la interfaz grafica se puede usar en Eclipse con un plugin que se llama Windows Builder la intalacion es bastante sencilla.


Cuando la Aplicacion esta completa es hora de generar el jar que es el ejecutable que reconoce java algunos lo hacen exe pero es caso especial se hace con un programa aparte pero se pierde la portabilidad que nos brinda el Lenguaje,una vez teniendo el jar solo es de ejecutarlo.Hay implementaciones mas bonitas sobre como sacar a produccion un proyecto swing como lo es Web Start.

Hace poco me di cuenta que Netbeans dice que el Framework ya no se esta desarrollando ya no tiene continuidad,En cambio Windows Builder no lo dice pero hay otras opciones como lo es el Lado de la web que esta en mas auge en este momento.

Aca es otro universo hay tantas opciones que algunas ni idea como funcionan o que son las que mas conosco son.

  • JSF:Este Framework esta basado en MVC que divide la aplicacion en capas logicas Existen varias implementaciones de este framework para el manejo de componentes,la version mas reciente trae Ajax nativo.
  • IceFaces: Desarrollado por IceSoft, esta implementación aparte de adicionar mas componentes al framework, tambien nos evita tener que estar pendientes del uso de Ajax ya que todos sus componentes lo traen embebido y funciona directamente en la aplicación desarrollada con este framework.
  • RichFaces: Esta implementación es una de las grandes del mercado, tiene una gran cantidad de componentes y es soportada por la empresa jboss, este framework nos integra ajax a nuestra aplicación web evitándonos la tediosa programación de ajax, en este caso nosotros nos encargamos de controlar el ajax, es decir, que en los componentes yo defino cuando funcionan con ajax, tiene una gran cantidad de componentes y es muy usado en el mercado.
  • PrimeFaces: Esta implementación trae una gran cantidad de componentes (mas que icefaces), nos provee, al igual que icefaces, ajax, pero con el modelo de richfaces, es decir nosotros controlamos las acciones ajax, también pone a nuestra disposición una gran cantidad de temas para nuestra aplicación. (Recomendado y muy facil de usar pero muy dificil de personalizar y soporte es de pago hay foros gratis pero nunca responden)
  • ADF: Esta implementación esta a cargo de Oracle, es de cobro, totalmente integrada con IDE JDeveloper de Oracle y es una excelente herramienta(Herramienta muy buena se hace un mantenimiento empresarial en 10 minutos pero para poder usarlo se necesita mucho mucho mucho dinero).



Algunos como Ifaces traen plugin para Netbeans para hacer su uso agradable.El uso de JSF en netbeans no requiere ninguna configuracion el IDE ya lo trae.


En eclipse requiere un poco mas de configuracion.

Algunos necesitaran una configuracion extra dentro de nuestro proyecto,Existen otros framework como Struct que de ese sino se nada jeeee.

GWT (Google Web Toolkit): Creado por Google, en este framework el desarrollador no necesita tener conocimiento de HTML ya que el objetivo es que solamente se desarrolle en Java y el framework se encargará de traducir esta programación a código HTML y Javascript, se caracteriza porque la vista del cliente se maneja desde el browser del usuario que se conecta (javascript) y lo que corresponde al servidor se ejecuta desde el servidor (java), lo que hace que la aplicación sea muy rapida al no estarse conectando al servidor 'por cada clic' .Este se puede usar en netbeans pero yo lo he probado en Eclipse ya que ahi posee el GWT-designer el cual se parece a Swing solo que es web una herramienta orientada a los que vienen de Swing y quieren entrar en la Web.


Para poder usarlo hay que configurar ciertas cosas antes que lo explica la pagina de desarrolladores de este Framewok es bastante potente aunque tiene su lado complejo.

La ventaja de todos es que siempre es codigo java solo cambia el contexto donde estes aunque se mescla con codigo de algunos framework.Hay muchos mas que no mencione,pero tu eliges con cual trabajar todos tienen sus pro y sus contras lo bueno es que les abri la mente y que queda mucho mucho por aprender.Espero que sea de ayuda

martes, 20 de marzo de 2012

Colleciones en Java (Set y HashMap)

Bueno señores continuando con las colecciones en java hoy veremos unas estructuras las cuales son muy utiles en algunos casos,en el post anterior vimos las listas y sus tipos y operaciones mas comunes.Bien empezemos con la collecion SET.

La colleccion SET es un conjunto de datos los cuales no puede contener duplicados en su conjunto de datos. veamos un ejemplo.
Cuando lo hemos declarado lo podemos llenar con los tipos de datos con que hemos inicializado el conjunto si ven en el bucle lo llenamos hasta el numero 9,luego intentamos añadir un objeto que ya existe en la coleccion lo cual no se añadira luego vemos que insertamos un valor que no existe en nuesto conjunto veamos la salida del ejemplo.
Si observamos inserto el dato que no existia en nuesto conjunto.

Esta coleccion tambien puede ser del tipo objeto lo cual les muestro un ejemplo tomando como referencia la clase del anterior ejemplo UsuarioEntidad.

Como vemos creamos 3 objetos los cuales llenamos la informacion y los añadimos a nuestro conjunto antes de recorrer el conjunto nos fijamos que intentamos añadir el objeto1 que ya existe en nuestra coleccion lo cual no lo añadira como lo muestra la salida.

Bien pero cuando decimos un dato repetido significa al mismo objeto no a otro objeto diferente con la misma informacion de algun objeto existente dentro del conjunto como lo muestra la siguiente imagen.
Asi que tener cuidado cuando dice que no soporta datos repetidos se refiere al objeto en memoria almacenado no a otro objeto con la misma informacion.

La otra coleccion es el HashMap :Es el tipo de mapeo más sencillo y probablemente el más usado. Es la clase a utilizar si queremos asociar pares de claves y valores sin orden, sin más. Internamente, como su nombre indica, utiliza un hash para almacenar la clave. No permite claves duplicadas, pero si utilizar null como clave.

La operacion basica es llenarlo y mostrarlo como lo vemos en la imagen:
Aca no tenemos que repetir claves,la coleccion se expande como las demas.Para recorrerlo usamos un Iterador,luego declaramos un mapEntry para luego castear el next del iterador y poder obtener la clave y el valor.

Tambien podemos ordenarlo por clave y valor,veamos como se ordena por clave:
En esta parte tendremos que usar un TreeMap:En el que los pares clave-valor se almacenan en un árbol ordenado según los valores de las claves. Como es de esperar es la clase más lenta a la hora de añadir nuevos elementos, pero también a la hora de accederlos.Luego obtenemos un set de claves ordenados los cuales los podemos recorrer con el iterador.Y tenemos la siguiente salida.
Si lo queremos ordenar por valor se hace este procedimiento:
Aca hacemos uso de un LinkedHashMap:Es una clase introducida con el J2SE 1.4 que extiende HashMap y utiliza una lista doblemente enlazada para poder recorrer los elementos de la colección en el orden en el que se añadieron. Esta clase es ligeramente más rápida que HashMap a la hora de acceder a los elementos, pero es algo más lenta al añadirlos.

Creamos dos listas una que nos almacene las claves y los valores,Luego declaramos un TreeSet: el cual mantiene una lista ordenada,TreeSet almacena sus elementos en un árbol y que se organizan automáticamente en un orden determinado.TreeSet no está sincronizado. Si hay más de un hilo desea acceder a ella, al mismo tiempo, entonces debe ser sincronizado externamente.Luego nuestro TreeSet lo convertimos en array.para poder recorrerlo y llenar el LinkedHashMap siempre lleva la misma logica clave y valor solo que lo llenara en orden por valor,al final obtenemos el iterador por valor  y lo recorremos y obtendremos los valores ordenados y veremos la siguiente salida.
Bien hemos hecho uso de varias colecciones las cuales nos facilitan el trabajo siempre hay que pensar que algunas estructuras son mas lentas y otras mas rapidas unas que estan sincronizadas y otras que toca sincronizarlas espero que haya sido de ayuda.
Descargar
Comenten no sean bayuncos...

jueves, 15 de marzo de 2012

Uso De Listas en Java (ArraysList)

Bien señores despues de descubrir todo lo bonito que tiene java en el lado de las colecciones,es hora de aprender a usarlas,No las explicare todas,solamente las que yo uso mas y que creo que son importantes,no es que las demas esten de estorbo pero en alguna situacion pueda que las tengamos que usar,pero explicare las que mas uso yo a menudo.

La clase ArrayList (java.util) es una objeto lista que implemente la interfaz Collection de java. Esta clase permite contener y ordenar objetos, incluso, puede almacenar objetos dupicados. Su tamaño es dinámico, es decir, esta lista crecera a medida que se inserten en ella mas elementos. Debememos recordar que el índice de un ArrayList empieza en 0, es decir, el primer elemento del ArrayList tiene como índice el 0.

Nota: Los objetos ArrayList se comportan igual que un objeto Vector desincronizado, por lo tanto, un ArrayList se ejecuta mas rápido que un Vector, ya que el ArrayList no tiene que implementar los métodos de sincronización de procesos.

Ahora veamos los usos mas comunes que les doy yo:
Crear Llenar y Mostrar.

Bien cuando la creamos le indicamos un tipo de lista a crear en este caso sera una lista de tipo Integer,que quiere decir eso que solo podra contener datos enteros,el Tamaño sera creciente.

Luego llenamos las lista con un for simple el cual el contador se agregara a la lista,usamos el nombre de la lista.add(y el elemento a agregar).

Bien para mostrar el contenido de una lista existen varias formas de hacerlo la primera forma es con un for each como vemos en la imagen con la explicacion de la sintaxis de como debe estructurarse.Para mostrarla solo basta un println y usar el nombre de la variable que declaramos y los mostrara como en la siguiente imagen.

Y muestra el contenido de la Lista hay otra forma de hacerlo que es un Iterador como se muestra en la siguiente imagen.

Un Iterator o Iterador es un patrón de diseño que nos ofrece una interfaz estándar para recorrer una estructura de datos sin que nos tengamos que preocupar por la representación interna de los datos de dicha estructura.Una vez que tenemos nuestra lista nos bastará utilizar la clase Iterator para obtener un puntero que nos referencie a los elementos de la lista. En este punto tendremos que tener en cuenta que: el método hasNext() nos dice si hay más elementos y que el método .next() nos permite movernos al siguiente elemento. Y la salida sera exactamente igual que la anterior.

Para remover un objeto de la lista podemos hacerlo usando el metodo remove el cual nos pide como parametro la posicion donde esta el valor a eliminar acordemonos que la lista empieza con index 0,si nos pasamos de posicion a una que no existe no dara una excepcion,para realizar el eliminado de datos se hace como vemos en la imagen.
Cuando lo ejecutemos nos damos cuenta que quito el elemento que nosotros removimos de la lista como la siguiente imagen.

Tambien tenemos la opcion de Insertar una coleccion completa del mismo tipo a una lista vacia,y insertar datos manualmente usando el metodo add que tiene nuestra lista.Una de las funciones que tambien uso frecuentemente es ordenar los datos que tiene dicha lista, de forma ascendente o descendente en este caso son valores numericos como lo vemos en la siguiente imagen.
Declaramos otra lista del mismo tipo para asignarsela la lista existente que habiamos creado antes luego le añadimos 3 datos mas los cuales hacen que nuestra lista este desordenada,Para ordenar la lista usamos la clase Collections y el metodo sort el cual nos pide en su constructor una lista y el nos la ordena de forma ascendente como vemos en la salida de la siguiente imagen.
Y listo ya ordenamos nuestra lista de enteros de menor a mayor,para ordenarla en el orden inverso de forma descendente agregamos la siguiente linea de codigo que descomentamos en la imagen.
Usamos la misma clase collections y el metodo sort solo que ahora usaremos otro constructor el cual nos pide la lista un tipo Comparator y le mandamos lo que retorna el metodo Collections.InverseOrder el cual devuelve un objeto Comparator de forma inversa y vemos la salida en la siguiente imagen.
Bien hasta aca es todo igual cuando se manejan listas de tipo de dato,la cosa cambia cuando necesitamos usar listas de objetos,lo cual nos ayuda a tener mas solido nuestro codigo a no perdernos a la hora de mostrar gran cantidad de informacion,Nosotros podemos crear listar de objetos los cuales en mi mayoria son mis JavaBeans o mis Entidades(Cuando se usa un ORM como Hibernate)  les mostrare el siguiente ejemplo.

Tenemos un JavaBeans del tipo Usuario el cual contiene como propiedades privadas codigo,nombre,usuario,pass y edad lo cual haremos una lista de esos objetos para almacenarlos y luego mostrarlos.

NOTA IMPORTANTE:Anteriormente Declaramos un:
 ArrayList listaImplementacion = new ArrayList();
Pues bien Como Buenos programadores que somos y que seguimos Patrones bien fundamentados La pagina de Oracle donde esta la documentacion oficial de java menciona que no debemos usar la implementacion sino la interfaz que es esta:
List listaInterface = new ArrayList();
Bien No lo digo yo en esta pagina en el parrafo 5 dice Como regla general, usted debe pensar acerca de las interfaces, no las implementaciones.Asi que les toca arreglar los Ejemplos de arriba jaaaa En realidad funciona de las dos maneras "FUNCIONA" pero no es recomendable por el rendimiento de tu aplicacion.

La imagen nos explica como crear una lista correctamente y llenarla en un bucle y luego mostrarla.
Adentro de nuestro bucle debemos crear un objeto del tipo con que declaramos la lista porque al momento de llenar la lista nos pedira un objeto de ese tipo no de otro.Para mostrarlo hacemos uso de un for each el cual donde nos pide el tipo de datos ponemos el tipo de objeto asi podemos desplegar la propiedad por propiedad.Y vemos la salida la imagen.
Luego de esto tambien podemos ingresar datos manualmente como se muestra en la imagen.

La situacion se complica un poco cuando manejamos listas de objetos porque en algunos casos nos tendremos que topar con que tenemos que ordenar esos datos,"algunos los que hacen es ordenarlos desde la base de datos"Pero nos fregamos cuando son calculados,lo primero que haremos es ordenar la informacion nueva que insertamos manualmente en orden ascendente por usuario esto quiere decir de la A a la Z.

Bien para hacer esto tenemos que usar la clase Colletions metodo sort le mandamos la lista de objetos y  luego Instanciamos un nuevo objeto Comparator y sobrescribimos el metodo compare para que haga lo que yo quiero hacer en este caso ordenar por usuario,el metodo devolvera un entero y como parametro dos objetos tipo Object,luego casteamos los tipo object por los tipo que nosotros hemos creado en este caso se llama UsuarioEntidad luego en return hacemos una comparacion con el metodo compareToIgnoreCase
realiza una comparación entre un String (en este caso) y otro objeto de tipo String sin importar si viene mayuscula o minuscula.Y tendremos la siguiente salida.
Y listo Ordenada una lista de objetos Facil solo era de leer un rato y ponerse a averiguar.Pero el problema no termina ahi Ahora si la propiedad de nuestro objeto no fuera String? como lo ordenaria pues aca lo resolvemos a continuacion.


Hacemos el mismo procedimiento solo que ahora en el retur hacemos un if ternario para los que no saben que son esos garabatos,los comprendo yo no sabia que eran pero ahora me son muy utiles estos if se usan cuando la expresion a evaluar es corta y un if doble.Devuelve -1 cuando es verdadero y se cumple que objeto 1 sea menor a objeto 2,sino evalua si objeto 1 es mayor a objeto 2 si eso se cumple devuelve 1 sino 0.Y tenemos la siguiente Salida.
Y listo ya lo ordenamos Bueno Espero que haya sido de mucha ayuda este post ya que es lo que yo he aprendido y lo que me ha tocado les dejo el archivo con el codigo el proyecto esta hecho en eclipse pero puede ejecutarlo en netbeans.


Comenten no sean Bayuncos....