# diegozip05/uchoteles architecture

> Architecture diagram of the GitHub repository diegozip05/uchoteles, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/diegozip05/uchoteles
- Repository: https://github.com/diegozip05/uchoteles

## Overview

UCHoteles is a hotel inventory and reservation business application. The visible workflow is hotel lookup, availability calculation against existing reservations, and reservation management; hotel administration is another documented-in-code capability. Business services depend on shared contracts and domain objects, with DAO implementations in a separate module. The README gives no feature detail, and the excerpts do not show the full reservation-service implementation or storage configuration, so those links are left unverified rather than presented as confirmed runtime calls.

Main entry points: [`UCHotelesBusiness/src/main/java/es/unican/ps/uchoteles/businesslayer/GestionHoteles.java`](https://github.com/diegozip05/uchoteles/blob/main/UCHotelesBusiness/src/main/java/es/unican/ps/uchoteles/businesslayer/GestionHoteles.java) (Hotel management), [`UCHotelesBusiness/src/main/java/es/unican/ps/uchoteles/businesslayer/GestionReservas.java`](https://github.com/diegozip05/uchoteles/blob/main/UCHotelesBusiness/src/main/java/es/unican/ps/uchoteles/businesslayer/GestionReservas.java) (Reservation management), [`UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/daolayer/IHotelesDAO.java`](https://github.com/diegozip05/uchoteles/blob/main/UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/daolayer/IHotelesDAO.java) (Hotel DAO contract), [`UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/daolayer/IReservasDAO.java`](https://github.com/diegozip05/uchoteles/blob/main/UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/daolayer/IReservasDAO.java) (Reservation DAO contract)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_services["Business services"]
  node_hotel_service["Hotel management"]
  node_reservation_service["Reservation management"]
end

subgraph group_contracts["Shared contracts"]
  node_business_contracts["Business interfaces"]
  node_hotel_dao_contract["Hotel DAO contract<br/>[IHotelesDAO.java]"]
  node_reservation_dao_contract["Reservation DAO contract<br/>[IReservasDAO.java]"]
  node_business_error["Business errors"]
  node_data_error["Access errors"]
end

subgraph group_domain["Hotel domain"]
  node_hotel_model["Hotel and rooms<br/>[Hotel.java]"]
  node_room_model["Room types<br/>[Habitacion.java]"]
  node_reservation_model["Reservation records<br/>[Reserva.java]"]
  node_reservation_line["Reservation lines"]
  node_customer_data["Customer details<br/>[DatosCliente.java]"]
  node_payment_data["Payment details<br/>[DatosPago.java]"]
  node_domain_types["Domain enums"]
end

subgraph group_persistence["Data access"]
  node_hotel_dao["Hotel data access<br/>[HotelesDAO.java]"]
  node_reservation_dao["Reservation data access<br/>[ReservasDAO.java]"]
end

node_user(("Hotel user"))

node_user -.->|"requests hotel operations"| node_hotel_service
node_user -.->|"requests reservations"| node_reservation_service
node_hotel_service -->|"looks up hotels"| node_hotel_dao_contract
node_hotel_service -->|"reads hotel reservations"| node_reservation_dao_contract
node_hotel_service -->|"checks room availability"| node_hotel_model
node_hotel_service -->|"checks reservation overlap"| node_reservation_model
node_hotel_service -->|"counts reserved rooms"| node_reservation_line
node_hotel_dao -.->|"implements contract"| node_hotel_dao_contract
node_reservation_dao -.->|"implements contract"| node_reservation_dao_contract
node_reservation_service -.->|"uses hotel access"| node_hotel_dao_contract
node_reservation_service -.->|"uses reservation access"| node_reservation_dao_contract
node_reservation_service -.->|"manages booking records"| node_reservation_model
node_reservation_service -.->|"implements service API"| node_business_contracts

click node_hotel_service "https://github.com/diegozip05/uchoteles/blob/main/UCHotelesBusiness/src/main/java/es/unican/ps/uchoteles/businesslayer/GestionHoteles.java"
click node_reservation_service "https://github.com/diegozip05/uchoteles/blob/main/UCHotelesBusiness/src/main/java/es/unican/ps/uchoteles/businesslayer/GestionReservas.java"
click node_business_contracts "https://github.com/diegozip05/uchoteles/tree/main/UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/businesslayer"
click node_hotel_dao_contract "https://github.com/diegozip05/uchoteles/blob/main/UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/daolayer/IHotelesDAO.java"
click node_reservation_dao_contract "https://github.com/diegozip05/uchoteles/blob/main/UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/daolayer/IReservasDAO.java"
click node_hotel_model "https://github.com/diegozip05/uchoteles/blob/main/UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/domain/Hotel.java"
click node_room_model "https://github.com/diegozip05/uchoteles/blob/main/UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/domain/Habitacion.java"
click node_reservation_model "https://github.com/diegozip05/uchoteles/blob/main/UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/domain/Reserva.java"
click node_reservation_line "https://github.com/diegozip05/uchoteles/blob/main/UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/domain/ReservaTipoHabitacion.java"
click node_customer_data "https://github.com/diegozip05/uchoteles/blob/main/UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/domain/DatosCliente.java"
click node_payment_data "https://github.com/diegozip05/uchoteles/blob/main/UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/domain/DatosPago.java"
click node_domain_types "https://github.com/diegozip05/uchoteles/tree/main/UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/domain"
click node_business_error "https://github.com/diegozip05/uchoteles/blob/main/UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/exceptions/OperacionNoValidaException.java"
click node_data_error "https://github.com/diegozip05/uchoteles/blob/main/UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/exceptions/DataAccessException.java"
click node_hotel_dao "https://github.com/diegozip05/uchoteles/blob/main/UCHotelesDAO/src/main/java/es/unican/ps/uchoteles/daolayer/HotelesDAO.java"
click node_reservation_dao "https://github.com/diegozip05/uchoteles/blob/main/UCHotelesDAO/src/main/java/es/unican/ps/uchoteles/daolayer/ReservasDAO.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_hotel_service,node_reservation_service,node_user toneBlue
class node_business_contracts,node_hotel_dao_contract,node_reservation_dao_contract,node_business_error,node_data_error toneAmber
class node_hotel_model,node_room_model,node_reservation_model,node_reservation_line,node_customer_data,node_payment_data,node_domain_types toneMint
class node_hotel_dao,node_reservation_dao toneRose
```

## Components

### Business services

- [Hotel management](https://github.com/diegozip05/uchoteles/blob/main/UCHotelesBusiness/src/main/java/es/unican/ps/uchoteles/businesslayer/GestionHoteles.java): `UCHotelesBusiness/src/main/java/es/unican/ps/uchoteles/businesslayer/GestionHoteles.java`
- [Reservation management](https://github.com/diegozip05/uchoteles/blob/main/UCHotelesBusiness/src/main/java/es/unican/ps/uchoteles/businesslayer/GestionReservas.java): `UCHotelesBusiness/src/main/java/es/unican/ps/uchoteles/businesslayer/GestionReservas.java`

### Shared contracts

- [Business interfaces](https://github.com/diegozip05/uchoteles/tree/main/UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/businesslayer): `UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/businesslayer`
- [Hotel DAO contract](https://github.com/diegozip05/uchoteles/blob/main/UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/daolayer/IHotelesDAO.java): `UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/daolayer/IHotelesDAO.java`
- [Reservation DAO contract](https://github.com/diegozip05/uchoteles/blob/main/UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/daolayer/IReservasDAO.java): `UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/daolayer/IReservasDAO.java`
- [Business errors](https://github.com/diegozip05/uchoteles/blob/main/UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/exceptions/OperacionNoValidaException.java): `UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/exceptions/OperacionNoValidaException.java`
- [Access errors](https://github.com/diegozip05/uchoteles/blob/main/UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/exceptions/DataAccessException.java): `UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/exceptions/DataAccessException.java`

### Hotel domain

- [Hotel and rooms](https://github.com/diegozip05/uchoteles/blob/main/UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/domain/Hotel.java): `UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/domain/Hotel.java`
- [Room types](https://github.com/diegozip05/uchoteles/blob/main/UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/domain/Habitacion.java): `UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/domain/Habitacion.java`
- [Reservation records](https://github.com/diegozip05/uchoteles/blob/main/UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/domain/Reserva.java): `UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/domain/Reserva.java`
- [Reservation lines](https://github.com/diegozip05/uchoteles/blob/main/UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/domain/ReservaTipoHabitacion.java): `UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/domain/ReservaTipoHabitacion.java`
- [Customer details](https://github.com/diegozip05/uchoteles/blob/main/UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/domain/DatosCliente.java): `UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/domain/DatosCliente.java`
- [Payment details](https://github.com/diegozip05/uchoteles/blob/main/UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/domain/DatosPago.java): `UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/domain/DatosPago.java`
- [Domain enums](https://github.com/diegozip05/uchoteles/tree/main/UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/domain): `UCHotelesCommon/src/main/java/es/unican/ps/uchoteles/common/domain`

### Data access

- [Hotel data access](https://github.com/diegozip05/uchoteles/blob/main/UCHotelesDAO/src/main/java/es/unican/ps/uchoteles/daolayer/HotelesDAO.java): `UCHotelesDAO/src/main/java/es/unican/ps/uchoteles/daolayer/HotelesDAO.java`
- [Reservation data access](https://github.com/diegozip05/uchoteles/blob/main/UCHotelesDAO/src/main/java/es/unican/ps/uchoteles/daolayer/ReservasDAO.java): `UCHotelesDAO/src/main/java/es/unican/ps/uchoteles/daolayer/ReservasDAO.java`

### Other components

- **Hotel user**

## Connections

- Hotel user → Hotel management: requests hotel operations
- Hotel user → Reservation management: requests reservations
- Hotel management → Hotel DAO contract: looks up hotels (evidence: `UCHotelesBusiness/src/main/java/es/unican/ps/uchoteles/businesslayer/GestionHoteles.java`)
- Hotel management → Reservation DAO contract: reads hotel reservations (evidence: `UCHotelesBusiness/src/main/java/es/unican/ps/uchoteles/businesslayer/GestionHoteles.java`)
- Hotel management → Hotel and rooms: checks room availability (evidence: `UCHotelesBusiness/src/main/java/es/unican/ps/uchoteles/businesslayer/GestionHoteles.java`)
- Hotel management → Reservation records: checks reservation overlap (evidence: `UCHotelesBusiness/src/main/java/es/unican/ps/uchoteles/businesslayer/GestionHoteles.java`)
- Hotel management → Reservation lines: counts reserved rooms (evidence: `UCHotelesBusiness/src/main/java/es/unican/ps/uchoteles/businesslayer/GestionHoteles.java`)
- Hotel data access → Hotel DAO contract: implements contract (evidence: `UCHotelesDAO/src/main/java/es/unican/ps/uchoteles/daolayer/HotelesDAO.java`)
- Reservation data access → Reservation DAO contract: implements contract (evidence: `UCHotelesDAO/src/main/java/es/unican/ps/uchoteles/daolayer/ReservasDAO.java`)
- Reservation management → Hotel DAO contract: uses hotel access (evidence: `UCHotelesBusiness/src/main/java/es/unican/ps/uchoteles/businesslayer/GestionReservas.java`)
- Reservation management → Reservation DAO contract: uses reservation access (evidence: `UCHotelesBusiness/src/main/java/es/unican/ps/uchoteles/businesslayer/GestionReservas.java`)
- Reservation management → Reservation records: manages booking records (evidence: `UCHotelesBusiness/src/main/java/es/unican/ps/uchoteles/businesslayer/GestionReservas.java`)
- Reservation management → Business interfaces: implements service API (evidence: `UCHotelesBusiness/src/main/java/es/unican/ps/uchoteles/businesslayer/GestionReservas.java`)
