/*
 * Fichero:     ConfiguradorServicioP2P.java
 * Fecha:       20/10/06
 * Autor:       Alvaro Sarmiento Losada
 * Asignatura:  Proyecto Fin de Carrera
 * Descripción: Contiene la clase ConfiguradorServicioP2P, que representa un
 *              bean que contiene información para la creación de un nuevo
 *              servicio peertopeer sobre JXTA.
 *
 * Este fichero pertenece al proyecto fin de carrera del autor,
 * consistente en el estudio de JXTA y su aplicación al comercio 
 * electrónico b2b.
 */

package com.pfc.lib.p2p;

/**
 * Implementa un objeto bean configurador de un servicio que hereda de  {@link ServicioGenericoP2P} . Este objeto contiene los parámetros de inicialización de los 3 anuncios JXTA necesarios para crear un servicio <code>ServicioGenericoP2P</code>, que son:<br> 1.- Anuncio de Clase de Módulo. 2.- Anuncio de Especificación de Módulo. 3.- Anuncio de Tubería.
 * @author   Josef Ignacio Hötz Ordoño
 * @see  ServicioGenericoP2P
 */
public class ConfiguradorServicioP2P extends Object {
    
    /**
     * Almacena el nombre del Anuncio de Clase de Módulo JXTA que usará el 
     * servicio  inicializado por este objeto 
     * <code>ConfiguradorServicioP2P</code>.
     */
    private String nombreClaseModulo = "JXTAMOD:default";

    /**
     * Almacena la descripción del Clase de Módulo JXTA que usará el servicio 
     * inicializado por este objeto <code>ConfiguradorServicioP2P</code>.
     */
    private String descripcionClaseModulo = "default";

    /**
     * Almacena el nombre del servicio que usará el servicio 
     * inicializado por este objeto <code>ConfiguradorServicioP2P</code>.
     */
    private String nombreServicio = "default";

    /**
     * Almacena el nombre del creador que aparecerá en el 
     * Anuncio de Especificación de Módulo JXTA que usará el servicio 
     * inicializado por este objeto <code>ConfiguradorServicioP2P</code>.
     */
    private String nombreCreador = "default";

    /**
     * Almacena la versión que aparecerá en el 
     * Anuncio de Especificación de Módulo JXTA que usará el servicio 
     * inicializado por este objeto <code>ConfiguradorServicioP2P</code>.
     */
    private String versionServicio = "default";

    /**
     * Almacena el nombre de la URI que aparecerá en el 
     * Anuncio de Especificación de Módulo JXTA que usará el servicio 
     * inicializado por este objeto <code>ConfiguradorServicioP2P</code>.
     */
    private String uriServicio = "default";

    /**
     * Almacena el nombre de la tubería que aparecerá en el 
     * Anuncio de Tubería JXTA que usará el servicio 
     * inicializado por este objeto <code>ConfiguradorServicioP2P</code>.
     */
    private String nombreTuberia = "default";

    /**
     * Almacena el nombre del tipo de tubería que aparecerá en el 
     * Anuncio de Tubería JXTA que usará el servicio 
     * inicializado por este objeto <code>ConfiguradorServicioP2P</code>.
     */
    private String tipoTuberia = "JxtaUnicast";
    
    /**
     * Almacena el nombre del Peer que quiere crear un 
     * {@link ServicioGenericoP2P}.
     */
    private String nombrePeer = null;
    
    /**
     * Constructor básico de la clase. Crea una nueva instancia de esta clase
     * a partir del nombre del Peer que quiere crear un 
     * <code>ServicioGenericoP2P</code>.
     *
     * @param nombrePeer el nombre del Peer que crea el servicio P2P.
     */
    public ConfiguradorServicioP2P(String nombrePeer) {
        this.nombrePeer = nombrePeer;
    }
    
    /**
	 * Devuelve el nombre del Clase de Módulo JXTA establecido para este objeto configurador.
	 * @return  el nombre del Clase de Módulo JXTA.
	 * @uml.property  name="nombreClaseModulo"
	 */
    public String getNombreClaseModulo() {
        return nombreClaseModulo;
    }

    /**
	 * Devuelve la descripción del Clase de Módulo JXTA establecido para este objeto configurador.
	 * @return  el nombre del Clase de Módulo JXTA.
	 * @uml.property  name="descripcionClaseModulo"
	 */
    public String getDescripcionClaseModulo() {
        return descripcionClaseModulo;
    }

