package com.rzg.zombieland.server.comunicacion.controlador; import com.google.gson.Gson; import com.rzg.zombieland.comunes.comunicacion.pojo.POJORegistro; import com.rzg.zombieland.comunes.comunicacion.respuesta.RespuestaGenerica; import com.rzg.zombieland.comunes.misc.Log; import com.rzg.zombieland.comunes.misc.ZombielandException; import com.rzg.zombieland.server.persistencia.JugadorDao; import com.rzg.zombieland.server.sesion.Jugador; import com.rzg.zombieland.server.sesion.ManejadorSesion; public class ControladorCambioDatos extends ControladorConSesion { public ControladorCambioDatos(ManejadorSesion manejadorSesion) { super(manejadorSesion); } @Override protected String procesarAutenticado(String linea) { Gson gson = new Gson(); POJORegistro registro = gson.fromJson(linea, POJORegistro.class); JugadorDao dao = new JugadorDao(); try { Jugador jugador = dao.getJugadorPorNombre(getSesion().getJugador().getNombre()); Jugador existente = dao.getJugadorPorNombre(jugador.getNombre()); if(existente != null && jugador.getId() != existente.getId()) throw new ZombielandException("El nombre de usuario ya fue elegido"); jugador.setNombre(registro.getNombre()); jugador.setClave(registro.getClave()); jugador.setPreguntaSecreta(registro.getPreguntaSecreta()); jugador.setRespuestaSecreta(registro.getRespuestaSecreta()); jugador.setAvatar(registro.getAvatarJugador()); dao.actualizarObjeto(jugador); Log.info("El jugador: " + jugador.getNombre() + " ha cambiado sus datos"); return gson.toJson(new RespuestaGenerica()); } catch(ZombielandException e) { return gson.toJson(new RespuestaGenerica(e.getMessage())); } finally { dao.cerrarSesion(); } } }