Versión chachi guay funcional 0.1 creo que funciona :D
authordanigm <danigm@arch_box>
Thu, 12 Jun 2008 02:47:44 +0000 (04:47 +0200)
committerdanigm <danigm@arch_box>
Thu, 12 Jun 2008 02:47:44 +0000 (04:47 +0200)
server.ior
src/subastas/Cliente.java
src/subastas/coordinadorSubastaImpl.java
src/subastas/gestorSubastasImpl.java

index af1e22e..0fcf032 100644 (file)
@@ -1 +1 @@
-IOR:000000000000002049444c3a73756261737461732f676573746f7253756261737461733a312e3000000000010000000000000082000102000000000a3132372e302e302e3100b8b100000031afabcb00000000207825a4e300000001000000000000000100000008526f6f74504f410000000008000000010000000014000000000000020000000100000020000000000001000100000002050100010001002000010109000000010001010000000026000000020002
+IOR:000000000000002049444c3a73756261737461732f676573746f7253756261737461733a312e3000000000010000000000000082000102000000000a3132372e302e302e3100d0e000000031afabcb00000000207a9f21aa00000001000000000000000100000008526f6f74504f410000000008000000010000000014000000000000020000000100000020000000000001000100000002050100010001002000010109000000010001010000000026000000020002
index 41cf137..87df399 100644 (file)
@@ -8,6 +8,10 @@ import java.io.InputStreamReader;
 import java.io.LineNumberReader;
 
 import org.omg.CORBA.*;
 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 {
 
 
 public class Cliente {
 
@@ -15,6 +19,28 @@ public class Cliente {
         * @param args
         * @throws IOException 
         */
         * @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);
                
        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);
                
                
                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 = "";
                
                boolean salir = false;
                String comando = "";
+               System.out.println("== INICIO ==");
                while(!salir){
                while(!salir){
+                       System.out.print(">>");
                        try{
                                BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
                                comando = br.readLine();
                        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;
                        if(comando.equals("salir")){
                                salir = true;
+                               System.out.println("Adios ;)");
                                break;
                        }
                                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");
        }
 
 }
        }
 
 }
index d94f05a..0b78d7e 100644 (file)
@@ -30,7 +30,10 @@ public class coordinadorSubastaImpl extends coordinadorSubastaPOA {
        }
 
        public clienteSubastas[] clientes() {
        }
 
        public clienteSubastas[] clientes() {
-               return (clienteSubastas[])clientes.toArray();
+               clienteSubastas[] cs = new clienteSubastas[clientes.size()];
+               for (int i=0; i<clientes.size(); i++)
+                       cs[i] = clientes.get(i);
+               return cs;
        }
 
        public String descripcion() {
        }
 
        public String descripcion() {
@@ -66,6 +69,7 @@ public class coordinadorSubastaImpl extends coordinadorSubastaPOA {
        }
 
        public synchronized boolean pujar(float cantidad, clienteSubastas cl) {
        }
 
        public synchronized boolean pujar(float cantidad, clienteSubastas cl) {
+               String id = cl.identificacion();
                try {
                        while(estado.equals("Inscripcion"))
                                wait();
                try {
                        while(estado.equals("Inscripcion"))
                                wait();
index 5e51765..37fda06 100644 (file)
@@ -53,13 +53,20 @@ public class gestorSubastasImpl extends gestorSubastasPOA {
        }
 
        public coordinadorSubasta[] localizarSubasta(String palabra) {
        }
 
        public coordinadorSubasta[] localizarSubasta(String palabra) {
-        Vector<coordinadorSubasta> encontradas = new Vector<coordinadorSubasta>();
+        coordinadorSubasta[] encontradas = new coordinadorSubasta[subastas.size()];
+        int j=0;
         for(int i=0; i<subastas.size(); i++){
             if (subastas.get(i).descripcion().contains(palabra)){
         for(int i=0; i<subastas.size(); i++){
             if (subastas.get(i).descripcion().contains(palabra)){
-                encontradas.add(subastas.get(i));
+                encontradas[j] = subastas.get(i);
+                j++;
             }
         }
             }
         }
-               return (coordinadorSubasta[])encontradas.toArray();
+        coordinadorSubasta[] encontradas2 = new coordinadorSubasta[j];
+        for(int i=0; i<j; i++){
+               encontradas2[i] = encontradas[i];
+        }
+        
+               return encontradas2;
        }
 
 }
        }
 
 }