Un componente en Java con Validaciones incluidas
Actualmente me he encontrado desarrollando simplemente para la parte de la vista de las aplicaciones hechas en java, por lo cual me es necesario llevar a cabo diferentes validaciones, especialmente en las cajas de texto, tales como son: si el campo es requerido, si un email es correcto, una fecha, un campo de tipo moneda, y hasta un RFC para personas físicas y morales, por lo cual me he dado a la tarea de realizar un componente que extienda de un JTextField pero que ya tenga incluida cierta funcionalidad que me permita realizar las validaciones mediante propiedades de dicho componente.
En esta primera versión solo pondré las validaciones más sencillas, a algunos tal vez les baste con eso pero otros más van a encontrarle más utilidad si se le agrega alguna validación extra o bien si en su trabajo requieren que dicho componente haga algo especial, por lo cual si este es el caso, y varios necesitan lo mismo, basta con comentarlo y en cuanto tenga un poco de tiempo le agregaría la nueva funcionalidad.
Veamos un ejemplo de uso:
En la imagen del inicio de este post vimos como nos muestra un alert y un mensaje cuando los campos a validar estan incorrectos y una vez que dichos campos se han llenado correctamente el mismo borra tanto las etiquetas de alerta como los mensajes de error, veamos el mismo ejemplo con datos correctos:
En este ejemplo solo se ven 4 de 8 validaciones posibles que hace este Validador, comenta si te intereza y si te gustaria obtener las clases de dicho componente.
Si quieres obtenerlo comenta ya sea aqui o en mi blog personal... espero les intereze..
Fuente: http://robertoleon.com.mx/un-componente-en-java-con-validaciones-incluidas/
- Shadonwk's blog
- Inicie sesión o regístrese para enviar comentarios
JSR303
JSR 303 define anotaciones para validaciones de datos en beans, pero es algo muy abstracto aún, pues solamente se definen las anotaciones. Hasta donde sé, solamente Hibernate está a punto (o parece que apenas liberaron la semana pasada) un mecanismo de validación utilizando estas anotaciones (antes usaban sus propias anotaciones). Tu proyecto podría ser el segundo y estaría muy interesante que validaras las mismas anotaciones, primero porque estás implementando un estándar de Java (que siempre son abstractos) y segundo porque se puede usar tu proyecto en conjunto con Hibernate; hago un objeto, le pongo anotaciones en las propiedades que quiero validar, y entonces si lo edito en la interfaz gráfica Swing con tu proyecto me salen ahi mismo las validaciones y además al momento de guardar también se procesan esas validaciones, lo cual es muy útil si después hago una parte de dicho proyecto en web o un batch en línea de comando, etc. porque Hibernate seguiría aplicando sus validaciones, pero siempre que se use Swing podría presentar errores de inmediato al usuario utilizando tu proyecto.
Está bastante buena tu idea, creo que valdría la pena que le eches un ojo a esto del JSR 303. Y si quieres ofrecer el código fuente de tus clases, te recomiendo que leas acerca de las licencias de software libre para que utilices alguna que te convenga (GPL, LGPL, ASL, etc), y puedes hospedar tu código en Google Code, SourceForge, Tigris, etc etc. Hay varios lugares donde puedes hospedar un proyecto de software libre sin costo para ti y te dan varias ventajas como tu propio web site, un sistema de control de versiones, puedes poner noticias, tienes un foro de soporte, etc.
Genial..
Me parece muy muy bueno tu aporte, en realidad si es necesario tener un componente que te ayude a esas fastidiosas validaciones que muchas veces nos hacen perder algo de tiempo. Me agrada tu idea, muy creativa y si lo llegas a hospedar tu código como dice @ezamudio me encantaría verlo y usarlo :)
Buen aporte
Es muy funcional...para cualquier tipo de proyectos
Saludos!
Gracias
Gracias por los comentarios, la verdad pensaba redistribuirlo directamente desde mi página, sin embargo creo que no es mala idea subirlo a google code, de licencias no entiendo mucho asi que agradeceria sus recomendaciones, quiero algo que sea gratuito y libre de uso y modificacion claro siempre conservando los creditos del autor.
@Zamudio, en cuanto tenga tiempo reviso JRS 303 de momento, asi como esta ahorita es lo que me quito muchas lineas de codigo repetitivo, y como dije, si alguien quiere modificarlo adelante...
Espero que hoy por la noche pueda subir el codigo y lo tendre listo para compartirlo
Saludos.
GPL / LGPL / ASL
Tu código lo puedes distribuir como una librería, porque no es un programa completo.
Si usas GPL, solamente se podrá usar en programas GPL, no se puede incluir en aplicaciones comerciales porque estarían violando la licencia.
Si usas LGPL, se puede incluir en aplicaciones comerciales, por ejemplo lo puedo usar yo en un programa que hago para vender empaquetado. Y únicamente estoy obligado a incluir el código de tu librería, junto con cualquier modificación que yo le haya hecho al mismo. Es decir la librería por sí misma sigue bajo los términos de GPL pero no se extiende al resto de mi programa.
Con ASL es algo muy similar a LGPL.
Hola que tal, al fin logre
Hola que tal, al fin logre subir el codigo de este componente a google code. la direccion es esta:
con subversion:
con mercurial:
nota: creo que con mercurial no se subio bien, ahi si alguien me echa la mano estaria encantado, con svn ya esta arriba espero les ayude.
Control de versiones
Tengo entendido que en Google Code para cada proyecto escoges si quieres Subversion o Mercurial, no puedes usar ambos. Lo que veo aquí son dos proyectos distintos y el ValidatorRobe está vacío su repositorio. Vas a mantener ambos? Cómo vas a sincronizar entre ellos? La única finalidad de duplicar todo es que alguien pueda usar uno u otro sistema de control de versiones? Eso no tiene caso. Si vas a usar subversion, los que quieran el código tendrán que usar subversion. No puedes acomodar los caprichos de otras personas en tu proyecto. Si el segundo proyecto lo creaste solamente para tener lo mismo pero con Mercurial lo que yo te recomiendo es que mejor borres ese proyecto y te quedes solamente con el primero en subversion, que ahí sí veo que ya subiste código. Las discusiones de que si Mercurial es mejor o Subversion es mejor nunca van a terminar, cada uno tiene sus ventajas y si ya tomaste tu decisión, lo mejor es que te quedes usando SVN al menos por un tiempo, hasta que realmente te topes con una limitante que Mercurial te podria resolver y en ese momento ves si migras a Mercurial.
Gracias Zamudio, la verdad
Gracias Zamudio, la verdad si son dos proyectos diferentes.. y como tu dices la idea es borrar uno de los dos, sin embargo en una primera instanci quise subirlo en ambos para ver como funcionaban las dos tecnologias, pero como es evidente con mercurial no pude hacerlo bien, lo intentare despues, y para futuros cambios solo se haran me parece mas facil svn.
Espero tengas la oportunidad de probar y criticar mi codigo. Se que muchas cosas se podrian mejorar, y me gustaria conocer tu punto de vista, y el de todo aquel compañero desarrollador que asi desee darlo, de antemano muchas gracias.
Script kiddie ?
Bueno, la verdad es que este comment no lo quería hacer pero un twitt de la tarde me obliga.
En resumidas cuentas el código que aquí se publica: ES ROBADO.
Soy de las personas que están en contra de despreciar el trabajo de los todos, y peor robar el trabajo de otros.
El twitt que menciono venia de la cuenta de la misma persona que publica aquí el código (roberto leon), en el twitt anunciaba que había subido el código de sus validaciones, etc., ya hacia tiempo que había leído este post, pero me pareció que no tendría tanta importancia si no se divulgaba el código.
Viendo esto en la tarde me dispuse a bajarlo, cual fue mi sorpresa al encontrar exactamente las clases que utilizo en mi proyecto, clases que desarrollo otro compañero como componentes comunes de validación para unas pantallas que estamos trabajando con swing y lo peor es que ni siquiera nos pertenece el código, lo cual implicaría recursos legales fuertes al comprometer la seguridad de un proyecto tan grande! digo! mínimo una mención para el pobre wei que si se desvelo estudiando y programando no ? :P
Mi horror fue al revisar el código y ver que lo unico que cambia es el nombre de la clase y el nombre del autor ! #EPICFAIL !
El propósito de esto? crear conciencia a la gente que gusta de hacer este tipo de cosas, no es solo un copy/paste lo que están haciendo.
La verdad no tengo nada en contra de roberto, solo que si tengo mucho en contra de gente que realiza este tipo de practicas, despreciando el trabajo de otros.
Saludos !
hola que tal 043h68, si bien
hola que tal 043h68, si bien es cierto este codigo lo utilizamos en el proyecto, realmente no es exactamente el mismo codigo.. te invitaria a que revises el codigo que utilizamos en el proyecto y trates de correrlo de forma unitaria, en algun otro proyecto diferente solo copiando dos clases JTextFieldValidator y JButtonValidator, y si funciona, adelante, borro el codigo que esta en el repo de google, borro esta entrada, y borro la entrada en mi blog. Pero creeme que anque visualmente son iguales(este con el que usamos en el proyecto), detras de todo esto hay mas trabajo de mi parte, saludos...
Ahora bien, esto no es nada nuevo, ni desvelarse haciendo codigo excepcional, creo que cientos de personas, ya han echo lo mismo, inclusive yo ya lo habia echo antes, son solo simplemente expresiones regulares, lo que hago aqui, es unificarlo y compartirlo para evitarle trabajo a las personas que realmente lo quieran usar...
Script kiddies que renegais de serlo !
Con esto me dices todo:
Estoy muy de acuerdo contigo
, solo cambian cosas que no afectan el funcionamiento, ejemplo? los comentarios del autor jejejeje, solo que por mas que yo le cambie el logo a windows y le ponga 043h68, lo siento pero no es mío ;).
Mi intención no es que borres algo, la acción no cambiaria, lo que buscaba era que le dieras credito a la gente que SI trabajo en hacerlo y no solo en el copy/paste, es mas, te pido no lo borres...que este post quede en tu historial. :D
Doy por terminada mi participación en este post, en verdad que si insistes en querer creerte y engañar a los demas que es tuyo adelante, espero el autor del codigo comparta tu opinión ;)
Saludos !
Duda
Estoy en un proyecto donde empezamos a usar este tipo de validaciones, mi duda es acerca sobre si este tipo de validaciones soportan clases embedidas
desde mi clase taxPayer tengo una clase embedida direction, pero al parecer a esta clase direcction no le puedo aplicarle el JSR 303, no encontré nada en el manua.
@Embedded
private Direction direction;
Alguien podría compartir el
Alguien podría compartir el repositorio o el proyecto, en el link que esta en code,google.com no esta vacio u.u
ya no existe, se perdió :(
ya no existe, se perdió :(
Si se puede ver las clases en
Si se puede ver las clases en Source - Changes. Ahi esta todo el codigo :)
Validaciones
Me parece muy buen aporte.