/**
 *
 * <p>Titulo: Servidor de respuestas a preguntas</p>
 * <p>Descripcion: Este programa permite responder a preguntas.
 * </p>
 * @author Diego Gonzalez Barrientos
 * @version 1.0
 */

//Paquetes requeridos para el programa
import java.io.*;
import java.util.*;
import javax.bluetooth.*;
import javax.microedition.io.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;

/**Clase cliente que implementa respuesta de preguntas
*/
public class SPP_Cliente
{
/**Constructor
*/
  public SPP_Cliente()
  {

  }
/**Retorna vector que almacena arreglo con alternativas
*@return retorna arreglo con alternativas enviadas desde el servidor
*/
public static Vector getArreglo(){
  return arreglo;
}
/**Retorna vector que almacena arreglo con contenido alternativas
*@return retorna arreglo con contenido alternativas enviadas desde el servidor
*/
public static Vector getArregloAlternativa(){
  return arregloAlternativa;
}
/**Metodo que envia la alternativa constestada al servidor
*@param escogica alternativa escogida
*/
public void sendChoosenAlternative(int escogida){
	String alternativa = (String)arreglo.elementAt(escogida);
	try {
	DataOutputStream out = con.openDataOutputStream();
	out.writeInt(escogida);
	out.writeUTF(alternativa);
	out.close();
	in.close();
	con.close();
	}
	catch (IOException e) {}
}
  /**
   *Establece conexion con servidor y recepciona datos de esta
   * @param msg
   */
  public void receiveSPPMessage(ServiceRecord r, String msg)
  {
    boolean flag = true;
    String url  = r.getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT, false );
    log("url: "+url);
    try
    {
      log("conectado al servidor ...");
      con = (StreamConnection) Connector.open( url );
      in = con.openDataInputStream();
	   titulo = in.readUTF();
      int ii = in.readInt();
	 arreglo = new Vector();
	 for (int i = 0; i < ii; i++) {
	 	arreglo.addElement(in.readUTF());
	 }
	   if  (in.readInt() != 1) 
		{
		  arregloAlternativa = new Vector();
		  for (int i = 0; i < ii; i++)
   		  arregloAlternativa.addElement(in.readUTF());
		}
    } catch (Exception e)
    {
      e.printStackTrace();
      SPP_MIDlet.alert( e, SPP_MIDlet.instance.spp_screen );
    }

  }
/**Imprime mensajes de debugeo
*/
  public void log( String s )
  {
    SPP_MIDlet.log( s );
  }
  /**Referencia a conexion con servidor
  */
StreamConnection con = null;
/**Referencia a flujo de entrada
*/
DataInputStream in = null;
/**Referencia que almacena alternativas enviadas por servidor
*/
public static Vector arregloAlternativa = null;
/**Referencia que almacena alternativas enviadas por servidor
*/
public static Vector arreglo;
/**Pregunta realizada por servidor
*/
public static String titulo;

}
