Aplicación de línea de comandos desarrollada en Java para gestionar usuarios, artículos y compras. El proyecto implementa una arquitectura por capas basada en modelos de dominio, repositorios en memoria, servicios de aplicación y una interfaz de comandos.
Fue desarrollado como trabajo académico por Alejandro Corona Ballester y Mario Reyes Morales.
- Alta, consulta, listado, actualización y eliminación de usuarios.
- Validación del formato del correo electrónico y del nombre completo.
- Prevención de usuarios duplicados mediante la dirección de correo.
- Alta, consulta, listado y eliminación de artículos.
- Gestión de artículos con nombre, precio y categoría.
- Creación y eliminación de compras.
- Asociación de compras con usuarios y artículos.
- Consulta de compras por usuario.
- Consulta de usuarios y compras relacionadas con un artículo.
- Carga inicial de datos de ejemplo mediante un seeder.
- Interfaz de línea de comandos con ayuda integrada.
- Excepciones específicas para errores de validación, duplicados y elementos inexistentes.
El proyecto separa las responsabilidades en varios niveles:
- Modelos de dominio: representan usuarios, artículos, compras y líneas de compra.
- Repositorios: proporcionan operaciones de persistencia en memoria mediante colecciones Java.
- Servicios: contienen las reglas de negocio y coordinan el acceso a los repositorios.
- Interfaz de comandos: permite ejecutar las operaciones de la aplicación desde la terminal.
- Inyección de dependencias: configura y conecta los repositorios, servicios y comandos mediante
DependencyInjector. - Seeder: inserta usuarios, artículos y una compra inicial para facilitar la ejecución de la aplicación.
La clase upm.App actúa como punto de entrada y pone en marcha la aplicación a través del inyector de dependencias.
La interfaz de línea de comandos incluye operaciones para trabajar con las entidades principales:
| Comando | Descripción |
|---|---|
help |
Muestra la ayuda disponible. |
create-user |
Crea un usuario a partir de su correo y nombre completo. |
list-users |
Lista todos los usuarios. |
create-article |
Crea un artículo con categoría, nombre y precio. |
list-articles |
Lista todos los artículos. |
delete-article |
Elimina un artículo mediante su identificador. |
create-order |
Crea una compra para un usuario y un artículo. |
list-orders |
Lista todas las compras. |
list-orders-by-user |
Lista las compras asociadas a un usuario. |
delete-order |
Elimina una compra mediante su identificador. |
- Java 21
- Maven
- JUnit 5
- Log4j 2
- Colecciones y streams de Java
- Arquitectura orientada a servicios y repositorios
- Plantillas UML y documentación técnica
- JDK 21 o compatible con Java 21.
- Apache Maven.
- IntelliJ IDEA u otro entorno compatible con proyectos Maven.
-
Clonar el repositorio:
git clone https://github.com/mario-reyes-morales/ECommerce-Backend-Java.git
-
Abrir el proyecto como proyecto Maven.
-
Esperar a que IntelliJ IDEA descargue las dependencias.
-
Ejecutar la clase principal
upm.App.
Para compilar el proyecto y ejecutar las pruebas:
mvn clean testPara empaquetar la aplicación:
mvn packageLa aplicación se inicia ejecutando la clase principal upm.App desde el entorno de desarrollo.
src/
main/
java/upm/
App.java
data/
models/ modelos y excepciones de dominio
repositories/ repositorios en memoria y datos iniciales
presentation/
cli/ interfaz y comandos de terminal
view/ presentación de resultados
services/ reglas de negocio y servicios
resources/ recursos de la aplicación
test/
java/ pruebas automatizadas
resources/ recursos de pruebas
docs/ diagramas UML y documentación técnica
pom.xml configuración Maven
LICENSE.md licencia MIT
La carpeta docs contiene los diagramas UML y los materiales utilizados para documentar la evolución del diseño del sistema. También incluye las convenciones de código Java empleadas en el proyecto.
- Alejandro Corona Ballester
- Mario Reyes Morales
El proyecto se desarrolló de forma colaborativa, compartiendo el análisis, el diseño de la arquitectura, la implementación de las funcionalidades y la elaboración de la documentación.
Este proyecto se distribuye bajo la licencia MIT. Consulta el archivo LICENSE.md para conocer sus condiciones de uso.