Archived
dbConnector y UserData.
Se ha creado y serializado el archivo de datos de conexión a BD. Se ha terminado de serializar el archivo de datos de usuario. Se han creado métodos para operar con estos datos. Varias correcciones y comentarios por ahí.
This commit is contained in:
@@ -113,3 +113,8 @@ Thumbs.db
|
||||
/ios/xcode/native/
|
||||
/ios/IOSLauncher.app
|
||||
/ios/IOSLauncher.app.dSYM
|
||||
|
||||
|
||||
## Datos de guardado del juego.
|
||||
/saves/
|
||||
/gameData/
|
||||
@@ -1,4 +1,4 @@
|
||||
[
|
||||
[datosString
|
||||
{
|
||||
"class": "uberelectron.gameSystems.Machine",
|
||||
"machineID": "base_raspi_mk1",
|
||||
|
||||
@@ -15,8 +15,8 @@ public class GameManager
|
||||
{
|
||||
private static GameManager instance;
|
||||
|
||||
private final String localSavePath = "save/";
|
||||
private final String localRoomSavePath = "save/Rooms/";
|
||||
private final String localSavePath = "saves/";
|
||||
private final String localRoomSavePath = "saves/Rooms/";
|
||||
private final String internalDataPath = "data/";
|
||||
private final String internalRoomDataPath = "data/";
|
||||
|
||||
|
||||
@@ -3,8 +3,8 @@ package uberelectron.gameSystems;
|
||||
/**
|
||||
* Contiene los datos de inicio de sesión del usuario.
|
||||
* Esta clase se serializa automáticamente a JSON en LoginSystem.
|
||||
* @author Daniel García
|
||||
*
|
||||
* @author Daniel García
|
||||
* @see LoginSystem
|
||||
*/
|
||||
public class LoginData
|
||||
|
||||
@@ -1,5 +1,17 @@
|
||||
package uberelectron.gameSystems;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.files.FileHandle;
|
||||
import com.badlogic.gdx.utils.Json;
|
||||
import com.badlogic.gdx.utils.JsonWriter;
|
||||
|
||||
/**
|
||||
* Clase que realiza el inicio de sesión y autenticación del usuario.
|
||||
* Toma los datos desde el archivo JSON y los verifica con la DB.
|
||||
* También crea nuevos usuarios y permite saber si el usuario está autentificado.
|
||||
*
|
||||
* @author Daniel García.
|
||||
*/
|
||||
public class LoginSystem
|
||||
{
|
||||
private LoginSystem() {}
|
||||
@@ -27,26 +39,91 @@ public class LoginSystem
|
||||
return datosUsuario.nickname;
|
||||
}
|
||||
|
||||
public static void CrearNuevoUsuario()
|
||||
/**
|
||||
* Comprueba en la BD si ese nick ya está ocupado.
|
||||
* @param username Nombre de usuario a comprobar.
|
||||
* @return True si el nick está disponible, False si está ocupado.
|
||||
*/
|
||||
public static boolean ComprobarNickDisponible(String username)
|
||||
{
|
||||
//TODO: dbConector.comprobarNick.
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Crea un nuevo usuario, lo guarda en un JSON y lo añade a la BD.
|
||||
* @param username Nombre de usuario.
|
||||
* @param password Contraseña.
|
||||
*/
|
||||
public static void CrearNuevoUsuario(String username, String password)
|
||||
{
|
||||
//Creará un nuevo LoginData:
|
||||
// Lo guardará como JSON.
|
||||
// Añadirá el usuario a la DB -> AddUserToDB
|
||||
}
|
||||
|
||||
private void LoadFromJSON()
|
||||
//Comprobamos si el nick está disponible. Si no lo está, cancelamos.
|
||||
if(!ComprobarNickDisponible(username))
|
||||
{
|
||||
//Carga el JSON desde la ubicación por defecto.
|
||||
Gdx.app.log("LoginSystem", "El nombre " + username + " no está disponible.");
|
||||
return;
|
||||
}
|
||||
|
||||
private void SaveToJSON()
|
||||
//Creamos el usuario.
|
||||
//FIXME: No es demasiado bonito...
|
||||
datosUsuario = new LoginData();
|
||||
datosUsuario.nickname = username;
|
||||
datosUsuario.password = password;
|
||||
|
||||
//Lo guardamos al JSON.
|
||||
SaveToJSON();
|
||||
|
||||
//Lo añadimos a la DB.
|
||||
AddUserToDB();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Carga los datos de usuario desde un JSON de la ubicación por defecto.
|
||||
*/
|
||||
private static void LoadFromJSON()
|
||||
{
|
||||
//Guarda el JSON en la ubicación por defecto.
|
||||
//Comprobamos si el archivo existe.
|
||||
FileHandle file = Gdx.files.local(localDefaultSavePath + defaultFileName);
|
||||
if(!file.exists())
|
||||
{
|
||||
Gdx.app.error("LoginSystem", "No se puede cargar el archivo de datos de usuario. " +
|
||||
"El Archivo no existe");
|
||||
return;
|
||||
}
|
||||
|
||||
private void AddUserToDB()
|
||||
//Cargamos desde archivo.
|
||||
Json json = new Json();
|
||||
datosUsuario = json.fromJson(LoginData.class, file);
|
||||
}
|
||||
|
||||
/**
|
||||
* Guarda los datos de usuario a un JSON en la ubicación por defecto.
|
||||
*/
|
||||
private static void SaveToJSON()
|
||||
{
|
||||
//Creamos el JSON y lo generamos.
|
||||
Json json = new Json(JsonWriter.OutputType.json);
|
||||
String datos = json.toJson(datosUsuario);
|
||||
|
||||
//Abrimos el archivo y lo escribimos.
|
||||
FileHandle file = Gdx.files.local(localDefaultSavePath + defaultFileName);
|
||||
file.writeString(json.prettyPrint(datos), false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Añade un usuario a la BD a partir de los datos de usuario.
|
||||
*
|
||||
* @see dbConnector
|
||||
*/
|
||||
private static void AddUserToDB()
|
||||
{
|
||||
//Inserta directamente a la DB.
|
||||
//TODO: dbConector.adduser;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -12,8 +12,6 @@ import java.util.Map;
|
||||
|
||||
/*
|
||||
ToDo:
|
||||
- Cuestiones de "Privacidad" de variables.
|
||||
- Revisar que los Ptrs son Ptrs.
|
||||
- Comprobar que los archivos (los paths) existen.
|
||||
*/
|
||||
|
||||
@@ -46,7 +44,7 @@ public class RoomLoader
|
||||
mcLoader = MachineLoader.getInstance();
|
||||
|
||||
loaderJson = new Json();
|
||||
|
||||
loaderJson.setOutputType(JsonWriter.OutputType.json);
|
||||
loaderJson.setSerializer(Room.class, roomSerializer);
|
||||
|
||||
}
|
||||
@@ -90,6 +88,7 @@ public class RoomLoader
|
||||
String data = loaderJson.toJson(rSave);
|
||||
//FileHandle file = Gdx.files.local(path);
|
||||
file.writeString(loaderJson.prettyPrint(data), false);
|
||||
|
||||
Gdx.app.log("RoomLoader", "Se ha guardado la room " + roomID + " en " + file);
|
||||
}
|
||||
|
||||
@@ -155,13 +154,18 @@ public class RoomLoader
|
||||
return currentRoom;
|
||||
}
|
||||
|
||||
/**
|
||||
* Devuelve la Room con el RoomID indicado.
|
||||
* @param roomID ID de la Room que se quiere.
|
||||
* @return La room solicitada.
|
||||
*/
|
||||
public Room GetRoomByID(String roomID)
|
||||
{
|
||||
return loadedRooms.get(roomID);
|
||||
}
|
||||
|
||||
|
||||
//DEBUG: Para hacer pruebas desde BackEndTest.java.
|
||||
//FIXME DEBUG: Para hacer pruebas desde BackEndTest.java.
|
||||
public void AddRoom(Room rToAdd)
|
||||
{
|
||||
loadedRooms.put(rToAdd.roomName, rToAdd);
|
||||
|
||||
@@ -5,6 +5,13 @@ import com.badlogic.gdx.files.FileHandle;
|
||||
import com.badlogic.gdx.utils.Json;
|
||||
import com.badlogic.gdx.utils.JsonWriter;
|
||||
|
||||
/**
|
||||
* Clase estática para la carga/guardado de datos de partida.
|
||||
* Estos datos incluyen el dinero y las salas compradas, entre otros.
|
||||
* Puede cargar/guardar desde JSON y desde DB.
|
||||
*
|
||||
* @author Daniel García.
|
||||
*/
|
||||
public class SaveLoader
|
||||
{
|
||||
private SaveLoader() {}
|
||||
|
||||
@@ -1,29 +1,53 @@
|
||||
package uberelectron.gameSystems;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.files.FileHandle;
|
||||
import com.badlogic.gdx.utils.Json;
|
||||
import com.badlogic.gdx.utils.JsonWriter;
|
||||
import com.mysql.jdbc.Driver;
|
||||
import java.sql.DriverManager;
|
||||
import java.sql.Connection;
|
||||
import java.sql.Statement;
|
||||
import java.sql.ResultSet;
|
||||
|
||||
|
||||
/**
|
||||
* Clase estática que realiza todas las interacciones con la BD.
|
||||
* Carga los datos de conexión desde un archivo JSON.
|
||||
*
|
||||
* @author Daniel García.
|
||||
*/
|
||||
public class dbConnector
|
||||
{
|
||||
private static Connection connect;
|
||||
private static dbData datosConexion;
|
||||
private static Connection connect = null;
|
||||
private static dbData datosConexion = null;
|
||||
|
||||
private static final String localDefaultSavePath = "gameData/";
|
||||
private static final String defaultFileName = "dbData.json";
|
||||
|
||||
private static final String mensajeErrorGenerico = "No se ha podido interactuar con la BD.";
|
||||
|
||||
/**
|
||||
* Inicializa la conexión con la BD.
|
||||
* Utiliza los datos de conexión del fichero JSON.
|
||||
*/
|
||||
public static void InitDbConnection()
|
||||
{
|
||||
//Cargamos los datos de Acceso desde el JSON.
|
||||
LoadConnectionDataFromJSON();
|
||||
|
||||
//Comprobamos que están cargados los datos de acceso.
|
||||
if(datosConexion == null)
|
||||
{
|
||||
Gdx.app.error("dbConnector", "No se ha podido establecer conexión con la DB. " +
|
||||
"No hay datos de conexión.");
|
||||
return;
|
||||
}
|
||||
|
||||
//Realizamos la conexión.
|
||||
try
|
||||
{
|
||||
Class.forName("com.mysql.cj.jdbc.Driver");
|
||||
|
||||
//Todo: Cargar datos de acceso desde dbData.
|
||||
String url = "jdbc:mysql://" + datosConexion.hostname
|
||||
+ ":" + datosConexion.port
|
||||
+ "/" + datosConexion.dbName;
|
||||
@@ -40,7 +64,7 @@ public class dbConnector
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
System.err.println("No ha sido posible comunicarse con la BD.");
|
||||
Gdx.app.error("dbConnector", "No ha sido posible comunicarse con la BD.");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -48,13 +72,55 @@ public class dbConnector
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
System.err.println("No se ha podido cargar el Driver de MySQL.");
|
||||
Gdx.app.error("dbConnector", "No se ha podido cargar el Driver de MySQL.");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Carga los datos desde el archivo JSON.
|
||||
* Utiliza la ubicación por defecto definida en las variables de clase.
|
||||
*/
|
||||
private static void LoadConnectionDataFromJSON()
|
||||
{
|
||||
//Obtenemos el archivo.
|
||||
FileHandle file = Gdx.files.local(localDefaultSavePath + defaultFileName);
|
||||
if(!file.exists())
|
||||
{
|
||||
Gdx.app.error("dbConnector", "El archivo de datos de conexión no está disponible.");
|
||||
return;
|
||||
}
|
||||
|
||||
//Cargamos los datos desde el JSON.
|
||||
Json json = new Json();
|
||||
datosConexion = json.fromJson(dbData.class, file);
|
||||
}
|
||||
|
||||
private static void LoadConnectionDataFromJSON()
|
||||
/*
|
||||
FIXME: DEBUG
|
||||
Genera un archivo JSON con los datos indicados.
|
||||
*/
|
||||
public static void SaveConnectionDataToJSON()
|
||||
{
|
||||
dbData data = new dbData();
|
||||
data.hostname = "192.168.5.1";
|
||||
data.port = "3306";
|
||||
data.user = "root";
|
||||
data.password = "password";
|
||||
data.dbName = "pepeDB";
|
||||
|
||||
Json json = new Json(JsonWriter.OutputType.json);
|
||||
String datosString = json.toJson(data);
|
||||
FileHandle file = Gdx.files.local(localDefaultSavePath + defaultFileName);
|
||||
file.writeString(json.prettyPrint(datosString), false);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//TODO: ¿Qué necesito? Creo que el ID de partida...
|
||||
// ¿Dónde lo guardo?
|
||||
public static void SaveRoomToDB()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@@ -4,6 +4,8 @@ package uberelectron.gameSystems;
|
||||
/**
|
||||
* Contiene los datos necesarios para la conexión con la BD.
|
||||
* Esta clase se serializa automáticamente a JSON en DBConnector.
|
||||
*
|
||||
* @author Daniel García.
|
||||
*/
|
||||
public class dbData
|
||||
{
|
||||
|
||||
@@ -4,10 +4,7 @@ import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.Screen;
|
||||
import com.badlogic.gdx.files.FileHandle;
|
||||
import com.badlogic.gdx.utils.Json;
|
||||
import uberelectron.gameSystems.Machine;
|
||||
import uberelectron.gameSystems.MachineLoader;
|
||||
import uberelectron.gameSystems.Room;
|
||||
import uberelectron.gameSystems.RoomLoader;
|
||||
import uberelectron.gameSystems.*;
|
||||
|
||||
import java.io.Reader;
|
||||
import java.util.logging.FileHandler;
|
||||
@@ -85,6 +82,14 @@ public class BackEndTest implements Screen
|
||||
// Gdx.app.log("Test", "Mensaje del LOG");
|
||||
// Gdx.app.error("Test", "Mensaje de ERROR");
|
||||
// Gdx.app.debug("Test", "Mensaje de Debug");
|
||||
|
||||
|
||||
/*
|
||||
Pruebas con DB
|
||||
*/
|
||||
dbConnector.SaveConnectionDataToJSON();
|
||||
|
||||
|
||||
Gdx.app.log("BackEndTest", "Prueba completada.");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user