package com.pfc.catalogop2p.p2p;


 /*
 * Fichero:     ServidorCatalogoP2P.java
 * Fecha:       19/03/2004
 * Autor:       Alvaro Sarmiento Losada
 * Asignatura:  Proyecto Fin de Carrera
 * Descripción: Contiene la clase ServidorCatalogoP2P, que representa el
 *              ejecutable de un servidor de la aplicación de catálogo
 *              electrónico basada en peertopeer ServicioCatalogoP2P.
 *
 * 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.
 */


import com.pfc.lib.p2p.*;


/**
 * Esta clase arranca un servicio de catalogos  peertopeer
 * basado en SOAP, representado por una instancia de 
 * {@link ServicioCatalogoP2P}. 
 *
 * @author  Alvaro Sarmiento Losada
 * @see     ServicioCatalogoP2P
 */
public class ServidorCatalogoP2P {
    
    /** El nombre del grupo JXTA por defecto donde ejecutará este servicio. */
    public static final String NOMBRE_GRUPO = "CatalogoP2P";
    
    /** La descripción del grupo JXTA donde ejecutará este servicio. */    
    public static final String DESCRIPCION_GRUPO = 
                 "Grupo JXTA donde está implementado el programa CatalogoP2P";
    
    /**
     * Método principal de la aplicación. Instancia una plataforma peertopeer
     * y crea una nueva instancia del servidor de catalogo peertopeer, listo
     * para recibir peticiones SOAP.
     *
     * @param args [-local o -global] [-debug] [-grupo NombreDelGrupo] <br>
     *             "-local" si se quiere tener accesibilidad solo en red
     *             local. <br>
     *             "-global" si se quiere tener accesibilidad en toda la red
     *             JXTA, incluyendo a la propia subred local.<br>
     *             Si no se especifica nada, se asume la opción "-local".<br>
     *             "-debug" si se desa información de debug.
     *             "-grupo NombreDelGrupo" si se desea especificar un
     *             grupo distinto al por defecto para iniciar ComercioP2P.
     */
    
    
    
    public static void main(String[] args) {
        
        //Se crea la plataforma peertopeer basada en JXTA        
        Pares par=new Pares("clientes");
        try {
            System.out.println("Conectando... Por favor, espere");
            par.limpiarCache();
            par.configuraPeer("osito","alvaro82",9700,9701,NOMBRE_GRUPO); 
            String nombreGrupo = NOMBRE_GRUPO;
            
            System.out.println("Bienvenido a CatalogoP2P v1.0");
            //Se busca y entra en el grupo donde está implementado este servicio
            
            GrupoDePeers grupo=new GrupoDePeers(par.grupoCatalogo);
           
            System.out.println(grupo.getNombreMiGrupo());
           
            //Se crea el servicio JXTA
            ServicioCatalogoP2P servicio = new ServicioCatalogoP2P(grupo);
            servicio.inicializarServicio();
            //Se ejecuta el servicio
            servicio.ejecutarServicio();
            
        } catch (Exception e) {
            System.out.println("ERROR FATAL: ha ocurrido un error irrecuperable y el programa debe cerrar. El motivo es:");
            e.printStackTrace();
            System.exit(-1);
        }
    }
    
}