CATÁLOGO
Consultar equipos y categorías desde persistencia.
← PROYECTOSPROJECT_003 / CASO TÉCNICO
ALQUILER DE EQUIPOS
Sistema Java para consultar equipos y categorías, registrar alquileres con cantidad y fecha prevista y procesar devoluciones mediante API.
01 / RETO
Consultar equipos y categorías desde persistencia.
Registrar equipo, cantidad y fecha prevista de finalización.
Listar alquileres con fechas, devolución y estado.
Cerrar el ciclo del alquiler mediante una operación específica.
02 / ARQUITECTURA
Selecciona un nodo para revisar su responsabilidad.
03 / EVIDENCIA DEL PROYECTO
GET para listar y POST para crear alquileres.
Operación específica de devolución por id.
Objetos de transferencia que modelan el dominio.
Acceso a datos dividido por responsabilidad.
index.jsp y alta.jsp con scripts dedicados.
04 / IMPLEMENTACIÓN Y DECISIONES
Fragmentos seleccionados directamente de los archivos que componen el proyecto adjuntado.
private void insertar(HttpExchange e)throws Exception{
String j=new String(e.getRequestBody().readAllBytes(),StandardCharsets.UTF_8);
int id=Integer.parseInt(ApiPrincipal.valor(j,"equipoId"));
int cant=Integer.parseInt(ApiPrincipal.valor(j,"cantidad"));
SoundOnlineAlquiler.realizarAlquiler(id,cant,LocalDateTime.now().plusMonths(1));
ApiPrincipal.responder(e,201,"{\"mensaje\":\"Alquiler realizado\"}");
}
private void listar(HttpExchange e)throws Exception{
StringBuilder j=new StringBuilder("[");
for(Alquiler a:SoundOnlineAlquiler.obtenerAlquileres()){
if(j.length()>1)j.append(",");
String d=a.getFechaDevolucion()==null?"null":"\""+a.getFechaDevolucion()+"\"";
j.append(String.format(
"{\"id\":%d,\"equipoId\":%d,\"cantidad\":%d,\"fechaAlquiler\":\"%s\",\"fechaFinPrevista\":\"%s\",\"fechaDevolucion\":%s,\"estado\":\"%s\"}",
a.getId(),a.getEquipoId(),a.getCantidad(),a.getFechaAlquiler(),
a.getFechaFinPrevista(),d,a.getEstado()));
}
ApiPrincipal.responder(e,200,j.append("]").toString());
}
}Lee equipo y cantidad del cuerpo de la petición, genera una fecha prevista y delega la operación en la capa lógica.
package api;
import java.io.*;
import com.sun.net.httpserver.*;
import logicaalquiler.*;
public class DevolverAlquilerHandler implements HttpHandler{
public void handle(HttpExchange e)throws IOException{
try{
if(!e.getRequestMethod().equals("POST")){
ApiPrincipal.responder(e,405,"{\"error\":\"Metodo no permitido\"}");return;
}
String q=e.getRequestURI().getQuery();
int id=Integer.parseInt(q.split("=")[1]);
SoundOnlineAlquiler.devolverAlquiler(id);
ApiPrincipal.responder(e,200,"{\"mensaje\":\"Equipo devuelto correctamente\"}");
}catch(Exception x){
ApiPrincipal.responder(e,400,"{\"error\":\""+ApiPrincipal.esc(x.getMessage())+"\"}");
}
}
}Recibe el identificador del alquiler y delega la devolución; devuelve una respuesta JSON de confirmación.
PROJECT_003 / CIERRE
JAVA × MYSQL × REST × JSP