/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package socius.state;
import java.rmi.RemoteException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.scene.control.Dialogs;
import javafx.stage.Stage;
import socius.telas.util.DadosGlobais;
import socius.dispositivos.Computador;
import socius.dispositivos.ServidorRemoto;
import socius.excecoes.ComputadorNaoConectadoException;
import socius.app.ClientBoot;
import socius.thread.MantemConexaoServidorThread;
/**
*
* @author Lucas Dillmann <lucas [at] dillmann.com.br>
*/
public class EstadoOnline implements EstadoComputador {
private Computador computador;
private ServidorRemoto servidor;
private MantemConexaoServidorThread thread;
private String estado = "online";
public EstadoOnline(Computador computador, ServidorRemoto servidor) {
this.computador = computador;
this.servidor = servidor;
// Inicia Thread que irá manter o envio de avisos de que ainda estou
// online
thread = new MantemConexaoServidorThread(computador);
thread.start();
}
@Override
public void conectar() {
if (Dialogs.showConfirmDialog(new Stage(), "Você já está conectado!,\n deseja desconectar?").equals("YES")) {
try {
desconectar();
} catch (Exception ex) {
Logger.getLogger(EstadoOnline.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
@Override
public void desconectar() {
// try {
//limpa a lista decomputadores deletando esse
// initTela.removeComputadores(ClientBoot.getInstance().getComputador());
// initTela.removeArquivos(ClientBoot.getInstance().getComputador().getArquivos());
// initTela.getArquivos().clear();
try {
thread.interromper();
servidor.desconectar(computador);
} catch (Throwable ex) {
Logger.getLogger(EstadoOnline.class.getName()).log(Level.SEVERE, null, ex);
}
servidor = null;
computador.setEstado(new EstadoOffline(computador));
ClientBoot r = new ClientBoot();
r.telaLogin();
try {
r.start(new Stage());
} catch (Exception ex) {
Logger.getLogger(EstadoOnline.class.getName()).log(Level.SEVERE, null, ex);
}
// } catch (RemoteException ex) {
// Logger.getLogger(EstadoOnline.class.getName()).log(Level.SEVERE, null, ex);
// }
}
@Override
public ServidorRemoto getServidorConectado() throws ComputadorNaoConectadoException {
return servidor;
}
@Override
public String toString() {
return estado;
}
}