/** * *

Titulo: Servidor de respuestas a preguntas

*

Descripcion: Este programa permite generar una pregunta * y recepcionar las respuestas a esta. *

* @author Diego Gonzalez Barrientos * @version 1.0 */ //Paquete en el que se encapsula todo el codigo del servidor package servidorpreguntas; //Paquetes requeridos para el funcionamiento del programa import java.io.*; import javax.bluetooth.*; /**Clase principal del programa, recibe argumentos a traves de la linea de comandos */ public class SPP_Main implements CommandListener { /** *Constructor de la clase Main */ public SPP_Main() { instance = this; } /** * Funcion que permite mostrar el modo de uso de la aplicacion */ public static void showUsage() { System.out.println("Usage: Pregunta Numero_Alternativas Alternativa_Correcta Numero_Clientes alternativa1 alternativa2 ..."); System.exit(1); } /** * Funcion Main para iniciar aplicacion * @param args String[] */ public static void main(String[] args ) { //Verifica que el numero de argumentos ingresados sea el correcto if ((args.length < 4)||(((args.length - 4)!= Integer.valueOf(args[1]))&&(args.length != 4))) { showUsage(); } else if(args.length == 4) { pregunta = args[0]; numero_alternativas = Integer.valueOf(args[1]); alternativa_correcta = Integer.valueOf(args[2]); numero_clientes = Integer.valueOf(args[3]); } else if((args.length - 4) == Integer.valueOf(args[1])){ pregunta = args[0]; numero_alternativas = Integer.valueOf(args[1]); alternativa_correcta = Integer.valueOf(args[2]); numero_clientes = Integer.valueOf(args[3]); contenidoAlternativas = new String[numero_alternativas]; for (int i = 0; i < numero_alternativas; i++) contenidoAlternativas[i] = args[(args.length - numero_alternativas + i)]; } SPP_Main app = new SPP_Main(); app.startApp(); Object obj = new Object(); synchronized( obj ) { try { obj.wait(); } catch (InterruptedException ex) { } } } /** * Implementa ciclo de vida del MIDlet */ public void startApp() { // servidor todavia no ha comenzado en el constructor spp_server = new SPP_Server(pregunta,numero_alternativas,alternativa_correcta,numero_clientes,contenidoAlternativas); spp_screen = new SPP_Screen(); spp_screen.showui(); } /** * Saliendo de la Aplicacion */ public static void quitApp() { instance = null; System.exit(0); } /** * Manejador de acciones de usuario y entradas. * Todos los comandos de la GUI son dirigidos aqui por simplicidad. * @param c * @param d */ public void commandAction( String c, MessageUI d ) { if ( d == spp_screen && c.equals("Correr Servidor") ) { // // Iniciando servidor SPP local // spp_server.run_server(); spp_screen.showui(); } else if (d == spp_screen && c.equals("Salir")) { // Saliendo de la Aplicacion. try { // Intentando cerrar la conexion al servidor antes de salir del programa spp_server.doneTrue(); if ( spp_server.server != null ) spp_server.server.close(); } catch (IOException ex) { } quitApp(); }else if (d == spp_screen && c.equals("Detener")) { // Saliendo de la Aplicacion. try { // Intentando cerrar la conexion al servidor antes de salir del programa spp_server.doneTrue(); if ( spp_server.server != null ) spp_server.server.close(); } catch (IOException ex) { } // quitApp(); } } /** * Fucion que muestra un mensaje de debugeo * @param s String */ public static void log(String s) { System.out.println(s); } /** * Funcion que muestra un mensaje de alerta cuando a ocurrido una excepcion * @param e * @param next_screen */ public static void alert( Exception e, MessageUI next_screen ) { System.out.println("Exception: "+e.getClass().getName()+" "+e.getMessage()); next_screen.showui(); } /** * Funcion que muestra una caja con un mensaje de alerta * @param m String * @param next_screen Screen */ public static void alert( String m, MessageUI next_screen ) { System.out.println(m); next_screen.showui(); } // variables de la clase SPP_Main /** Instancia de la clase SPP_Main */ public static SPP_Main instance; /** Referencia a la clase SPP_Screen */ public SPP_Screen spp_screen = null; // BLUElet se encarga de descubrir dispositivos y servicios // Instancia del servidor bluetooth /** Referencia a la clase spp_server */ public SPP_Server spp_server = null; // Variables empleadas para recepcionar datos ingresados a través de la linea de comandos /** Pregunta que se realiza */ public static String pregunta; /**Numero de alternativas para la pregunta */ public static int numero_alternativas; /**Alternativa de la pregunta que es la correcta */ public static int alternativa_correcta; /**Numero de clientes que se espera respondan la pregunta */ public static int numero_clientes; /**Lista alternativas */ public static String[] contenidoAlternativas = null; }