import java.util.Vector; /** Utilidad para manejo de la clase Vector*/

/**
 * CLASE: PaginaWeb.java
 * OBJETIVO: Clase que describe un sitio en Internet con direccion electronica (URL)
 * ASIGNATURA: 
 * @version 1.0 21/07/2005
 * @author William Mendoza Rodriguez
 */

public class PaginaWeb {
    
    /*=========================================================================
      ATRIBUTOS PRINCIPALES
      =========================================================================*/
    private String direccionElectronica; /** Direccion electronica de la pagina (URL)*/
    private Vector usuariosRegistrados; /** Vector de usuarios registrados al ssitio */
    private Vector usuariosActuales; /** Vector de usuarios conectados en el sitio */
    
    /*=========================================================================
      METODOS CONSTRUCTORES
      =========================================================================*/
    /** 
     * Inicializa una instancia "vacia" de un nuevo objeto PaginaWeb. Inicializando la direccion electronica con un caracter vacio. Los vectores son inicializados tambien en "vacio".
     */

    public PaginaWeb() {
	direccionElectronica="";
	usuariosRegistrados= new Vector();
	usuariosActuales = new Vector();
    }

    /*=========================================================================
      DEFINICION E IMPLEMENTACION DE LOS METODOS ANALIZADORES Y MODIFICADORES
      =========================================================================*/
    
    /** 
     * Asigna el valor de la direccion electronica de la PaginaWeb 
     * PRE: Que exista el objeto
     * POS: this.direccionElectronica == url
     * @param La direccion electronica de la página web
     */

    public void setDireccionElectronica(String url) {
	this.direccionElectronica = url;
    }

    /** 
     * Registra un usuario en la página.
     * PRE: Que exista la PaginaWeb
     * POS: usuariosRegistrados.size() == tamAnterior+1
     * @param Usuario a registrar.
     */
    
    public void registrar(Usuario p) {
	usuariosRegistrados.add(p);
    }

    /** 
     * La direccion electronica de la Pagina Web.
     * PRE: TRUE
     * @return El url de la Pagina Web en String. En caso de no haber sido asignado retorna ""
     */
    
    public String getDireccionElectronica() {
	return direccionElectronica;
    }

    /** 
     * Numero de usuarios que están conectados en la Página.
     * PRE: TRUE
     * @return Numero de usuarios que están conectados actualemente en la Página. En caso de no haber ninguno retorna 0.
     */
    
    public int numeroUsuariosActuales() {
	return usuariosActuales.size();
    }

    /** 
     * Numero de usuarios que están registrados en la Página.
     * PRE: TRUE
     * @return Numero de usuarios registrados en la Página. En caso de no haber ninguno retorna 0.
     */   
    
    public int numeroUsuariosRegistrados() {
	return usuariosRegistrados.size();
    }
    
    /**
     * Metodo que registra la salidad de un usuario (desconectarse) del sitio. Inidca si esta fue exitosa o no.
     * PRE: Que el usuario a desconectar
     * @param El usuario a desconectar
     * @return true en caso de poderse desconectarse, en caso contrario false. Tambien retorna false si el usuario no estaba en linea
     */
    
    public boolean logOut(Usuario p) {
	//REALICE LO NECESARIO PARA REMOVER DE LOS 'usuariosActuales' AL USUARIO DADO
	//REGRESE 'true' EN CASO DE SER POSIBLE REMOVERLO EN CASO CONTRARIO 'false' 
	return true;
    }

    /** 
     * Obtiene los el username de los usuarios conectados.
     * PRE: Deben existir usuarios en linea
     * @return Los usernames de los usuarios conectados. En caso contrario regresa el caracter '-'
     */
    public String usuariosEnLinea() {
	String s = "-";
	Usuario user;
	for (int i=0; i<numeroUsuariosActuales(); i++) {
	    //REALICE LO NECESARIO PARA MOSTRAR A LOS USUARIOS ACTUALES
	    s += "\n";
	}
	return s;
    }
	
    /**
     * Obtiene en String los datos de la Pagina Web. 
     * PRE: TRUE
     * @return Presenta la direccion electronica, el numero de usuarios registrados, el numero total de usuarios, y los username de estos
     */
    public String toString() {
	String s = "";
	s += "URL: " + getDireccionElectronica() + "\n";
	s += "Usuarios Registrados: " + numeroUsuariosRegistrados() + "\n";
	s += "Usuarios Conectados: " + numeroUsuariosActuales() + "\n";
	s += usuariosEnLinea();
	return s;
    }
}
