Uso de BasicExpression y nuevos métodos
Introducción
Es este ejercicio modificaremos el servicio de ofertas. En la primera parte, filtraremos las peticiones mediante el uso de BasicExpression en la propia petición REST. En la siguiente parte, haremos nuevos métodos para que filtren los datos con BasicExpression.
¿Qué es una BasicExpression?
Una BasicExpression sirve para filtrar las peticiones de una manera compleja que delimite la respuesta dentro de unas condiciones. Las BasicExpression se componen de dos operandos (derecho e izquierdo) y un operador. El operando izquierdo puede contener el nombre de una columna u otra BasicExpression, el operando derecho puede contener un valor u otra BasicExpression y un operador que indicará la relación entre ellos. De tal manera que se puede crear una BasicExpression, que de manera resumida, filtre la petición mediante esta condición:
- START_DATE >= 2020-01-01: En este caso, el operando izquierdo es el valor de la columna, START_DATE, el operando derecho es el valor de dicha columna y el operador es el símbolo >= . De esta manera, obligaremos a que la condición de la consulta sea que devuelva todos los registros cuya fecha de inicio sea superior o igual al 1 de Enero del 2020.
- (START_DATE >= 2020-01-01) AND (END_DATE <= 2020-06-30): En este caso existe una BasicExpression cuyo operando izquierdo es BasicExpression, el operando derecho es otra BasicExpression y el operador es el símbolo AND.
BasicExpression en el cuerpo de una petición REST
Una BasicExpression en la petición REST se escribe en el filter de esta misma petición, indicando que es una BasicExpression a través de la anotación @basic_expression, y dentro de ella, lop para el operando izquierdo, op para el operador, y rop para el operando derecho. Si queremos usar múltiples BasicExpression, basta con anidar dentro de cada operando una BasicExpression nueva. Crearemos algunas peticiones en Postman para usar las BasicExpression.
Tipo de petición | Petición | Cuerpo petición |
---|---|---|
POST | localhost:33333/offers/offer/search | |
POST | localhost:33333/offers/offer/search |
BasicExpression en el método de una petición REST
En caso de que queramos crear un método nuevo que podamos invocar desde una URL específica, sin tener que añadir nosotros una BasicExpression en el cuerpo de una petición REST. En este caso, crearemos dos nuevos métodos dentro del controlador REST de las ofertas. Uno que envíe todas las ofertas del presente año y otro que, pasado en la URL un parámetro, nos devuelva las ofertas de ese año en concreto.
La anotacion @RequestMapping
permite indicar la ruta para la que responderá este método, junto con el tipo de petición que se haga e indicar el tipo de respuesta a devolver.
En las condiciones de la consulta, para indicar que el valor es una BasicExpression, tenemos que añadir, como clave EXPRESSION_KEY_UNIQUE_IDENTIFIER, o lo que es lo mismo, SQLStatementBuilder.ExtendedSQLConditionValuesProcessor.EXPRESSION_KEY
, una constante que contiene la cadena anterior.
OfferRestController.java
- hr
- hr-api
- src
- main
- java
- com
- ontimize
- hr
- api
- core
- service
- ICandidateService.java
- IMasterService.java
- IOfferService.java
- IUserService.java
- service
- core
- api
- hr
- ontimize
- com
- java
- main
- pom.xml
- src
- hr-boot
- src
- main
- java
- com
- ontimize
- hr
- ServerApplication.java
- hr
- ontimize
- com
- resources
- application.yml
- java
- main
- pom.xml
- src
- hr-model
- src
- main
- db
- templateDB.script
- templateDB.txt
- java
- com
- ontimize
- hr
- model
- core
- dao
- CandidateDao.java
- EducationDao.java
- ExperienceLevelDao.java
- OfferCandidatesDao.java
- OfferCandidateStatusDao.java
- OfferDao.java
- OfferStatusDao.java
- OriginDao.java
- ProfileDao.java
- StatusDao.java
- UserDao.java
- UserRoleDao.java
- service
- CandidateService.java
- MasterService.java
- OfferService.java
- UserService.java
- dao
- core
- model
- hr
- ontimize
- com
- resources
- dao
- CandidateDao.xml
- EducationDao.xml
- ExperienceLevelDao.xml
- OfferCandidatesDao.xml
- OfferCandidateStatusDao.xml
- OfferDao.xml
- OfferStatusDao.xml
- OriginDao.xml
- placeholders.properties
- ProfileDao.xml
- RoleDao.xml
- RoleServerPermissionDao.xml
- ServerPermissionDao.xml
- StatusDao.xml
- UserDao.xml
- UserRoleDao.xml
- dao
- db
- main
- pom.xml
- src
- hr-ws
- src
- main
- java
- com
- ontimize
- hr
- ws
- core
- rest
- CandidateRestController.java
- MainRestController.java
- MasterRestController.java
- OfferRestController.java
- TestRestController.java
- UserRestController.java
- rest
- core
- ws
- hr
- ontimize
- com
- java
- main
- pom.xml
- src
- .gitignore
- Archetype_ontimize_boot.postman_collection.json
- pom.xml
- hr-api