Class SimulationService
- All Implemented Interfaces:
SimulationServiceInterface
-
Constructor Summary
ConstructorsConstructorDescriptionConstructor por defecto del servicio.SimulationService(Random random) Constructor para instanciar el servicio inyectando una semilla de números aleatorios custom. -
Method Summary
Modifier and TypeMethodDescriptionbooleanexistsSimulation(User user, int token) Comprueba si una simulación pertenece a un usuario concreto.getSimulationResult(User user, int token) Recupera el resultado histórico de una simulación específica de un usuario.getSimulationStatus(User user, int token) Consulta el estado de una simulación vinculada a un usuario.Recupera un usuario en memoria o lo crea si no existe.getUserTokens(User user) Lista todos los identificadores de simulación registrados a nombre de un usuario.intrequestSimulation(User user, Request request) Orquesta la creación, configuración y arranque de una nueva simulación para un usuario.
-
Constructor Details
-
SimulationService
Constructor para instanciar el servicio inyectando una semilla de números aleatorios custom.Precondición:
randomno es nulo.Postcondición: Crea el servicio con una colección de usuarios vacía y el generador de números aleatorios inyectado.
- Parameters:
random- la instancia de generador aleatorio.
-
SimulationService
public SimulationService()Constructor por defecto del servicio.Precondición: Ninguna.
Postcondición: Crea el servicio inicializándolo con un generador de números aleatorios por defecto y una colección de usuarios vacía.
-
-
Method Details
-
getUser
Recupera un usuario en memoria o lo crea si no existe.Precondición:
userno es nulo y tiene un nombre asignado.Postcondición: Funciona como caché. Si el usuario ya está registrado, devuelve la misma referencia en memoria. Si no existe, lo instancia, lo guarda en la colección y lo devuelve conservando su nombre intacto.
- Specified by:
getUserin interfaceSimulationServiceInterface- Parameters:
user- el objeto usuario usado para buscar o registrar.- Returns:
- la instancia persistente del usuario en el sistema.
-
existsSimulation
Comprueba si una simulación pertenece a un usuario concreto.Precondición:
userno es nulo.Postcondición: Devuelve verdadero si el sistema certifica que el token consta en el registro de peticiones del usuario. Devuelve falso si el usuario no es propietario de dicho token.
- Specified by:
existsSimulationin interfaceSimulationServiceInterface- Parameters:
user- el usuario que hace la solicitud.token- el identificador de la simulación a verificar.- Returns:
- verdadero si el token pertenece al usuario, falso en caso contrario.
-
getSimulationStatus
Consulta el estado de una simulación vinculada a un usuario.Precondición:
userno es nulo y es el propietario real del token indicado.Postcondición: Delega la consulta y retorna el estado exacto extraído directamente desde el gestor interno de esa simulación.
- Specified by:
getSimulationStatusin interfaceSimulationServiceInterface- Parameters:
user- el usuario propietario de la simulación.token- el identificador de la simulación.- Returns:
- el estado de ejecución actual de la simulación solicitada.
-
getSimulationResult
Recupera el resultado histórico de una simulación específica de un usuario.Precondición:
userno es nulo y es el propietario real del token indicado.Postcondición: Extrae y devuelve el historial completo del tablero expuesto por el gestor subyacente de la simulación.
- Specified by:
getSimulationResultin interfaceSimulationServiceInterface- Parameters:
user- el usuario propietario de la simulación.token- el identificador de la simulación.- Returns:
- el objeto con el historial de resultados devuelto por el gestor.
-
getUserTokens
Lista todos los identificadores de simulación registrados a nombre de un usuario.Precondición:
userno es nulo.Postcondición: Devuelve una colección que agrupa todos los tokens solicitados históricamente por el usuario. La colección nunca es nula, aunque el usuario no tenga simulaciones.
- Specified by:
getUserTokensin interfaceSimulationServiceInterface- Parameters:
user- el usuario a consultar.- Returns:
- una colección con los tokens pertenecientes al usuario.
-
requestSimulation
Orquesta la creación, configuración y arranque de una nueva simulación para un usuario.Precondición:
useryrequestno son nulos. Las cantidades iniciales en la solicitud son enteros no negativos.Postcondición: Construye un tablero de tamaño dinámico, lo puebla aleatoriamente con las criaturas solicitadas, arranca asíncronamente los cálculos de turnos y amarra la petición a la cuenta del usuario. Devuelve un token válido superior o igual a cero.
- Specified by:
requestSimulationin interfaceSimulationServiceInterface- Parameters:
user- el usuario que solicita crear la simulación.request- el objeto con la especificación de criaturas a incluir.- Returns:
- el nuevo token numérico asignado a la simulación.
-