package com.softgraf.chat;

import java.io.Serializable;
import java.util.LinkedHashSet;

public class Mensagem implements Serializable {

	private static final long serialVersionUID = 7705533238880639937L;

	// protocolo de comunicação (status)
	public static final int CONECTAR = 1;          // conectar
	public static final int DESCONECTAR = 2;       // desconectar
	public static final int LISTAR_USUARIOS = 3;   // solicita lista de usuários online
	public static final int ENVIAR_MSG = 4;        // envio de mensagem
	
	// variáveis privadas
	private String idUsuario;      // "Joao da Silva 192.168.1.9" 
	private int status;            // 1, 2, 3, 4
	private String mensagem;
	private LinkedHashSet<String> usuariosOnline;  // lista de usuários online
	
	// construtor
	public Mensagem(String idUsuario, int status, String mensagem){
		this.idUsuario = idUsuario;
		this.status = status;
		this.mensagem = mensagem;
		this.usuariosOnline = new LinkedHashSet<String>();
	}
	
	// getters e setters
	public String getIDusuario(){
		return idUsuario;
	}
	
	public String getNomeUsario(){
		String[] lista = idUsuario.split(" ");
		StringBuffer nome = new StringBuffer();
		
		for (int i=0; i<lista.length - 1; i++){
			nome.append(lista[i]);
			nome.append(i < lista.length - 2 ? " " : "");
		}
		
		return nome.toString();
	}
	
	public String getIP(){
		String[] lista = idUsuario.split(" ");
		return lista[lista.length - 1];
	}
	
	public int getStatus(){
		return status;
	}
	
	public String getMensagem(){
		return mensagem;
	}
	
	public void setUsuariosOnline(LinkedHashSet<String> usuariosOnline){
		for (String idUsuario : usuariosOnline) {
			this.usuariosOnline.add(new String(idUsuario));
		}
	}
	
	public LinkedHashSet<String> getUsuariosOnline(){
		return usuariosOnline;
	}
}
