Resueltos los dos problemas comentados en el guiĆ³n. Ahora se informa a
[pcd.git] / src / subastas / Cliente.java
1 package subastas;
2
3 import java.io.BufferedReader;
4 import java.io.FileNotFoundException;
5 import java.io.FileReader;
6 import java.io.IOException;
7 import java.io.InputStreamReader;
8 import java.io.LineNumberReader;
9
10 import org.omg.CORBA.*;
11 import org.omg.PortableServer.POA;
12 import org.omg.PortableServer.POAHelper;
13 import org.omg.PortableServer.POAPackage.ServantNotActive;
14 import org.omg.PortableServer.POAPackage.WrongPolicy;
15
16 public class Cliente {
17
18         /**
19          * @param args
20          * @throws IOException 
21          */
22         private static clienteSubastas buscar(String id, clienteSubastas[] cs){
23                 clienteSubastas cl = null;
24                 for (int i=0; i<cs.length; i++){
25                         if (cs[i].identificacion().contains(id)){
26                                 cl = cs[i];
27                                 break;
28                         }
29                 }
30                 return cl;
31         }
32         
33         private static clienteSubastas crearCliente(String ident, POA poa){
34                 org.omg.CORBA.Object obj = null;
35                 clienteSubastasImpl cl1x = new clienteSubastasImpl(ident);
36                 try {
37                         obj = poa.servant_to_reference(cl1x);
38                 } catch (Exception e1) {e1.printStackTrace();}
39                 
40                 clienteSubastas cl1 = clienteSubastasHelper.narrow(obj);
41                 return cl1;
42         }
43         
44         public static void main(String[] args) throws IOException {
45                 ORB orb = ORB.init(args, null);
46                 
47                 LineNumberReader input = new LineNumberReader(new FileReader("server.ior"));
48                 String ior = input.readLine();
49                 
50                 org.omg.CORBA.Object obj = orb.string_to_object(ior);
51                 
52                 gestorSubastas gs = gestorSubastasHelper.narrow(obj);
53                 
54                 POA poa=null;
55                 try{
56                 //creacion del poa raiz
57         poa = POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
58         //crear y activar sirvientes
59         poa.the_POAManager().activate();
60                 }
61                 catch (Exception e){e.printStackTrace();}
62                                 
63                 /**
64                  * COMANDOS DISPONIBLES
65                  * 
66                  * GESTOR SUBASTAS
67                  * ---------------
68                  * salir -> sale del bucle
69                  * crear valor tiempo desc -> crea una subasta
70                  * buscar desc -> busca una subasta y muestra todas las coincidencias
71                  * borrar id -> borra una subasta si esta cerrada
72                  * 
73                  * COORDINADOR SUBASTA
74                  * -------------------
75                  * abrir id -> abre la subasta por id
76                  * estado id -> devuelve el estado de una subasta
77                  * valor id -> devuelve el valor actual de una puja
78                  * ganador_prov id -> dice el identificador del cliente que va ganando la puja
79                  * ganador id -> muestra el ganador, si la puja no esta cerrada aun, bloquea al cliente
80                  * clientes id -> muestra todos los identificadores de los clientes de la subasta
81                  * inscribir id cliente_id -> inscribe un cliente en una subasta
82                  * pujar id cliente_id valor
83                  * ultima id cliente_id
84                  * 
85                  * CLIENTE SUBASTAS
86                  * ----------------
87                  * crearcliente identificacion
88                  * cldisp -> muestra los clientes disponibles
89                  */
90                 
91                 coordinadorSubasta[] subastas = null;
92                 clienteSubastas[] clientes = new clienteSubastas[100];
93                 int n_clientes = 0;
94                 
95                 boolean salir = false;
96                 String comando = "";
97                 System.out.println("== INICIO ==");
98                 while(!salir){
99                         System.out.print(">>");
100                         try{
101                                 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
102                                 comando = br.readLine();
103                                 }catch(Exception e){ e.printStackTrace();}
104                         String[] partesDelComando = comando.split(" ");
105                         if(comando.equals("salir")){
106                                 salir = true;
107                                 System.out.println("Adios ;)");
108                                 break;
109                         }
110                         
111                         // Opciones de gestorSubastas
112                         else if(partesDelComando[0].equals("crear")){
113                                 String desc = "";
114                                 float valor = 0;
115                                 int time = 0;
116                                 valor = Float.valueOf(partesDelComando[1]);
117                                 time = Integer.valueOf(partesDelComando[2]);
118                                 for(int i=3; i<partesDelComando.length; i++){
119                                         desc += " "+partesDelComando[i];
120                                 }
121                                 coordinadorSubasta cs = gs.crearSubasta(valor, desc, time);
122                                 System.out.println("Subasta creada");
123                         }
124                         else if(partesDelComando[0].equals("buscar")){
125                                 String desc = "";
126                                 for(int i=1; i<partesDelComando.length; i++){
127                                         desc += " "+partesDelComando[i];
128                                 }
129
130                                 subastas = gs.localizarSubasta(desc);
131                                 for (int i=0; i<subastas.length; i++)
132                                         System.out.println(i+": "+subastas[i].descripcion()+" ("+subastas[i].valor()+") > " + subastas[i].estado());
133                         }
134                         else if(partesDelComando[0].equals("borrar")){
135                                 int id = 0;
136                                 id = Integer.valueOf(partesDelComando[1]);
137                                 gs.destruirSubasta(subastas[id]);
138                                 System.out.println("Subasta borrada");
139                         }
140                         
141                         // Opciones de coordinadorSubasta
142                         else if(partesDelComando[0].equals("abrir")){
143                                 int id = 0;
144                                 id = Integer.valueOf(partesDelComando[1]);
145                                 subastas[id].abrirSubasta();
146                                 System.out.println(subastas[id].estado());
147                         }
148                         else if(partesDelComando[0].equals("estado")){
149                                 int id = 0;
150                                 id = Integer.valueOf(partesDelComando[1]);
151                                 System.out.println(subastas[id].estado());
152                         }
153                         else if(partesDelComando[0].equals("valor")){
154                                 int id = 0;
155                                 id = Integer.valueOf(partesDelComando[1]);
156                                 System.out.println(subastas[id].valor());
157                         }
158                         else if(partesDelComando[0].equals("ganador_prov")){
159                                 int id = 0;
160                                 id = Integer.valueOf(partesDelComando[1]);
161                                 System.out.println(subastas[id].ganador_provisional().identificacion());
162                         }
163                         else if(partesDelComando[0].equals("ganador")){
164                                 int id = 0;
165                                 id = Integer.valueOf(partesDelComando[1]);
166                                 System.out.println(subastas[id].ganador().identificacion());
167                         }
168                         else if(partesDelComando[0].equals("clientes")){
169                                 int id = 0;
170                                 id = Integer.valueOf(partesDelComando[1]);
171                                 clienteSubastas[] clientes2 = subastas[id].clientes();
172                                 for (int i=0; i< clientes2.length; i++){
173                                         System.out.println(i+": "+clientes2[i].identificacion());
174                                 }
175                         }
176                         else if(partesDelComando[0].equals("inscribir")){
177                                 int id = 0;
178                                 String cliente_id="";
179                                 clienteSubastas cl=null;
180                                 id = Integer.valueOf(partesDelComando[1]);
181                                 cliente_id = partesDelComando[2];
182                                 cl = buscar(cliente_id, clientes);
183                                 subastas[id].inscribirCliente(cl);
184                                 System.out.println("Cliente inscrito");
185                         }
186                         
187                         else if(partesDelComando[0].equals("pujar")){
188                                 int id = 0;
189                                 float valor = 0;
190                                 String cliente_id="";
191                                 clienteSubastas cl=null;
192                                 id = Integer.valueOf(partesDelComando[1]);
193                                 cliente_id = partesDelComando[2];
194                                 valor = Float.valueOf(partesDelComando[3]);
195                                 cl = buscar(cliente_id, clientes);
196                                 if(subastas[id].pujar(valor, cl))
197                                         System.out.println("Vas ganando");
198                                 else
199                                         System.out.println("No es suficiente");
200                         }
201                         else if(partesDelComando[0].equals("ultima")){
202                                 int id = 0;
203                                 String cliente_id="";
204                                 clienteSubastas cl=null;
205                                 id = Integer.valueOf(partesDelComando[1]);
206                                 cliente_id = partesDelComando[2];
207                                 cl = buscar(cliente_id, clientes);
208                                 subastas[id].ultimaPuja(cl);
209                                 System.out.println("Has dejado de pujar");
210                                 System.out.println(subastas[id].estado());
211                         }
212                         
213                         // creacion de clientes
214                         else if(partesDelComando[0].equals("crearcliente")){
215                                 String id="";
216                                 clienteSubastas cl=null;
217                                 id = partesDelComando[1];
218                                 cl = crearCliente(id, poa);
219                                 clientes[n_clientes++] = cl;
220                         }
221                         else if(partesDelComando[0].equals("cldisp")){
222                                 for(int i=0; i<n_clientes; i++){
223                                         System.out.println(i+": "+clientes[i].identificacion());
224                                 }
225                         }
226
227                 }
228
229                 System.out.println("FIN");
230         }
231
232 }