<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4332410656758620773</id><updated>2012-02-16T11:58:03.224-08:00</updated><title type='text'>Java y nuevas tecnologias</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://albeticom.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332410656758620773/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://albeticom.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Albeticom</name><uri>http://www.blogger.com/profile/11192951582468528916</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>16</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4332410656758620773.post-806298529470909374</id><published>2009-12-11T03:33:00.001-08:00</published><updated>2009-12-11T03:34:38.871-08:00</updated><title type='text'>Ciclo de vida de JSF</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_q2MDZ-53E-o/SyIuDjA15KI/AAAAAAAAAH0/HgjV7R0T-aY/s1600-h/ciclojsf.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 150px;" src="http://4.bp.blogspot.com/_q2MDZ-53E-o/SyIuDjA15KI/AAAAAAAAAH0/HgjV7R0T-aY/s320/ciclojsf.jpg" alt="" id="BLOGGER_PHOTO_ID_5413940340526015650" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;La primera fase puede denominarse como “&lt;b&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Aplicar los valores de la petición&lt;/span&gt;&lt;/b&gt;” (ver recuadro 1). En ella se van recorriendo todos los componentes del formulario siguiendo la jerarquía padre-hijo al mismo tiempo que se recuperan sus valores a partir de los parámetros de la petición o request enviada al servidor. El valor se asigna a cada componente en su propiedad submittedValue.&lt;br /&gt;    Esto ocurre siempre excepto en dos casos: si el componente está deshabilitado (disabled = true) o si posee una condición que indica cuándo debe pintarse en pantalla(atributo ‘rendered’).&lt;br /&gt;    A continuación tendrá lugar bien la fase de validaciones o bien la ejecución de cada uno de sus eventos asociados dependiendo del valor del atributo ‘immediate’ de los componentes de la página (ver al final el apartado “Uso del atributo ‘immediate’.”). &lt;div class="plain"&gt; &lt;hr width="100%" size="2"&gt;&lt;/div&gt; &lt;div class="plain"&gt;    Siguiendo la secuencia normal del &lt;span class="highlightedSearchTerm"&gt;&lt;span style="font-size:+0;"&gt;ciclo&lt;/span&gt;&lt;/span&gt;, la siguiente fase que tiene lugar es la de “&lt;b&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Procesamiento de las validaciones&lt;/span&gt;&lt;/b&gt;” (ver recuadro 2). Este proceso consiste en la validación del dato suministrado por el usuario en función de las reglas de validación definidas para el componente.&lt;br /&gt;    Es común el uso de un validator o un converter, que se aplica sobre el submittedValue. Si no se produce ningún error de validación o de conversión, el valor del submittedValue de cada componente válido pasa a ser null y entonces se almacena en su ‘value’ el dato convertido al tipo que tenga la propiedad del bean a la que se asignará posteriormente.&lt;br /&gt;    En caso contrario, el &lt;span class="highlightedSearchTerm"&gt;&lt;span style="font-size:+0;"&gt;ciclo&lt;/span&gt;&lt;/span&gt; de &lt;span class="highlightedSearchTerm"&gt;&lt;span style="font-size:+0;"&gt;vida&lt;/span&gt;&lt;/span&gt; avanza directamente hasta la fase de presentación de la respuesta.&lt;/div&gt; &lt;div class="plain"&gt; &lt;hr width="100%" size="2"&gt;&lt;/div&gt; &lt;div class="plain"&gt;    Durante la fase de “&lt;b&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Proceso de Eventos&lt;/span&gt;&lt;/b&gt;”  (ver recuadro 3) se llevan a cabo todos los eventos asociados a las acciones realizadas por el usuario.&lt;/div&gt; &lt;div class="plain"&gt; &lt;hr width="100%" size="2"&gt;&lt;/div&gt; &lt;div class="plain"&gt;    Pasamos a la próxima fase del &lt;span class="highlightedSearchTerm"&gt;&lt;span style="font-size:+0;"&gt;ciclo&lt;/span&gt;&lt;/span&gt;: “&lt;b&gt;Actualización de los valores del Modelo&lt;/b&gt;” (ver recuadro 4). Tras las validaciones y/o ejecución de los eventos tiene lugar la asignación del ‘value’ de los componentes a los atributos del bean.&lt;/div&gt; &lt;div class="plain"&gt; &lt;hr width="100%" size="2"&gt;&lt;/div&gt; &lt;div class="plain"&gt;    Entonces llegamos a la fase conocida como “&lt;b&gt;Invocar la aplicación&lt;/b&gt;” (ver recuadro 5) en la que se usan los valores del bean para ejecutar la lógica de negocio y se llevan a cabo las operaciones correspondientes a las acciones del usuario.&lt;/div&gt; &lt;div class="plain"&gt; &lt;hr width="100%" size="2"&gt;&lt;/div&gt; &lt;div class="plain"&gt;    Por último, tiene lugar la fase: “&lt;b&gt;Presentación de la respuesta&lt;/b&gt;” (ver recuadro 6).  La implementación de JavaServer Faces delega su autoridad en el contenedor JSP para enseñar la página que el usuario ve por pantalla, y donde todos los campos están informados con su valor en ese momento.&lt;br /&gt;    Si se produjo un error en la fase de validación, se muestra la response (pantalla de respuesta) con los valores que introdujo el usuario y además un mensaje informativo del error. El valor que aparecerá en pantalla para cada componente de la página será el primero no nulo que el servidor encuentre en la secuencia:&lt;/div&gt; &lt;p style="text-align: center;" class="MsoNormal" align="center"&gt;Componente.submittedValue –&gt; Componente.value –&gt; Bean.attribute&lt;/p&gt; &lt;p style="text-align: center;" class="MsoNormal" align="center"&gt; &lt;/p&gt; &lt;h3 class="plain"&gt;Uso del atributo ‘immediate’&lt;/h3&gt; &lt;p class="plain"&gt;    El atributo ‘immediate’ de los componentes de un formulario está presente en la mayoría de las fases del &lt;span class="highlightedSearchTerm"&gt;&lt;span style="font-size:+0;"&gt;ciclo&lt;/span&gt;&lt;/span&gt; de &lt;span class="highlightedSearchTerm"&gt;&lt;span style="font-size:+0;"&gt;vida&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;    Ya en la primera fase del &lt;span class="highlightedSearchTerm"&gt;&lt;span style="font-size:+0;"&gt;ciclo&lt;/span&gt;&lt;/span&gt; se comprueba el valor de dicho atributo. Si vale true, el &lt;span class="highlightedSearchTerm"&gt;&lt;span style="font-size:+0;"&gt;ciclo&lt;/span&gt;&lt;/span&gt; avanza hasta la tercera fase, saltándose las validaciones pertinentes. En caso contrario, se continúa el &lt;span class="highlightedSearchTerm"&gt;&lt;span style="font-size:+0;"&gt;ciclo&lt;/span&gt;&lt;/span&gt; normal hacia la fase 2.&lt;br /&gt;    Es importante señalar en este punto que si ‘immediate’ no se indica su valor es false, ya que así está definido en la declaración de atributos de &lt;span class="highlightedSearchTerm"&gt;&lt;span style="font-size:+0;"&gt;JSF&lt;/span&gt;&lt;/span&gt;. Y además es importante saber que el hecho de asignarle el valor true  implica no tener acceso a los valores de los campos del formulario así como a los errores que se hubieran producido.&lt;/p&gt; &lt;h3 class="plain"&gt;Glosario&lt;/h3&gt; &lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;b&gt;Componente: &lt;/b&gt;elemento que forma parte del formulario y provee funcionalidades para interactuar con el usuario. Puede ser de diferentes tipos (caja de texto, botón, control de selección…) y el usuario “completa” el formulario a través de su modificación.&lt;/p&gt; &lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;a name="converter" title="converter"&gt;&lt;/a&gt;&lt;b&gt;Converter: &lt;/b&gt;se utiliza cuando es necesario convertir el dato introducido por el usuario al tipo apropiado. Por ello hay que indicar como nombre el de una clase bean que implemente la interfaz Converter.&lt;/p&gt; &lt;p style="text-align: justify;" class="MsoFootnoteText"&gt;&lt;a name="evento" title="evento"&gt;&lt;/a&gt;&lt;b&gt;Evento: &lt;/b&gt;acción que queremos que se produzca al cambiar el valor del componente. Por ejemplo, el caso de un selectOneMenu cuando cambiamos la opción marcada del menú desplegable. Solemos indicar estas acción a través de los atributos ‘onchange’, ‘onblur’, ‘onclick’, etc. en el código jsp.&lt;/p&gt; &lt;p style="text-align: justify;" class="MsoFootnoteText"&gt;&lt;b&gt;Evento de acción:&lt;/b&gt; acción declarada en el atributo ‘action’ de un componente. A cada botón que exista en una página le corresponde una acción (no necesariamente distinta a las demás), y que nosotros solemos denominar con los nombres “doXxxAction” o “goXxxAction”. Por ejemplo: doActualizarAction(), goAtrasAction().&lt;/p&gt; &lt;blockquote class="plain"&gt; &lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;b&gt;Nota&lt;/b&gt;: &lt;span class="highlightedSearchTerm"&gt;&lt;span style="font-size:+0;"&gt;JSF&lt;/span&gt;&lt;/span&gt; entiende ‘evento’ como cualquier acción realizada por el usuario. Por ejemplo: pulsar en un botón, hacer clic sobre un link, escribir en un inputText, etc. Como se lee un poco más arriba, nosotros distinguimos entre ‘eventos’ propiamente dichos, y ‘eventos de acción’.&lt;/p&gt; &lt;/blockquote&gt; &lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;a name="submittedValue" title="submittedValue"&gt;&lt;/a&gt;&lt;b&gt;SubmittedValue: &lt;/b&gt;valor introducido por el usuario en el formulario.&lt;/p&gt; &lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;a name="validator" title="validator"&gt;&lt;/a&gt;&lt;b&gt;Validator: &lt;/b&gt;responsable de asegurar que el valor ingresado por un usuario es aceptable. Uno o más validadores pueden ser asociados con un solo componente y se definen en clases Java independientes.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332410656758620773-806298529470909374?l=albeticom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://albeticom.blogspot.com/feeds/806298529470909374/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332410656758620773&amp;postID=806298529470909374' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332410656758620773/posts/default/806298529470909374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332410656758620773/posts/default/806298529470909374'/><link rel='alternate' type='text/html' href='http://albeticom.blogspot.com/2009/12/ciclo-de-vida-de-jsf.html' title='Ciclo de vida de JSF'/><author><name>Albeticom</name><uri>http://www.blogger.com/profile/11192951582468528916</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_q2MDZ-53E-o/SyIuDjA15KI/AAAAAAAAAH0/HgjV7R0T-aY/s72-c/ciclojsf.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332410656758620773.post-8947248379314739662</id><published>2009-12-01T04:27:00.001-08:00</published><updated>2009-12-01T04:32:42.220-08:00</updated><title type='text'>rich:modalPanel</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_q2MDZ-53E-o/SxUL2kJVArI/AAAAAAAAAHc/38e5cSW9tUw/s1600/ventanaModal.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 226px;" src="http://3.bp.blogspot.com/_q2MDZ-53E-o/SxUL2kJVArI/AAAAAAAAAHc/38e5cSW9tUw/s320/ventanaModal.JPG" alt="" id="BLOGGER_PHOTO_ID_5410243559399162546" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;Componente de RichFaces para que nos aparezca una ventana modal. Con esta ventana modal se pueden mostrar errores o el alta de una gestión, etc. A continuación expongo un ejemplo:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_q2MDZ-53E-o/SxULw-PcfuI/AAAAAAAAAHU/vUNuuJk9fEU/s1600/EjemploModalPanel.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 247px;" src="http://3.bp.blogspot.com/_q2MDZ-53E-o/SxULw-PcfuI/AAAAAAAAAHU/vUNuuJk9fEU/s320/EjemploModalPanel.JPG" alt="" id="BLOGGER_PHOTO_ID_5410243463324925666" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;Se invocaria desde un componente mediante la sentencia oncomplete un ejemplo sería:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_q2MDZ-53E-o/SxUMlO5r9EI/AAAAAAAAAHk/pb5vOeS3TtM/s1600/invoca.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 42px;" src="http://3.bp.blogspot.com/_q2MDZ-53E-o/SxUMlO5r9EI/AAAAAAAAAHk/pb5vOeS3TtM/s320/invoca.JPG" alt="" id="BLOGGER_PHOTO_ID_5410244361150264386" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332410656758620773-8947248379314739662?l=albeticom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://albeticom.blogspot.com/feeds/8947248379314739662/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332410656758620773&amp;postID=8947248379314739662' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332410656758620773/posts/default/8947248379314739662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332410656758620773/posts/default/8947248379314739662'/><link rel='alternate' type='text/html' href='http://albeticom.blogspot.com/2009/12/richmodalpanel.html' title='rich:modalPanel'/><author><name>Albeticom</name><uri>http://www.blogger.com/profile/11192951582468528916</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_q2MDZ-53E-o/SxUL2kJVArI/AAAAAAAAAHc/38e5cSW9tUw/s72-c/ventanaModal.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332410656758620773.post-7895961703368035309</id><published>2009-04-17T01:00:00.000-07:00</published><updated>2009-04-17T02:55:32.956-07:00</updated><title type='text'>JPA  (JAVA PERSISTENCE API)</title><content type='html'>Hola gente , en la entrada de hoy  voy hablar de  JPA,  para los que no sepan lo que es ,a grandes rasgos ,son unas APIS de java  para tratar la base de datos como objetos mediante clases PERSISTENTES.&lt;br /&gt;&lt;br /&gt;JPA te permite crear clases persistentes(Clase que sirven para almacenar datos , conviertiendose en tablas en la base de datos) .JPA utiliza anotaciones  un ejemplo de clase persistente sería:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;@Entity&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;public class Usuario&lt;/span&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;@Id&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;private String id;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;private String name;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;private String email;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Con las anotaciones &lt;span style="color: rgb(0, 0, 153);"&gt;@Entity&lt;/span&gt; estamos diciendo que esa clase es persistente y como tal se creara una tabla en la base de datos ,&lt;span style="color: rgb(0, 0, 153);"&gt;@Id&lt;/span&gt; sirve para marcar la clave primaria y se coloca encima del atributo en este caso el atributo id de la clase Entity sera la clave primaria.&lt;br /&gt;&lt;br /&gt;Es importante tener un archivo persistence.xml en la carpeta WEB-INF de tu proyecto que es donde estara la configuracion de tu JPA.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_q2MDZ-53E-o/SehPuhUwX5I/AAAAAAAAAHE/ttUWaMUOVbQ/s1600-h/persistenceXml.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 256px;" src="http://1.bp.blogspot.com/_q2MDZ-53E-o/SehPuhUwX5I/AAAAAAAAAHE/ttUWaMUOVbQ/s320/persistenceXml.JPG" alt="" id="BLOGGER_PHOTO_ID_5325594220003614610" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Bien una vez que tenemos el archivo de configuracion y las clases persistentes ¿como hacer que la clase persistente termine como tabla en la BD? basicamente con este Codigo:&lt;br /&gt;&lt;br /&gt;&lt;p&gt;- Primero creamos un EntityManager que nos permita manipular y trabajar con  los objeto Entity:&lt;/p&gt; &lt;p&gt;&lt;code&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;String UNIDAD_DE_PERSISTENCIA = “DOCSPU”;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;EntityManagerFactory  factory = Persistence.createEntityManagerFactory(UNIDAD_DE_PERSISTENCIA,  System.getProperties());&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;em = factory.createEntityManager();&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;Como ves, el nombre que uso es “DOCSPU”, esto es porque asi lo tenemos  definido en el fichero “persistence.xml”, asi sabe como recuperar las clases y  propiedades que corresponden a esta unidad de persistencia. Si tu cambiaste el  nombre en el XML, aqui deberias poner el que hayas usado.&lt;/p&gt; &lt;p&gt;Una vez creada la EntityManager, ya es muy simple, abrir una transaccion e  incluso almacenar elementos (Entity) en la base de datos. Un ejemplo para  insertar un “Usuario” podria ser:&lt;/p&gt; &lt;p style="color: rgb(102, 0, 204);"&gt;&lt;code&gt;em.getTransaction().begin();&lt;br /&gt;Usuario u = new  Usuario();&lt;br /&gt;u.setId(100);&lt;br /&gt;u.setName(”jose”);&lt;br /&gt;u.setEmail(”notengo@gmail.com”);&lt;br /&gt;em.persist(u);&lt;br /&gt;em.flush();&lt;br /&gt;em.getTransaction().commit();&lt;/code&gt;&lt;/p&gt; &lt;p&gt;Como observareis, hemos recuperado una transaccion (getTransaction), instanciado  un objeto usuario, asignado valores a sus atributos, lo hemos “persistido”  (almacenado) en la base de datos con “persist” y por ultimo un commit de la  transaccion.Y aqui cierro la entrada de hoy , la proxima entrada hablar de como Consultar en JPA.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332410656758620773-7895961703368035309?l=albeticom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://albeticom.blogspot.com/feeds/7895961703368035309/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332410656758620773&amp;postID=7895961703368035309' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332410656758620773/posts/default/7895961703368035309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332410656758620773/posts/default/7895961703368035309'/><link rel='alternate' type='text/html' href='http://albeticom.blogspot.com/2009/04/jpa-java-persistence-api.html' title='JPA  (JAVA PERSISTENCE API)'/><author><name>Albeticom</name><uri>http://www.blogger.com/profile/11192951582468528916</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_q2MDZ-53E-o/SehPuhUwX5I/AAAAAAAAAHE/ttUWaMUOVbQ/s72-c/persistenceXml.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332410656758620773.post-5481780318492080723</id><published>2009-04-03T00:58:00.000-07:00</published><updated>2009-04-03T01:01:26.151-07:00</updated><title type='text'>Instalacion JSF</title><content type='html'>Requisitos:&lt;br /&gt;S.O:WIN XP&lt;br /&gt;JDK 1.5.0_6&lt;br /&gt;TOMCAT 5.5.16&lt;br /&gt;JavaServer Faces v 1.1 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Descargamos el kit de desarrollo de Java de en lace:&lt;br /&gt;&lt;a href="http://java.sun.com/j2se/1.5.0/download.jsp" target="_blank"&gt;http://java.sun.com/j2se/1.5.0/download.jsp&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Se recomienda crear ArchivosDePrograma sin espacio. Una vez instalado vamos a las variables de entorno y modificamos la variable PATH agregandole la ruta donde esta el directorio bin de la instalacion de Java por ejemplo:&lt;br /&gt;&lt;br /&gt;C:\ArchivosDePrograma\Java\jdk1.5.0_06\bin&lt;br /&gt;&lt;br /&gt;Descargamos el servidor Tomcat del enlace:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://tomcat.apache.org/download-55.cgi" target="_blank"&gt;http://tomcat.apache.org/download-55.cgi&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Instalar la version completa para  añadir Examples asi podremos disponer de las librerias standard.jar y jstl.jar , ubicadas en c:\ArchivosDePrograma\Tomcat5.5\webapps\jsp-examples\WEB-INF\lib, necesarias para cualquier aplicación JSF. En cuanto al directorio por comodidad:c:\ArchivosDePrograma\Tomcat5.5&lt;br /&gt;El puerto sera por defecto 8080.&lt;br /&gt;&lt;br /&gt;Es necesario agregar la variable JAVA_HOME para que apunte al directorio donde se haya instalado el JDK ( para que Tomcat sepa donde buscar el compilador de Java y demas utilidades) por ejemplo:&lt;br /&gt;C:\ArchivosDePrograma\Java\jdk1.5.0_06&lt;br /&gt;&lt;br /&gt;Establezca la variable CATALINA_HOME para que apunte al directorio donde instalo el Tomcat por ejemplo:&lt;br /&gt;C:\ArchivoDePrograma\Tomcat5.5&lt;br /&gt;&lt;br /&gt;Y volvemos a modificar la variable PATH para añadir el directorio bin de Tomcat ejemplo:&lt;br /&gt;&lt;br /&gt;C:\ArchivoDePrograma\Tomcat5.5.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332410656758620773-5481780318492080723?l=albeticom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://albeticom.blogspot.com/feeds/5481780318492080723/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332410656758620773&amp;postID=5481780318492080723' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332410656758620773/posts/default/5481780318492080723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332410656758620773/posts/default/5481780318492080723'/><link rel='alternate' type='text/html' href='http://albeticom.blogspot.com/2009/04/instalacion-jsf.html' title='Instalacion JSF'/><author><name>Albeticom</name><uri>http://www.blogger.com/profile/11192951582468528916</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332410656758620773.post-275529014992955681</id><published>2008-06-05T00:08:00.001-07:00</published><updated>2008-06-05T03:48:57.439-07:00</updated><title type='text'>Swing</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_q2MDZ-53E-o/SEeRF1CtSkI/AAAAAAAAACM/Racv4pkxcIo/s1600-h/swing_component_hierarchy.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_q2MDZ-53E-o/SEeRF1CtSkI/AAAAAAAAACM/Racv4pkxcIo/s320/swing_component_hierarchy.gif" alt="" id="BLOGGER_PHOTO_ID_5208291023401077314" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;Swing&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;Es muy importante entender y asimilar el hecho de que Swing es una extensión del AWT, y no un sustituto encaminado a reemplazarlo. Aunque esto sea verdad en algunos casos en que los componentes de Swing se corresponden a componentes del AWT; por ejemplo, el JButton de Swing puede considerarse como un sustituto del Button del AWT, y una vez que se usen los botones de Swing se puede tomar la decisión de no volver a utilizar jamás un botón de AWT, pero, la funcionalidad básica de Swing descansa sobre el AWT. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;Swing proporciona un conjunto completo de Componentes, todos ellos lightweight, es decir, ya no se usan componentes "peer" dependientes del sistema operativo, y además, Swing está totalmente escrito en Java. Todo ello redunda en una mayor funcionalidad en manos del programador, y en la posibilidad de mejorar en gran medida la cosmética de los interfaces gráficos de usuario.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;Son muchas las ventajas que ofrece el uso de Swing. Por ejemplo, la navegación con el teclado es automática, cualquier aplicación Swing se puede utilizar sin ratón, sin tener que escribir ni una línea de código adicional. Las etiquetas de información, o "tool tips", se pueden crear con una sola línea de código. Además, Swing aprovecha la circunstancia de que sus Componentes no están renderizados sobre la pantalla por el sistema operativo para soportar lo que llaman "pluggable look and feel", es decir, que la apariencia de la aplicación se adapta dinámicamente al sistema operativo y plataforma en que esté corriendo.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332410656758620773-275529014992955681?l=albeticom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://albeticom.blogspot.com/feeds/275529014992955681/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332410656758620773&amp;postID=275529014992955681' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332410656758620773/posts/default/275529014992955681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332410656758620773/posts/default/275529014992955681'/><link rel='alternate' type='text/html' href='http://albeticom.blogspot.com/2008/06/swing.html' title='Swing'/><author><name>Albeticom</name><uri>http://www.blogger.com/profile/11192951582468528916</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_q2MDZ-53E-o/SEeRF1CtSkI/AAAAAAAAACM/Racv4pkxcIo/s72-c/swing_component_hierarchy.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332410656758620773.post-6530871230144666605</id><published>2008-05-28T00:14:00.000-07:00</published><updated>2008-05-28T01:15:15.343-07:00</updated><title type='text'>AWT y swing</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_q2MDZ-53E-o/SD0HrvfcfSI/AAAAAAAAACE/X5kZCdo3afQ/s1600-h/AWT.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_q2MDZ-53E-o/SD0HrvfcfSI/AAAAAAAAACE/X5kZCdo3afQ/s320/AWT.jpg" alt="" id="BLOGGER_PHOTO_ID_5205325192374287650" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;Hoy vamos hablar de AWT y swing, AWT es una libreria de Java para crear la parte grafica (Ventanas , Botones , etc) y swing es una extensión o mejora de AWT , en el esquema que tenemos en la foto de la entrada tenemos  la herencia de clases, como podeis ver todas las clases heredan de Componet, bien expliquemos un poco.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;Container:  Es un contenedor  y por lo tanto, también puede contener a mas container,&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt; para simplificarlo seria la ventana de la interfaz grafica&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;. Se utiliza junto a un Layout ( ahora explicaremos que es un Layout ) , permitiendo que aparezcan varios objetos en nuestras interfaces para el usuario.Hay dos tipos de clases que heredan de Container Window y Panel, Window es la clase de la tipica ventana que estamos acostumbrados a ver, Panel  como su propio nombre indica  es un simple Panel sin botones maximizar, minimizar , cerrar.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;Como ya comentamos antes ,cada Container tiene su Layout que sirve para administrar la posicion de los componentes dentro de un Container , &lt;/span&gt;&lt;a style="color: rgb(51, 102, 255);" href="http://java.sun.com/j2se/1.5.0/docs/api/"&gt;Aqui&lt;/a&gt;&lt;span style="color: rgb(51, 102, 255);"&gt; teneis el enlace a la interfaz LayoutManager de las API de java.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;De Component tambien heredan una serie de clases que sirven para crear Botones , campos de textos , Listas , etc... objetos que permiten que el usuario se comunique con nuestra aplicación.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332410656758620773-6530871230144666605?l=albeticom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://albeticom.blogspot.com/feeds/6530871230144666605/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332410656758620773&amp;postID=6530871230144666605' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332410656758620773/posts/default/6530871230144666605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332410656758620773/posts/default/6530871230144666605'/><link rel='alternate' type='text/html' href='http://albeticom.blogspot.com/2008/05/awt-y-swing.html' title='AWT y swing'/><author><name>Albeticom</name><uri>http://www.blogger.com/profile/11192951582468528916</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_q2MDZ-53E-o/SD0HrvfcfSI/AAAAAAAAACE/X5kZCdo3afQ/s72-c/AWT.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332410656758620773.post-3594142897678639578</id><published>2008-05-27T02:25:00.000-07:00</published><updated>2008-05-27T02:43:27.406-07:00</updated><title type='text'>¿Como manejar el blog usando Java?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_q2MDZ-53E-o/SDvUF_fcfRI/AAAAAAAAAB8/Eq-BQgn7qQg/s1600-h/blog_or_not_p.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_q2MDZ-53E-o/SDvUF_fcfRI/AAAAAAAAAB8/Eq-BQgn7qQg/s320/blog_or_not_p.jpg" alt="" id="BLOGGER_PHOTO_ID_5204986993764498706" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;Esta aplicación a la cual le voy a dedicar esta entrada tiene como finalidad poder acceder a un blog , mediante las API java de Blogger (que permite a un programa java conectarse a nuestro blog para pedir las entradas o publicar nuevas) para ello usaremos estas clases e interfaz.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255); font-weight: bold;"&gt;GmailUsuario&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;Sirve para almacenar la cuenta y la clave del usuario del blog.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;Atributos:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;cuentaMail (String)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;clave (String)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/eticom-master-java/source/browse/trunk/eticom-blogger/src/eticom/blogger/model/GmailUsuario.java"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Enlace a la clase&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&lt;span style="font-weight: bold;"&gt;EntradaBlog:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;Clase para almacenar una entrada de blog.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;Atributos&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;titulo (String)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;contenido (String)&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/eticom-master-java/source/browse/trunk/eticom-blogger/src/eticom/blogger/model/EntradaBlog.java"&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;Enlace a la clase&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&lt;span style="font-weight: bold;"&gt;ServicioBloggerImpl&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;Clase que implementa la interface ServicioBlogger (tiene como metodo conectar(GmailUsuario)) , esta clase se usa para conectar con el blog y recibir las entradas usando las API.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;Metodos:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;conectar&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;:Devuelve un objeto ConexionBlogger.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;Requiere un objeto de clase GoogleService que a su vez este objeto como parametro necesita el usuario y la clave que tenemos almacenado en un objeto de clase GmailUsuario.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;dameEntradas:&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt; Devuelve una Colección de Entradas.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;Requiere una Colección de tipo EntradaBlog , un objeto de clase Feed(objecto  donde estan almacenadas todas las entradas del Blog con su cuerpo y su titulo) y uno de clase URL que le asignaremos la ruta del blog para mas tarde cargar a nuestro objeto Feed con todas las entradas del blog y poder trabajar con ellas.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/eticom-master-java/source/browse/trunk/eticom-blogger/src/eticom/blogger/services/impl/ServicioBloggerImpl.java"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Enlace a la clase&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;CLASES DE EXCEPCIONES&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/eticom-master-java/source/browse/trunk/eticom-blogger/src/eticom/blogger/excepciones/ErrorBlogger.java"&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;ErrorBlogger&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/eticom-master-java/source/browse/trunk/eticom-blogger/src/eticom/blogger/excepciones/BlogNoExistenteException.java"&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;BlogNoExistenteException&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/eticom-master-java/source/browse/trunk/eticom-blogger/src/eticom/blogger/excepciones/ErrorConexion.java"&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;ErrorConexion.java&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;En el enlace al repositorio podreis ver las pruebas realizadas y el proyecto entero:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://code.google.com/p/eticom-master-java/source/browse/trunk"&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;Repositorio&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332410656758620773-3594142897678639578?l=albeticom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://albeticom.blogspot.com/feeds/3594142897678639578/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332410656758620773&amp;postID=3594142897678639578' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332410656758620773/posts/default/3594142897678639578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332410656758620773/posts/default/3594142897678639578'/><link rel='alternate' type='text/html' href='http://albeticom.blogspot.com/2008/05/esta-aplicacion-la-cual-le-voy-dedicar.html' title='¿Como manejar el blog usando Java?'/><author><name>Albeticom</name><uri>http://www.blogger.com/profile/11192951582468528916</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_q2MDZ-53E-o/SDvUF_fcfRI/AAAAAAAAAB8/Eq-BQgn7qQg/s72-c/blog_or_not_p.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332410656758620773.post-8330275392445936061</id><published>2008-05-23T08:44:00.000-07:00</published><updated>2008-05-23T10:56:01.702-07:00</updated><title type='text'>Colecciones Tipos y formas de Recorrerla.</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_q2MDZ-53E-o/SDcFJ_fcfQI/AAAAAAAAAB0/Zbe1qJbx7D0/s1600-h/diagrama.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_q2MDZ-53E-o/SDcFJ_fcfQI/AAAAAAAAAB0/Zbe1qJbx7D0/s320/diagrama.jpg" alt="" id="BLOGGER_PHOTO_ID_5203633563670183170" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Java tiene tres interfaces de colecciones Map, List y Set a continuación explicare cada una de ellas:&lt;/span&gt;   &lt;span style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;&lt;br /&gt;Map: Interfaz de colección de elementos pares los cuales van con  una clave y un valor muy utiles cuando se quiere hacer una busqueda por la clave.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Set: Interfaz que como pecualiaridad tiene que no deja meter dos elementos en las colecciones iguales.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;&lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;List:&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);" class="normal"&gt;La ordenación es la característica más     importante de una Lista, asegurando que los elementos siempre se mantendrán en una     secuencia concreta.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt; Para ordenar elementos &lt;/span&gt;&lt;tt style="color: rgb(204, 0, 0);"&gt;List&lt;/tt&gt;&lt;span style="color: rgb(51, 51, 255);"&gt; podemos usar el método &lt;/span&gt;&lt;tt style="color: rgb(204, 0, 0);"&gt;sort()&lt;/tt&gt;&lt;span style="color: rgb(51, 51, 255);"&gt; de la clase &lt;/span&gt;&lt;tt style="color: rgb(153, 0, 0);"&gt;java.util.Collections&lt;/tt&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;. Podemos pasarle al método un objeto con la interaz &lt;/span&gt;&lt;tt style="color: rgb(204, 0, 0);"&gt;List&lt;/tt&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;, o podemos pasarle un objeto con la interfaz &lt;/span&gt;&lt;tt style="color: rgb(204, 0, 0);"&gt;List&lt;/tt&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;y un&lt;/span&gt; &lt;tt style="color: rgb(204, 0, 0);"&gt;Comparator&lt;/tt&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;. Si los elementos de la coleción &lt;/span&gt;&lt;tt style="color: rgb(204, 0, 0);"&gt;List&lt;/tt&gt;&lt;span style="color: rgb(51, 51, 255);"&gt; son todos del mismo tipo de clase y esa clase implementa el interface &lt;/span&gt;&lt;tt style="color: rgb(204, 0, 0);"&gt;Comparable&lt;/tt&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;, simplemente podemos llamar a &lt;/span&gt;&lt;tt style="color: rgb(204, 0, 0);"&gt;Collections.sort()&lt;/tt&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;.&lt;br /&gt;&lt;/span&gt;&lt;pre&gt;public static class Comparando&lt;br /&gt;    implements Comparator {&lt;br /&gt;  public int comparar(Object elemento1,&lt;br /&gt;      Object elemento2) {&lt;br /&gt;    String lower1 =&lt;br /&gt;      element1.toString().toLowerCase();&lt;br /&gt;    String lower2 =&lt;br /&gt;      element2.toString().toLowerCase();&lt;br /&gt;    return lower1.compareTo(lower2);&lt;br /&gt;  }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;TreeSet&lt;/span&gt; es una clase que utiliza la interfaz &lt;span style="color: rgb(204, 0, 0);"&gt;Set &lt;/span&gt;  y que sirve para ordenar la colección segun como definas el metodo &lt;span style="color: rgb(204, 0, 0);"&gt;compareTo() &lt;/span&gt;de la interfaz comparable que hay que implementar , que comfiguremos al crearnos el objeto &lt;span style="color: rgb(204, 0, 0);"&gt;TreeSet.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);" class="normal"&gt;Las formas de recorrerla son varias:&lt;br /&gt;&lt;br /&gt;Tipico for ejemplo:&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;for(int i=0; i&lt;lista.size();i++){&gt;&lt;/lista.size();i++){&gt;&lt;/span&gt; &lt;span style="color: rgb(51, 0, 51);"&gt;Object o = lista.get(i);&lt;/span&gt; &lt;span style="color: rgb(51, 0, 51);"&gt;System.out(o);&lt;/span&gt;  &lt;span style="color: rgb(51, 0, 51);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Desde i = 0 hasta que i sea mayor o igual que la magnitud de la lista imprime el elemento Object de la lista.&lt;br /&gt;&lt;br /&gt;foreach: Por cada elemento de la lista tipo Alumno imprime el elemento de la lista:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;foreach(Alumno al:lista){&lt;/span&gt; &lt;span style="color: rgb(51, 0, 51);"&gt;System.out(al.getNombre());&lt;/span&gt; &lt;span style="color: rgb(51, 0, 51);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Itinerator:Usando un objeto de clase Iterator podemos recorrer la coleccion por el indice:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;List pruebaItinerator = new LinkedList();&lt;br /&gt;&lt;br /&gt;for (Iterator iterator = pruebaItinerator.iterator(); iterator.hasNext();) {&lt;br /&gt; String t = (String) iterator.next();&lt;br /&gt;&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332410656758620773-8330275392445936061?l=albeticom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://albeticom.blogspot.com/feeds/8330275392445936061/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332410656758620773&amp;postID=8330275392445936061' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332410656758620773/posts/default/8330275392445936061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332410656758620773/posts/default/8330275392445936061'/><link rel='alternate' type='text/html' href='http://albeticom.blogspot.com/2008/05/colecciones-tipos-y-formas-de.html' title='Colecciones Tipos y formas de Recorrerla.'/><author><name>Albeticom</name><uri>http://www.blogger.com/profile/11192951582468528916</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_q2MDZ-53E-o/SDcFJ_fcfQI/AAAAAAAAAB0/Zbe1qJbx7D0/s72-c/diagrama.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332410656758620773.post-3684857803351555739</id><published>2008-05-23T08:16:00.000-07:00</published><updated>2008-05-23T11:04:33.417-07:00</updated><title type='text'>Programación usando pruebas</title><content type='html'>&lt;span style="color: rgb(51, 51, 255);"&gt;Hola buenas hoy vamos a ver otra forma de programar usando el pluggin TestNG , para ello nos crearemos una carpeta Soucer  aparte de src llamada test donde tendremos la misma estructura de paquetes que la clases que queramos probar por ejemplo:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_q2MDZ-53E-o/SDbh2PfcfNI/AAAAAAAAABc/9xYT8SidPg0/s1600-h/capturaTest.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_q2MDZ-53E-o/SDbh2PfcfNI/AAAAAAAAABc/9xYT8SidPg0/s320/capturaTest.JPG" alt="" id="BLOGGER_PHOTO_ID_5203594741460794578" border="0" /&gt;&lt;/a&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Poniendo la misma estructura de paquetes y bajandote e instalando el pluggin TestNG y la libreria podremos probar nuestro codigo incluso antes de crearlo mediante el metodo assert() que se encarga de asegurar que la condicion que le pasas entre parentesis es cierta ejemplo:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;@Test&lt;br /&gt; public void pruebaCalendar() {&lt;br /&gt;     Calendar fecha = Calendar.getInstance();&lt;br /&gt;     assert (fecha.get(Calendar.YEAR) == 2008);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Ya comentamos en la entrada anterior que para que el TestNG testee un trozo de codigo debemos poner @Test encima del metodo o clase.Bien explico el ejemplo creamos un objeto de clase Calendar por defecto Calendar coje la fecha del sistema si no la modificamos, por eso podemos asegurar que el año de nuestro objeto Calendar es 2008 y ya estamos seguro de que en cualquier momento , que usemos ese codigo el valor del año sera 2008 ya que TestNG si no es cierto te lo indica.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_q2MDZ-53E-o/SDbkyvfcfOI/AAAAAAAAABk/Ur7aEzdGkmY/s1600-h/Testcaptura2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_q2MDZ-53E-o/SDbkyvfcfOI/AAAAAAAAABk/Ur7aEzdGkmY/s320/Testcaptura2.JPG" alt="" id="BLOGGER_PHOTO_ID_5203597979866135778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Ventajas: Las ventajas son  de mucho valor ya que te aseguras de todo lo que estas programando constantemente y puedes probar que tu codigo siempre esta bien y al final siempre te ahorras tiempo de debug que en algunos casos se hace bastante pesado.&lt;br /&gt;&lt;br /&gt;Desventaja:Al principio quizas se hace un poco pesado estar probando cada trozo de tu codigo y eso hace que te relentices un poco programando.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;La estructura de paquetes sirve para no tener que importar las clases y poder acceder a los atributos y metodos que no sean private y el escenario de prueba es donde se declaran los objetos que mas tarde usaremos en la prueba , ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;@Test&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;public void pruenaAlumno(){&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;////////// Escenario de pruebas&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;Alumno a1= new Alumno();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;Alumno a2= new Alumno();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;////////// FIN Escenario de pruebas&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;boolean res= a1.equals(a2);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;assert(b):"No son iguales"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332410656758620773-3684857803351555739?l=albeticom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://albeticom.blogspot.com/feeds/3684857803351555739/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332410656758620773&amp;postID=3684857803351555739' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332410656758620773/posts/default/3684857803351555739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332410656758620773/posts/default/3684857803351555739'/><link rel='alternate' type='text/html' href='http://albeticom.blogspot.com/2008/05/programacion-usando-pruebas.html' title='Programación usando pruebas'/><author><name>Albeticom</name><uri>http://www.blogger.com/profile/11192951582468528916</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_q2MDZ-53E-o/SDbh2PfcfNI/AAAAAAAAABc/9xYT8SidPg0/s72-c/capturaTest.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332410656758620773.post-2707430797557982709</id><published>2008-05-17T09:42:00.000-07:00</published><updated>2008-05-17T10:00:41.768-07:00</updated><title type='text'>Anotaciones @Test ,@BeforeTest , @AfterTest</title><content type='html'>&lt;a href="http://bp0.blogger.com/_q2MDZ-53E-o/SC8OzVkORdI/AAAAAAAAABU/mBUeVmUwSns/s1600-h/101307523_48905fdb35.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5201392369761404370" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_q2MDZ-53E-o/SC8OzVkORdI/AAAAAAAAABU/mBUeVmUwSns/s320/101307523_48905fdb35.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="color:#3333ff;"&gt;Buenas hoy voy hablar de estas anotaciones en especial ya que me parecen interesantes y la vereis amenudo en mi codigo (si no sabes que son las anotaciones mas abajo hay una entrada que lo explica) bien dicho esto comencemos:&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="color:#3333ff;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="color:#3333ff;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="color:#3333ff;"&gt;@Test: Cuando tu haces una clase Test, para avisar que a de leer esa parte del codigo al Testing, colocamos @Test encima del metodo o clase que deseemos ,veamos el ejemplo:&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;@Test&lt;br /&gt;public void pruebaOrden() {&lt;br /&gt;coches.add(coche3);&lt;br /&gt;coches.add(coche1);&lt;br /&gt;Collections.sort(coches);&lt;br /&gt;assert (coches.get(0).equals(coche1));&lt;br /&gt;}&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="color:#3333ff;"&gt;@BeforeTest: Cuando lo que deseas es que lea antes que @Test otro trozo de codigo colocas esta anotación, esta anotación es muy util para declarar variables antes de usarlas en los metodos que contienen una @Test, por ejemplo:&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="color:#3333ff;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;@BeforeTest&lt;br /&gt;public void inicializarRecursos() {&lt;br /&gt;coches = new ArrayList();&lt;br /&gt;coche1 = new Coche("Opel", "Astra");&lt;br /&gt;coche2 = new Coche("Opel", "Astra");&lt;br /&gt;coche3 = new Coche("Renault", "T5");&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;}&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="color:#3333ff;"&gt;@AfterTest:Y por ultimo cuando lo que quieres es que tu trozo de codigo selea despues del @Test colocas esta anotaión, es my util para limpiar las variables despues de un @Test, un ejemplo es:&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="color:#3333ff;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;@AfterTest&lt;br /&gt;public void limpiarRecursos() {&lt;br /&gt;coche1 = null;&lt;br /&gt;coche2 = null;&lt;br /&gt;coche3 = null;&lt;br /&gt;coches = null;&lt;br /&gt;}&lt;/p&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332410656758620773-2707430797557982709?l=albeticom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://albeticom.blogspot.com/feeds/2707430797557982709/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332410656758620773&amp;postID=2707430797557982709' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332410656758620773/posts/default/2707430797557982709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332410656758620773/posts/default/2707430797557982709'/><link rel='alternate' type='text/html' href='http://albeticom.blogspot.com/2008/05/anotaciones-test-beforetest-aftertest.html' title='Anotaciones @Test ,@BeforeTest , @AfterTest'/><author><name>Albeticom</name><uri>http://www.blogger.com/profile/11192951582468528916</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_q2MDZ-53E-o/SC8OzVkORdI/AAAAAAAAABU/mBUeVmUwSns/s72-c/101307523_48905fdb35.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332410656758620773.post-2632949590610682733</id><published>2008-05-16T08:45:00.000-07:00</published><updated>2008-05-16T10:51:34.356-07:00</updated><title type='text'>Enumerations</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_q2MDZ-53E-o/SC2zWFkORcI/AAAAAAAAABM/o2sAx19vq4Q/s1600-h/programacion.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_q2MDZ-53E-o/SC2zWFkORcI/AAAAAAAAABM/o2sAx19vq4Q/s320/programacion.jpg" alt="" id="BLOGGER_PHOTO_ID_5201010336715392450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Hoy vamos a dedicarle la entrada a los objetos de clase Enumerations, dichos objetos  tienen como finalidad organizar las constantes , expliquemoslo con un ejemplo :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Nos Creamos nuestro Objeto Enum tiene como valores constantes A,B,C y D que son los niveles de acceso&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;&lt;br /&gt;package eticom.nums;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;/**&lt;/span&gt; &lt;span style="color: rgb(51, 0, 51);"&gt;&lt;br /&gt;* @author Administrador&lt;/span&gt; &lt;span style="color: rgb(51, 0, 51);"&gt;&lt;br /&gt;*&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(51, 0, 51);"&gt; */&lt;/span&gt; &lt;span style="color: rgb(51, 0, 51);"&gt;&lt;br /&gt;&lt;br /&gt;public enum NivelDeAcceso {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;A, B, C, D&lt;/span&gt;  &lt;span style="color: rgb(51, 0, 51);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;-------------------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Nos creamos la clase Acceso que tendra como atributo niveldeaceso un objeto de mi enums que creamos con anterioridad  y redifiniremos el metodo equals para poder comparar el objeto(si tienes dudas de como se hace mas abajo esta la explicación)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;package eticom;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;import eticom.nums.NivelDeAcceso;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;* @author Administrador&lt;/span&gt; &lt;span style="color: rgb(51, 0, 51);"&gt;&lt;br /&gt;*&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;*/&lt;/span&gt; &lt;span style="color: rgb(51, 0, 51);"&gt;&lt;br /&gt;public class Acceso {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;public NivelDeAcceso niveldeacceso;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        * Constructor por defecto&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        */&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;public Acceso() {&lt;/span&gt; &lt;span style="color: rgb(51, 0, 51);"&gt;&lt;br /&gt;}&lt;/span&gt;  &lt;span style="color: rgb(51, 0, 51);"&gt;&lt;br /&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        * Constructor que crea el objeto pasandole un objeto de clase enum&lt;/span&gt; &lt;span style="color: rgb(51, 0, 51);"&gt;&lt;br /&gt;*&lt;/span&gt; &lt;span style="color: rgb(51, 0, 51);"&gt;&lt;br /&gt;* @param nivelParametro&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        *            Mandatory&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;public Acceso(NivelDeAcceso nivelParametro) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;               niveldeacceso = nivelParametro;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;/**&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(51, 0, 51);"&gt;* Redefinir Metodo Equals&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(51, 0, 51);"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;public boolean equals(Object a) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;    boolean respuesta = false;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        Acceso u = (Acceso) a;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(51, 0, 51);"&gt;        if (u.niveldeacceso.equals(this.niveldeacceso)) {&lt;br /&gt;&lt;/span&gt;             &lt;span style="color: rgb(51, 0, 51);"&gt;respuesta = true;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        };&lt;/span&gt; &lt;span style="color: rgb(51, 0, 51);"&gt;&lt;br /&gt;return respuesta;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;--------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Bien  ahora nos crearemos la prueba y veremos la utilidad a todo esto, haremos una prueba que comparara un objeto de clase Acceso con otro de clase Acceso si  quieres comparar Acceso literalmente y por algun casual te equivocas al escribir el valor  ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;String admin = new String("Acceso A");&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(51, 0, 51);"&gt;String usuario = new String("acceso A");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;assert(admin.equals(usuario)):"No son iguales"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Dara fallo ya que uno empieza en mayusculas y otro en minuscula pero si nos creamos un enums estamos obligados a escoger un valor constante si no no compilara ,bien despues de esta parrafada hagamos la prueba:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt; *&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;package eticom;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;/**&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(51, 0, 51);"&gt;* @author Administrador&lt;/span&gt; &lt;span style="color: rgb(51, 0, 51);"&gt;&lt;br /&gt;* &lt;/span&gt; &lt;span style="color: rgb(51, 0, 51);"&gt;&lt;br /&gt;*/&lt;/span&gt; &lt;span style="color: rgb(51, 0, 51);"&gt;&lt;br /&gt;import org.testng.annotations.Test;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;import eticom.nums.NivelDeAcceso;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;@Test&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;public class AccesoTest {&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;    /**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;* Prueba de la clase Acceso&lt;/span&gt; &lt;span style="color: rgb(51, 0, 51);"&gt;&lt;br /&gt;*/&lt;/span&gt; &lt;span style="color: rgb(51, 0, 51);"&gt;    &lt;/span&gt; &lt;span style="color: rgb(51, 0, 51);"&gt;&lt;br /&gt;public void pruebaAcceso() {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;    Acceso admin = new Acceso(NivelDeAcceso.A);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;    Acceso usuario = new Acceso(NivelDeAcceso.B);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;    Acceso usuario2 = new Acceso(NivelDeAcceso.A);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;    assert (admin.equals(usuario2)) : "No tienen el mismo acceso";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;    assert (!admin.equals(usuario)) : "tienen el mismo acceso";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;}&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332410656758620773-2632949590610682733?l=albeticom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://albeticom.blogspot.com/feeds/2632949590610682733/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332410656758620773&amp;postID=2632949590610682733' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332410656758620773/posts/default/2632949590610682733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332410656758620773/posts/default/2632949590610682733'/><link rel='alternate' type='text/html' href='http://albeticom.blogspot.com/2008/05/enumerations.html' title='Enumerations'/><author><name>Albeticom</name><uri>http://www.blogger.com/profile/11192951582468528916</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_q2MDZ-53E-o/SC2zWFkORcI/AAAAAAAAABM/o2sAx19vq4Q/s72-c/programacion.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332410656758620773.post-4377329950301723914</id><published>2008-05-15T03:39:00.000-07:00</published><updated>2008-05-15T04:06:08.161-07:00</updated><title type='text'>Interface Java</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_q2MDZ-53E-o/SCwYc1kORbI/AAAAAAAAABE/81CURabMzFI/s1600-h/interface088wb6.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_q2MDZ-53E-o/SCwYc1kORbI/AAAAAAAAABE/81CURabMzFI/s320/interface088wb6.jpg" alt="" id="BLOGGER_PHOTO_ID_5200558553400493490" border="0" /&gt;&lt;/a&gt;&lt;br /&gt; &lt;h2 style="color: rgb(51, 51, 255);"&gt;&lt;a name="Concepto de Interface"&gt;Concepto:&lt;br /&gt;&lt;/a&gt;&lt;/h2&gt; &lt;p style="color: rgb(51, 51, 255);"&gt;El concepto de Interface , trata de una clase donde todos los métodos son abstractos . Permite al diseñador de clases establecer la forma de una clase (nombres de métodos, listas de argumentos y tipos de retorno, pero no bloques de código).&lt;br /&gt;&lt;/p&gt; &lt;div style="color: rgb(51, 51, 255);" align="left"&gt;   &lt;p&gt;Para crear una interface, se utiliza la palabra clave interface en lugar de   class. La interface puede definirse public o sin modificador de acceso, y   tiene el mismo significado que para las clases. Todos los métodos que declara   una interface son siempre public. &lt;/p&gt; &lt;/div&gt; &lt;div align="left"&gt;   &lt;p style="color: rgb(51, 51, 255);"&gt;Para indicar que una clase implementa los métodos de una interface se   utiliza la palabra clave implements. El compilador se encargará de verificar   que la clase efectivamente declare e implemente todos los métodos de la   interface. Una clase puede implementar más de una interface.&lt;/p&gt; &lt;p style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="color: rgb(51, 51, 255);" align="left"&gt;   &lt;h2&gt;&lt;a name="Declaración y uso"&gt;Declaración y uso&lt;/a&gt;&lt;/h2&gt; &lt;/div&gt; &lt;div style="color: rgb(51, 51, 255);" align="left"&gt;   &lt;p&gt;Una interface se declara:&lt;/p&gt; &lt;/div&gt; &lt;div style="color: rgb(51, 0, 51);" align="left"&gt;   &lt;blockquote&gt;     &lt;blockquote&gt;       &lt;p&gt;&lt;span style="font-family:Courier;"&gt;&lt;b&gt;interface&lt;/b&gt; &lt;i&gt;nombre_interface&lt;/i&gt; {&lt;br /&gt;        &lt;i&gt;tipo_retorno&lt;/i&gt; &lt;i&gt;nombre_metodo &lt;/i&gt;( &lt;i&gt;lista_argumentos       &lt;/i&gt;) ;&lt;br /&gt;        . . .&lt;br /&gt;    }&lt;/span&gt;&lt;/p&gt;     &lt;/blockquote&gt;   &lt;/blockquote&gt; &lt;/div&gt; &lt;p style="color: rgb(51, 102, 255);"&gt;Por ejemplo:&lt;/p&gt; &lt;blockquote style="color: rgb(51, 0, 51);"&gt;   &lt;blockquote&gt;     &lt;p&gt;&lt;span style="font-family:Courier;"&gt;&lt;b&gt;interface&lt;/b&gt; Bailarin{&lt;br /&gt;    void bailar();&lt;br /&gt;   &lt;br /&gt;  }&lt;/span&gt;&lt;/p&gt;   &lt;/blockquote&gt; &lt;/blockquote&gt; &lt;p style="color: rgb(51, 51, 255);"&gt;Y una clase que implementa la interface:&lt;/p&gt; &lt;blockquote&gt;   &lt;blockquote&gt;     &lt;p style="color: rgb(51, 0, 51);"&gt;&lt;span style="font-family:Courier;"&gt;&lt;b&gt;class&lt;/b&gt; Persona &lt;b&gt;extends&lt;/b&gt; Object     &lt;b&gt;implements&lt;/b&gt; Bailarin{&lt;br /&gt;     String tipoDeBaile;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="color: rgb(51, 0, 51);"&gt;&lt;span style="font-family:Courier;"&gt; &lt;span style="font-weight: bold;"&gt;public String&lt;/span&gt; bailar(String tipo) {&lt;/span&gt;&lt;/p&gt;&lt;p style="color: rgb(51, 0, 51);"&gt;&lt;span style="font-family:Courier;"&gt;tipoDeBaile=tipo;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="color: rgb(51, 0, 51);"&gt;&lt;span style="font-family:Courier;"&gt;return "El tipo de baile que baila este bailarín es:"+tipoDeBaile;&lt;/span&gt;&lt;/p&gt;&lt;p style="color: rgb(51, 0, 51);"&gt;&lt;span style="font-family:Courier;"&gt;}&lt;br /&gt;  &lt;br /&gt;   &lt;br /&gt;  }&lt;/span&gt;&lt;/p&gt;     &lt;p style="color: rgb(51, 51, 255);"&gt;&lt;span style="font-family:Courier;"&gt;Java te permite crear un objeto de una clase pero usando su interface de esta manera si por algun casual cambias la clase no se modificaria el codigo , simplemente implementariamos la interface a la nueva case, ejemplo:&lt;/span&gt;&lt;/p&gt; &lt;p style="color: rgb(51, 102, 255);"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="color: rgb(51, 102, 255);"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Nos estamos creando el objecto a de clase persona pero usando la interface en este caso si cambiamos la clase y hacemos una nueva ,llamada Persona2 no cambiariamos el codigo (a.bailar("Tango");) solo cambiariamos (&lt;/span&gt;&lt;span style="font-family:Courier;"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Bailarin a = new Persona2();) ya que al usar la interface te obliga a usar solo los metodos redefinidos de la interface en la clase.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="color: rgb(51, 0, 51);"&gt;&lt;span style="font-family:Courier;"&gt;Bailarin a = new Persona();&lt;/span&gt;&lt;/p&gt;&lt;p style="color: rgb(51, 0, 51);"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;a.bailar("Tango");&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/blockquote&gt; &lt;/blockquote&gt; &lt;h2&gt;&lt;a name="Declaración y uso"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;/p&gt; &lt;h2&gt;&lt;a name="Referencias a Interfaces"&gt;&lt;/a&gt;&lt;/h2&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332410656758620773-4377329950301723914?l=albeticom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://albeticom.blogspot.com/feeds/4377329950301723914/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332410656758620773&amp;postID=4377329950301723914' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332410656758620773/posts/default/4377329950301723914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332410656758620773/posts/default/4377329950301723914'/><link rel='alternate' type='text/html' href='http://albeticom.blogspot.com/2008/05/concepto-el-concepto-de-interface-trata.html' title='Interface Java'/><author><name>Albeticom</name><uri>http://www.blogger.com/profile/11192951582468528916</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_q2MDZ-53E-o/SCwYc1kORbI/AAAAAAAAABE/81CURabMzFI/s72-c/interface088wb6.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332410656758620773.post-8600752737913358719</id><published>2008-05-13T23:16:00.000-07:00</published><updated>2008-05-15T04:12:38.808-07:00</updated><title type='text'>Redefinir el metodo Equals</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_q2MDZ-53E-o/SCrQLlkORaI/AAAAAAAAAA8/ySZzW7v82bo/s1600-h/UNA%2520TRASLACI%25D3N%2520IGUAL%2520A%25202R.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_q2MDZ-53E-o/SCrQLlkORaI/AAAAAAAAAA8/ySZzW7v82bo/s320/UNA%2520TRASLACI%25D3N%2520IGUAL%2520A%25202R.JPG" alt="" id="BLOGGER_PHOTO_ID_5200197617233839522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;Muy buenas hoy vamos a ver como se redefine el metodo equals de la clase objects para poder utilizarlos en nuestra clase, para ello nos crearemos nuestra clase y definimos un metodo equals de este modo:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;package eticom;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;import eticom.anotaciones.Desarrollador;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;@Desarrollador(nombre="Alberto")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;public class Usuario {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        String nombre;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        String clave;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        public Usuario() {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;                nombre="Jesus";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;                clave="1111";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        public Usuario(String nombre, String clave) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;                this.nombre = nombre;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;                this.clave = clave;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;                &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;        /*&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;Al llamarlo igual que el metodo de la clase Object redefiniremos el metodo pasandole un objeto  y haciendo un casting al object para convertirlo en obejeto de nuestra clase.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;       */&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: rgb(51, 0, 51);"&gt;  public boolean equals(Object a) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;                boolean respuesta=false;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;                Usuario u = (Usuario)a;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;                if(u.nombre.equals(this.nombre)&amp;amp;&amp;amp; u.clave.equals(this.clave)){&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;                        respuesta=true;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;                        &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;                };&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;                return respuesta;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;                &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;Hagamos la prueba:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;package eticom;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;import org.testng.annotations.Test;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;import eticom.anotaciones.Desarrollador;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;import eticom.anotaciones.FechaProyecto;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;public class UsuarioTest {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        String nombre;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        String clave;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        public UsuarioTest() {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        public UsuarioTest(String nombre, String clave) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;                this.nombre = nombre;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;                this.clave = clave;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        @Test&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        public void pruebaEquals() {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;                Usuario uno = new Usuario();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;                Usuario dos = new Usuario();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;                assert (uno.equals(dos)) : "No son iguales";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;                Usuario tres = new Usuario("pepe", "3333");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;                Usuario cuatro = new Usuario("juan", "7777");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;                assert (!tres.equals(cuatro)) : "Son iguales";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;}&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332410656758620773-8600752737913358719?l=albeticom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://albeticom.blogspot.com/feeds/8600752737913358719/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332410656758620773&amp;postID=8600752737913358719' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332410656758620773/posts/default/8600752737913358719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332410656758620773/posts/default/8600752737913358719'/><link rel='alternate' type='text/html' href='http://albeticom.blogspot.com/2008/05/redefinir-el-metodo-equals.html' title='Redefinir el metodo Equals'/><author><name>Albeticom</name><uri>http://www.blogger.com/profile/11192951582468528916</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_q2MDZ-53E-o/SCrQLlkORaI/AAAAAAAAAA8/ySZzW7v82bo/s72-c/UNA%2520TRASLACI%25D3N%2520IGUAL%2520A%25202R.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332410656758620773.post-5741059308746183983</id><published>2008-05-12T23:46:00.000-07:00</published><updated>2008-05-15T04:11:44.019-07:00</updated><title type='text'>Anotaciones</title><content type='html'>&lt;span style="color: rgb(51, 102, 255);"&gt;Las anotaciones son un mecanismo para dotar a las clases de Meta información. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt; Para acceder a la información de una anotación en tiempo de ejecución utilizamos el API de reflexión: java.reflection, que se ha completado en Java 5 para tener acceso a las anotaciones.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt; Las anotaciones se utilizan para anotar nuestro código, y la información de la anotación puede estar relacionada con la seguridad (permisos, usuarios, roles), persistencia (transacciones, cache, tablas, esquemas ...), logging ... dando lugar a un nuevo complemento de la POO, la Programación Orientada a Atributos&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;Un ejemplo de anotacion:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;Esta es la anotacion que nos creamos&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;-----------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;package eticom.anotaciones;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;import java.lang.annotation.ElementType;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;import java.lang.annotation.Retention;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;import java.lang.annotation.RetentionPolicy;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;import java.lang.annotation.Target;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;@Retention(RetentionPolicy.RUNTIME)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;@Target({ElementType.METHOD, ElementType.TYPE})&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;public @interface Desarrollador {&lt;/span&gt;&lt;br /&gt;      &lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        String nombre();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;---------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;Y aqui en la clase UsuarioTest es donde la usamos&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;--------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;package eticom;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;import org.testng.annotations.Test;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;import eticom.anotaciones.Desarrollador;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;public class UsuarioTest {&lt;/span&gt;&lt;br /&gt;      &lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        @Test&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        public void pruebaAnotacionAutorExiste(){&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;                assert(Usuario.class.isAnnotationPresent(Desarrollador.class)):" no existe la anotación";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;                Desarrollador annotation = Usuario.class.getAnnotation(Desarrollador.class);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;                assert(annotation.nombre().equals("Juan")):" no coincide el valor con Juan";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;}&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332410656758620773-5741059308746183983?l=albeticom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://albeticom.blogspot.com/feeds/5741059308746183983/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332410656758620773&amp;postID=5741059308746183983' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332410656758620773/posts/default/5741059308746183983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332410656758620773/posts/default/5741059308746183983'/><link rel='alternate' type='text/html' href='http://albeticom.blogspot.com/2008/05/anotaciones.html' title='Anotaciones'/><author><name>Albeticom</name><uri>http://www.blogger.com/profile/11192951582468528916</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332410656758620773.post-8462198029807112804</id><published>2008-05-08T23:24:00.000-07:00</published><updated>2008-05-09T09:47:00.466-07:00</updated><title type='text'>Etiquetas JSF , Seam y AJAX</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_q2MDZ-53E-o/SCR__Oy5j8I/AAAAAAAAAA0/HSluXErfK-U/s1600-h/tecnologia4.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_q2MDZ-53E-o/SCR__Oy5j8I/AAAAAAAAAA0/HSluXErfK-U/s320/tecnologia4.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5198420594172465090" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;JSF&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;Este primer enlace es de JSF y te viene  como son los tags en JSF y como serian en HTML esta bastante bien ya que para el que sepa HTML le sera muy facil entenderlos :)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&lt;a style="color: rgb(51, 51, 255); font-weight: bold;" href="http://www.exadel.com/tutorial/jsf/jsftags-guide.html"&gt;http://www.exadel.com/tutorial/jsf/jsftags-guide.html&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;SEAM&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;Bien aqui teneis un manual de Seam una tecnología que tiene mucho que decir, para el que no conozca esta tecnología ,Seam es un producto creado por Gavin King el creador de Hibernate y que busca la creación rápida de aplicaciones web java:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a style="color: rgb(51, 51, 255); font-weight: bold;" href="http://docs.jboss.com/seam/2.0.0.GA/reference/en/html/index.html"&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;http://docs.jboss.com/seam/2.0.0.GA/reference/en/html&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a style="color: rgb(51, 51, 255); font-weight: bold;" href="http://docs.jboss.com/seam/2.0.0.GA/reference/en/html/index.html"&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;/index.html&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);font-family:webdings;" &gt;AJAX&lt;/span&gt;&lt;b&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 255);"&gt;Definicion:AJAX&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(102, 51, 255);"&gt;, acrónimo de &lt;/span&gt;&lt;i style="color: rgb(102, 51, 255);"&gt;&lt;b&gt;A&lt;/b&gt;synchronous &lt;b&gt;J&lt;/b&gt;avaScript &lt;b&gt;A&lt;/b&gt;nd &lt;b&gt;X&lt;/b&gt;ML&lt;/i&gt;&lt;span style="color: rgb(102, 51, 255);"&gt; (&lt;/span&gt;&lt;span style="text-decoration: underline; color: rgb(102, 51, 255);"&gt;Javascript&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;asíncrono y&lt;/span&gt; &lt;span style="text-decoration: underline; color: rgb(102, 51, 255);"&gt;XML&lt;/span&gt;&lt;span style="color: rgb(102, 51, 255);"&gt;), es una técnica de desarrollo &lt;/span&gt;&lt;span style="text-decoration: underline; color: rgb(102, 51, 255);"&gt;web&lt;/span&gt;&lt;span style="color: rgb(102, 51, 255);"&gt; para crear aplicaciones interactivas o  (Rich Internet Applications). Éstas se ejecutan en el &lt;/span&gt;&lt;span style="text-decoration: underline; color: rgb(102, 51, 255);"&gt;&lt;span style="font-weight: bold;"&gt;RIA &lt;/span&gt;cliente&lt;/span&gt;&lt;span style="color: rgb(102, 51, 255);"&gt;, es decir, en el navegador de los usuarios y mantiene comunicación &lt;/span&gt;&lt;span style="text-decoration: underline; color: rgb(102, 51, 255);"&gt;asíncrona&lt;/span&gt;&lt;span style="color: rgb(102, 51, 255);"&gt; con el servidor en segundo plano. De esta forma es posible realizar cambios sobre la misma página sin necesidad de recargarla. Esto significa aumentar la interactividad, velocidad y usabilidad en la misma.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="color: rgb(51, 51, 255);" href="http://labs.jboss.com/file-access/default/members/jbossajax4jsf/freezone/docs/devguide/index.html"&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;http://labs.jboss.com/file-access/default/members/&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a style="color: rgb(51, 51, 255);" href="http://labs.jboss.com/file-access/default/members/jbossajax4jsf/freezone/docs/devguide/index.html"&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;jbossajax4jsf&lt;/span&gt;&lt;/a&gt;&lt;a style="color: rgb(51, 51, 255);" href="http://labs.jboss.com/file-access/default/members/jbossajax4jsf/freezone/docs/devguide/index.html"&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;/freezone/docs/devguide/index.html&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332410656758620773-8462198029807112804?l=albeticom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://albeticom.blogspot.com/feeds/8462198029807112804/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332410656758620773&amp;postID=8462198029807112804' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332410656758620773/posts/default/8462198029807112804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332410656758620773/posts/default/8462198029807112804'/><link rel='alternate' type='text/html' href='http://albeticom.blogspot.com/2008/05/etiquetas-jsf-y-seam.html' title='Etiquetas JSF , Seam y AJAX'/><author><name>Albeticom</name><uri>http://www.blogger.com/profile/11192951582468528916</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_q2MDZ-53E-o/SCR__Oy5j8I/AAAAAAAAAA0/HSluXErfK-U/s72-c/tecnologia4.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332410656758620773.post-6035815508878869630</id><published>2008-05-08T08:36:00.000-07:00</published><updated>2008-05-09T04:29:34.025-07:00</updated><title type='text'>Master Java</title><content type='html'>&lt;span style="color: rgb(51, 51, 255);"&gt;Hola buenas me presento , me llamo Alberto y estoy iniciando mi camino como programador .En este blog ire añadiendo los conocimientos que adquiera en el nuevo curso de Java que comenzare hoy y en las practicas de empresa que efectuo en la empresa Viavansi&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332410656758620773-6035815508878869630?l=albeticom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://albeticom.blogspot.com/feeds/6035815508878869630/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332410656758620773&amp;postID=6035815508878869630' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332410656758620773/posts/default/6035815508878869630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332410656758620773/posts/default/6035815508878869630'/><link rel='alternate' type='text/html' href='http://albeticom.blogspot.com/2008/05/master-java.html' title='Master Java'/><author><name>Albeticom</name><uri>http://www.blogger.com/profile/11192951582468528916</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
