Hola.
Estoy haciendo un proyecto en la Universidad, en la que tenemos que programar, y tenemos que hacer uso de JavaLite.
Hay una parte del código del programa que no entiendo y quiero saber si alguien me puede guiar. Tiene que ver con el uso de validaciones. Entranto a la página oficial de JavaLite: http://javalite.io/validations puedo ver la siguiente explicación:
Validation of attribute presence
In order to add any validation, a model will declare a static bloc at the top of a class definition, and invoke all validation declaration inside this block:
public class Person extends Model {
static{
validatePresenceOf("first_name", "last_name");
}
}
The method Model.validatePresenceOf() takes a vararg of strings, which allows to specify a list of attribute names (column names) in one line of code.
Sucede que no entiendo bien qué hace validatePresenceOf().
Busco info en Internet pero no encuentro. ¿Alguien me puede guiar?
Indica que esos campos no pueden estar vacíos. Por ejemplo el típico formulario que rellenas y tienes los campos nombre y apellido, pues si tienes asociado un modelo con esos campos y usas esa sentencia, al intentar crear un registro de ese modelo con esos campos vacíos saltará una excepción.
Triggering of validation
triggering of validations causes these actions:
Call Model.validate() method (will not throw exception)
Call Model.save() method (will not throw exception)
Call Model.saveIt() method (will throw exception) -> aquí
Call Model.createIt() method (will throw exception) -> y aquí
Los errores se almacenan en un mapa que te provee el método del modelo, errors().
http://javalite.io/validations#usage-in-a-web-application
Muchas gracias!
Ahora voy entendiendo un poco más. Y aprovecho para consultarte de paso, cómo funciona el isValid().
Por ejemplo, tengo este código:
@Test
public void validatePrecenseOfUsernames(){
User user = new User();
user.set("username", "");
assertEquals(user.isValid(), false);
}
Yo en principio pensé que user.isValid() siempre es igual a True, pero no se si estoy en lo cierto. ¿Tu qué opinas?
Ni idea, eso tienes que consultar los métodos que diposne el modelo base. Yo no he usado Java Lite, en cambio he usado otro frameworks y funcionan de forma similar, no son nada del otro mundo, es una cuestión de gustos ( y licencias).
El ejemplo que muestras parece ser parte de un código de pruebas. Aserciones.
http://javalite.io/jspec
sobre la clase Model...
https://github.com/javalite/activejdbc/blob/master/activejdbc/src/main/java/org/javalite/activejdbc/Model.java
Bueno, voy a seguir investigando.
Te agradezco mucho por el github de la clase Model, muy buen material de consulta.
Sí, ese código es porque estamos usando JUnit :D Tenemos que hacer varios tests.
Saludos!