Class PersistenciaArchivos
- All Implemented Interfaces:
GestorPersistencia
GestorPersistencia que almacena y recupera datos
mediante ficheros de texto plano en el sistema de archivos local.
Gestiona tres tipos de almacenamiento:
- Usuarios registrados →
data/usuarios.txt - Estadísticas de partidas →
data/estadisticas.txt - Estados de partidas pausadas →
data/partidas/id.dat
Todos los ficheros utilizan formato CSV separado por punto y coma (;).
Los directorios necesarios se crean automáticamente en el constructor
si no existen previamente.
- Version:
- 1.0
- Author:
- JP
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final StringRuta de la carpeta que contiene los ficheros de partidas pausadas.private static final StringRuta del fichero que almacena el historial de estadísticas.private static final StringRuta del fichero que almacena los usuarios registrados. -
Constructor Summary
ConstructorsConstructorDescriptionConstruye una instancia dePersistenciaArchivosy garantiza que los directorios de trabajo existen antes de cualquier operación de E/S. -
Method Summary
Modifier and TypeMethodDescriptionvoidAñade una estadística al final del fichero de estadísticas sin sobrescribir los registros existentes (modo append).Carga todas las estadísticas almacenadas en disco y las devuelve como lista.cargarPartidaPausada(int id) Carga el estado serializado de una partida pausada desde su ficheroid.dat.Lee el fichero de usuarios y reconstruye la lista de objetos del modelo.voideliminarPartidaPausada(int id) Elimina el ficheroid.datde una partida pausada.voidguardarPartidaPausada(int id, String estado) Guarda el estado serializado de una partida pausada en un fichero denominadoid.datdentro dedata/partidas/.voidguardarUsuarios(ArrayList<Usuario> listaUsuarios) Sobrescribe el fichero de usuarios con la lista completa proporcionada.Lista los identificadores de todas las partidas pausadas que hay en disco.
-
Field Details
-
DATA_USUARIOS
Ruta del fichero que almacena los usuarios registrados.- See Also:
-
DATA_ESTADISTICAS
Ruta del fichero que almacena el historial de estadísticas.- See Also:
-
CARPETA_PARTIDAS
Ruta de la carpeta que contiene los ficheros de partidas pausadas.- See Also:
-
-
Constructor Details
-
PersistenciaArchivos
public PersistenciaArchivos()Construye una instancia dePersistenciaArchivosy garantiza que los directorios de trabajo existen antes de cualquier operación de E/S.Si
data/odata/partidas/no existen, los crea. Esto evitaIOExceptionen la primera ejecución de la aplicación.
-
-
Method Details
-
guardarUsuarios
Sobrescribe el fichero de usuarios con la lista completa proporcionada.Cada usuario se serializa mediante su método
Usuario.toArchivo(), que produce una línea con el formatousername;password;esAdmin. Se llama a este método cada vez que se registra un nuevo usuario.- Specified by:
guardarUsuariosin interfaceGestorPersistencia- Parameters:
listaUsuarios- lista deUsuarioa persistir. No debe sernull.
-
cargarUsuarios
Lee el fichero de usuarios y reconstruye la lista de objetos del modelo.El formato esperado por línea es
username;password;esAdmin. Si el tercer campo estrue, se instancia unAdministrador; en caso contrario, unJugador. Las líneas vacías o malformadas (menos de 3 campos) se ignoran silenciosamente.- Specified by:
cargarUsuariosin interfaceGestorPersistencia- Returns:
- lista de
Usuariocargados desde disco. Devuelve una lista vacía si el fichero no existe todavía.
-
agregarEstadistica
Añade una estadística al final del fichero de estadísticas sin sobrescribir los registros existentes (modo append).La estadística se serializa mediante
Estadistica.toArchivo(), que produce una línea con el formatousername;nombreJuego;puntuacion;victoria;fecha. La fecha se escribe en formato ISO (yyyy-MM-dd) gracias aLocalDate.toString().- Specified by:
agregarEstadisticain interfaceGestorPersistencia- Parameters:
e-Estadisticaa persistir. No debe sernull.
-
cargarEstadisticas
Carga todas las estadísticas almacenadas en disco y las devuelve como lista.El formato esperado por línea es
username;nombreJuego;puntuacion;victoria;fecha. La fecha se deserializa conLocalDate.parse(CharSequence), que espera formato ISO (yyyy-MM-dd), consistente con lo que escribeEstadistica.toArchivo(). Las líneas vacías o con menos de 5 campos se ignoran silenciosamente.- Specified by:
cargarEstadisticasin interfaceGestorPersistencia- Returns:
- lista de
Estadisticacargadas desde disco. Devuelve una lista vacía si el fichero no existe todavía.
-
guardarPartidaPausada
Guarda el estado serializado de una partida pausada en un fichero denominadoid.datdentro dedata/partidas/.El contenido del fichero es el String devuelto por
Juego.serializarEstado(), cuyo formato concreto depende de cada subclase deJuego.- Specified by:
guardarPartidaPausadain interfaceGestorPersistencia- Parameters:
id- identificador único de la partidaestado- String con el estado serializado del juego
-
cargarPartidaPausada
Carga el estado serializado de una partida pausada desde su ficheroid.dat.El String devuelto se pasa directamente a
Juego.deserializarEstado()para reconstruir el estado interno del juego al reanudar la partida.- Specified by:
cargarPartidaPausadain interfaceGestorPersistencia- Parameters:
id- identificador de la partida a cargar- Returns:
- String con el estado serializado, o
nullsi el fichero no existe
-
eliminarPartidaPausada
public void eliminarPartidaPausada(int id) Elimina el ficheroid.datde una partida pausada.Se invoca cuando la partida se reanuda o se descarta, para no acumular ficheros huérfanos en
data/partidas/.- Specified by:
eliminarPartidaPausadain interfaceGestorPersistencia- Parameters:
id- identificador de la partida cuyo fichero se eliminará
-
listarPartidasPausadas
Lista los identificadores de todas las partidas pausadas que hay en disco.Recorre
data/partidas/buscando ficheros con extensión.daty extrae el id del nombre de cada fichero. Usado porGestorPartidaspara mostrar al usuario las partidas que puede reanudar.- Specified by:
listarPartidasPausadasin interfaceGestorPersistencia- Returns:
- lista de ids (
int) de partidas pausadas. Devuelve una lista vacía si no hay ninguna.
-