Versión chachi guay funcional 0.1 creo que funciona :D
[pcd.git] / src / subastas / Cliente.java
index 41cf137..87df399 100644 (file)
@@ -8,6 +8,10 @@ import java.io.InputStreamReader;
 import java.io.LineNumberReader;
 
 import org.omg.CORBA.*;
+import org.omg.PortableServer.POA;
+import org.omg.PortableServer.POAHelper;
+import org.omg.PortableServer.POAPackage.ServantNotActive;
+import org.omg.PortableServer.POAPackage.WrongPolicy;
 
 public class Cliente {
 
@@ -15,6 +19,28 @@ public class Cliente {
         * @param args
         * @throws IOException 
         */
+       private static clienteSubastas buscar(String id, clienteSubastas[] cs){
+               clienteSubastas cl = null;
+               for (int i=0; i<cs.length; i++){
+                       if (cs[i].identificacion().contains(id)){
+                               cl = cs[i];
+                               break;
+                       }
+               }
+               return cl;
+       }
+       
+       private static clienteSubastas crearCliente(String ident, POA poa){
+               org.omg.CORBA.Object obj = null;
+               clienteSubastasImpl cl1x = new clienteSubastasImpl(ident);
+               try {
+                       obj = poa.servant_to_reference(cl1x);
+               } catch (Exception e1) {e1.printStackTrace();}
+               
+               clienteSubastas cl1 = clienteSubastasHelper.narrow(obj);
+               return cl1;
+       }
+       
        public static void main(String[] args) throws IOException {
                ORB orb = ORB.init(args, null);
                
@@ -25,47 +51,180 @@ public class Cliente {
                
                gestorSubastas gs = gestorSubastasHelper.narrow(obj);
                
-               
-               //usando el objecto gs
-               coordinadorSubasta cs = gs.crearSubasta((float)10.0, "clip rojo");
-               System.out.println(cs.valor());
-               System.out.println(cs.descripcion());
-               System.out.println(cs.estado());
-
-               clienteSubastas cl1 = new clienteSubastas("cliente1");
-               clienteSubastas cl2 = new clienteSubastas("cliente2");
-               cs.inscribirCliente(cl1);
-               cs.inscribirCliente(cl2);
-               
-               cs.abrirSubasta();
-               //deberia estar abierto
-               System.out.println(cs.estado());
-               cs.pujar(21, cl1);
-               if(cs.pujar(20, cl2)){
-                       System.out.println(cl2.identificacion() + ": mi puja es más alta");
+               POA poa=null;
+               try{
+               //creacion del poa raiz
+        poa = POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
+        //crear y activar sirvientes
+        poa.the_POAManager().activate();
                }
-               cs.ultimaPuja(cl2);
-               cs.ultimaPuja(cl1);
-               System.out.println(cs.ganador().identificacion());
+               catch (Exception e){e.printStackTrace();}
+                               
+               /**
+                * COMANDOS DISPONIBLES
+                * 
+                * GESTOR SUBASTAS
+                * ---------------
+                * salir -> sale del bucle
+                * crear valor desc -> crea una subasta
+                * buscar desc -> busca una subasta y muestra todas las coincidencias
+                * borrar id -> borra una subasta si esta cerrada
+                * 
+                * COORDINADOR SUBASTA
+                * -------------------
+                * abrir id -> abre la subasta por id
+                * estado id -> devuelve el estado de una subasta
+                * valor id -> devuelve el valor actual de una puja
+                * ganador_prov id -> dice el identificador del cliente que va ganando la puja
+                * ganador id -> muestra el ganador, si la puja no esta cerrada aun, bloquea al cliente
+                * clientes id -> muestra todos los identificadores de los clientes de la subasta
+                * inscribir id cliente_id -> inscribe un cliente en una subasta
+                * pujar id cliente_id valor
+                * ultima id cliente_id
+                * 
+                * CLIENTE SUBASTAS
+                * ----------------
+                * crearcliente identificacion
+                * cldisp -> muestra los clientes disponibles
+                */
+               
+               coordinadorSubasta[] subastas = null;
+               clienteSubastas[] clientes = new clienteSubastas[100];
+               int n_clientes = 0;
                
                boolean salir = false;
                String comando = "";
+               System.out.println("== INICIO ==");
                while(!salir){
+                       System.out.print(">>");
                        try{
                                BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
                                comando = br.readLine();
-                               }catch(Exception e){ e.printStackTrace();} 
+                               }catch(Exception e){ e.printStackTrace();}
+                       String[] partesDelComando = comando.split(" ");
                        if(comando.equals("salir")){
                                salir = true;
+                               System.out.println("Adios ;)");
                                break;
                        }
-                       else if(comando.contains("crear")){
-                               String[] partesDelComando = comando.split(" ");
-                               for(int i=0; i<partesDelComando.length; i++){
-                                       System.out.println(partesDelComando[i]);
+                       
+                       // Opciones de gestorSubastas
+                       else if(partesDelComando[0].equals("crear")){
+                               String desc = "";
+                               float valor = 0;
+                               valor = Float.valueOf(partesDelComando[1]);
+                               for(int i=2; i<partesDelComando.length; i++){
+                                       desc += " "+partesDelComando[i];
+                               }
+                               coordinadorSubasta cs = gs.crearSubasta(valor, desc);
+                               System.out.println("Subasta creada");
+                       }
+                       else if(partesDelComando[0].equals("buscar")){
+                               String desc = "";
+                               for(int i=1; i<partesDelComando.length; i++){
+                                       desc += " "+partesDelComando[i];
                                }
+
+                               subastas = gs.localizarSubasta(desc);
+                               for (int i=0; i<subastas.length; i++)
+                                       System.out.println(i+": "+subastas[i].descripcion()+" ("+subastas[i].valor()+") > " + subastas[i].estado());
+                       }
+                       else if(partesDelComando[0].equals("borrar")){
+                               int id = 0;
+                               id = Integer.valueOf(partesDelComando[1]);
+                               gs.destruirSubasta(subastas[id]);
+                               System.out.println("Subasta borrada");
+                       }
+                       
+                       // Opciones de coordinadorSubasta
+                       else if(partesDelComando[0].equals("abrir")){
+                               int id = 0;
+                               id = Integer.valueOf(partesDelComando[1]);
+                               subastas[id].abrirSubasta();
+                               System.out.println(subastas[id].estado());
                        }
+                       else if(partesDelComando[0].equals("estado")){
+                               int id = 0;
+                               id = Integer.valueOf(partesDelComando[1]);
+                               System.out.println(subastas[id].estado());
+                       }
+                       else if(partesDelComando[0].equals("valor")){
+                               int id = 0;
+                               id = Integer.valueOf(partesDelComando[1]);
+                               System.out.println(subastas[id].valor());
+                       }
+                       else if(partesDelComando[0].equals("ganador_prov")){
+                               int id = 0;
+                               id = Integer.valueOf(partesDelComando[1]);
+                               System.out.println(subastas[id].ganador_provisional().identificacion());
+                       }
+                       else if(partesDelComando[0].equals("ganador")){
+                               int id = 0;
+                               id = Integer.valueOf(partesDelComando[1]);
+                               System.out.println(subastas[id].ganador().identificacion());
+                       }
+                       else if(partesDelComando[0].equals("clientes")){
+                               int id = 0;
+                               id = Integer.valueOf(partesDelComando[1]);
+                               clienteSubastas[] clientes2 = subastas[id].clientes();
+                               for (int i=0; i< clientes2.length; i++){
+                                       System.out.println(i+": "+clientes2[i].identificacion());
+                               }
+                       }
+                       else if(partesDelComando[0].equals("inscribir")){
+                               int id = 0;
+                               String cliente_id="";
+                               clienteSubastas cl=null;
+                               id = Integer.valueOf(partesDelComando[1]);
+                               cliente_id = partesDelComando[2];
+                               cl = buscar(cliente_id, clientes);
+                               subastas[id].inscribirCliente(cl);
+                               System.out.println("Cliente inscrito");
+                       }
+                       
+                       else if(partesDelComando[0].equals("pujar")){
+                               int id = 0;
+                               float valor = 0;
+                               String cliente_id="";
+                               clienteSubastas cl=null;
+                               id = Integer.valueOf(partesDelComando[1]);
+                               cliente_id = partesDelComando[2];
+                               valor = Float.valueOf(partesDelComando[3]);
+                               cl = buscar(cliente_id, clientes);
+                               if(subastas[id].pujar(valor, cl))
+                                       System.out.println("Vas ganando");
+                               else
+                                       System.out.println("No es suficiente");
+                       }
+                       else if(partesDelComando[0].equals("ultima")){
+                               int id = 0;
+                               String cliente_id="";
+                               clienteSubastas cl=null;
+                               id = Integer.valueOf(partesDelComando[1]);
+                               cliente_id = partesDelComando[2];
+                               cl = buscar(cliente_id, clientes);
+                               subastas[id].ultimaPuja(cl);
+                               System.out.println("Has dejado de pujar");
+                               System.out.println(subastas[id].estado());
+                       }
+                       
+                       // creacion de clientes
+                       else if(partesDelComando[0].equals("crearcliente")){
+                               String id="";
+                               clienteSubastas cl=null;
+                               id = partesDelComando[1];
+                               cl = crearCliente(id, poa);
+                               clientes[n_clientes++] = cl;
+                       }
+                       else if(partesDelComando[0].equals("cldisp")){
+                               for(int i=0; i<n_clientes; i++){
+                                       System.out.println(i+": "+clientes[i].identificacion());
+                               }
+                       }
+
                }
+
+               System.out.println("FIN");
        }
 
 }