    /**
	 * Devuelve el nombre del servicio establecido para este objeto configurador.
	 * @return  el nombre del servicio.
	 * @uml.property  name="nombreServicio"
	 */
    public String getNombreServicio() {
        return nombreServicio;
    }

    /**
	 * Devuelve el nombre del creador que aparecerá en el Anuncio de  Especificación de Módulo JXTA establecido para este objeto configurador.
	 * @return  el nombre del creador del servicio.
	 * @uml.property  name="nombreCreador"
	 */
    public String getNombreCreador() {
        return nombreCreador;
    }

    /**
	 * Devuelve la versión del servicio que aparecerá en el Anuncio de  Especificación de Módulo JXTA establecido para este objeto configurador.
	 * @return  la versión del servicio
	 * @uml.property  name="versionServicio"
	 */
    public String getVersionServicio() {
        return versionServicio;
    }

    /**
	 * Devuelve la URI del servicio que aparecerá en el Anuncio de   Especificación de Módulo JXTA establecido para este objeto configurador.
	 * @return  la URI del servicio
	 * @uml.property  name="uriServicio"
	 */
    public String getUriServicio() {
        return uriServicio;
    }

    /**
	 * Devuelve el nombre de la tubería usada por el servicio, establecida para este objeto configurador.
	 * @return  el nombre de la tubería.
	 * @uml.property  name="nombreTuberia"
	 */
    public String getNombreTuberia() {
        return nombreTuberia;
    }

    /**
	 * Devuelve el tipo de la tubería usada por el servicio, establecida para este objeto configurador.
	 * @return  el tipo de la tubería.
	 * @uml.property  name="tipoTuberia"
	 */
    public String getTipoTuberia() {
        return tipoTuberia;
    }

    /**
	 * Establece el nombre del servicio que aparecerá en el Anuncio de Clase de Módulo del servicio configurado con este objeto. El valor almacenado será [JXTAMOD:]<code>valor</code>.
	 * @param valor  el nombre del servicio.
	 * @uml.property  name="nombreClaseModulo"
	 */    
    public void setNombreClaseModulo(String valor) {
        nombreClaseModulo = "JXTAMOD:" + valor;
    }

    /**
	 * Establece la descripción del servicio que aparecerá en el Anuncio de Clase de Módulo del servicio configurado con este objeto.
	 * @param valor  la descripción del servicio.
	 * @uml.property  name="descripcionClaseModulo"
	 */    
    public void setDescripcionClaseModulo(String valor) {
        descripcionClaseModulo = valor;
    }

    /**
	 * Establece el nombre del servicio que aparecerá en el Anuncio de Especificación de Módulo del servicio configurado con este objeto. Además también establece el valor del nombre de la tubería que aparecerá en el Anuncio de Tubería del servicio.
	 * @param valor  el nombre del servicio.
	 * @uml.property  name="nombreServicio"
	 */    
    public void setNombreServicio(String valor) {
        nombreServicio = valor;
        setNombreTuberia();
    }

    /**
	 * Establece el creador del servicio que aparecerá en el Anuncio de Especificación de Módulo del servicio configurado con este objeto.
	 * @param valor  el creador del servicio.
	 * @uml.property  name="nombreCreador"
	 */    
    public void setNombreCreador(String valor) {
        nombreCreador = valor;
    }

    /**
	 * Establece la versión del servicio que aparecerá en el Anuncio de Especificación de Módulo del servicio configurado con este objeto.
	 * @param valor  la versión del servicio.
	 * @uml.property  name="versionServicio"
	 */    
    public void setVersionServicio(String valor) {
        versionServicio = valor; 
    }

    /**
	 * Establece la URI del servicio que aparecerá en el Anuncio de Especificación de Módulo del servicio configurado con este objeto.
	 * @param valor  la URI del servicio.
	 * @uml.property  name="uriServicio"
	 */    
    public void setUriServicio(String valor) {
        uriServicio = valor;
    }

    /**
	 * Establece el tipo de la tubería usada por el servicio configurado por este objeto.
	 * @param valor  el tipo de la tubería.
	 * @uml.property  name="tipoTuberia"
	 */    
    public void setTipoTuberia(String valor) {
        tipoTuberia = valor;
    }
    
    /**
     * Establece el nombre de la tubería usada por el servicio configurado
     * por este objeto.
     */    
    private void setNombreTuberia() {
        nombreTuberia = ServicioGenericoP2P.nombreTuberiaServicio(nombreServicio, nombrePeer);
    }
     
}