VersiĆ³n chachi guay funcional 0.1 creo que funciona :D
[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 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                                 valor = Float.valueOf(partesDelComando[1]);
116                                 for(int i=2; i<partesDelComando.length; i++){
117                                         desc += " "+partesDelComando[i];
118                                 }
119                                 coordinadorSubasta cs = gs.crearSubasta(valor, desc);
120                                 System.out.println("Subasta creada");
121                         }
122                         else if(partesDelComando[0].equals("buscar")){
123                                 String desc = "";
124                                 for(int i=1; i<partesDelComando.length; i++){
125                                         desc += " "+partesDelComando[i];
126                                 }
127
128                                 subastas = gs.localizarSubasta(desc);
129                                 for (int i=0; i<subastas.length; i++)
130                                         System.out.println(i+": "+subastas[i].descripcion()+" ("+subastas[i].valor()+") > " + subastas[i].estado());
131                         }
132                         else if(partesDelComando[0].equals("borrar")){
133                                 int id = 0;
134                                 id = Integer.valueOf(partesDelComando[1]);
135                                 gs.destruirSubasta(subastas[id]);
136                                 System.out.println("Subasta borrada");
137                         }
138                         
139                         // Opciones de coordinadorSubasta
140                         else if(partesDelComando[0].equals("abrir")){
141                                 int id = 0;
142                                 id = Integer.valueOf(partesDelComando[1]);
143                                 subastas[id].abrirSubasta();
144                                 System.out.println(subastas[id].estado());
145                         }
146                         else if(partesDelComando[0].equals("estado")){
147                                 int id = 0;
148                                 id = Integer.valueOf(partesDelComando[1]);
149                                 System.out.println(subastas[id].estado());
150                         }
151                         else if(partesDelComando[0].equals("valor")){
152                                 int id = 0;
153                                 id = Integer.valueOf(partesDelComando[1]);
154                                 System.out.println(subastas[id].valor());
155                         }
156                         else if(partesDelComando[0].equals("ganador_prov")){
157                                 int id = 0;
158                                 id = Integer.valueOf(partesDelComando[1]);
159                                 System.out.println(subastas[id].ganador_provisional().identificacion());
160                         }
161                         else if(partesDelComando[0].equals("ganador")){
162                                 int id = 0;
163                                 id = Integer.valueOf(partesDelComando[1]);
164                                 System.out.println(subastas[id].ganador().identificacion());
165                         }
166                         else if(partesDelComando[0].equals("clientes")){
167                                 int id = 0;
168                                 id = Integer.valueOf(partesDelComando[1]);
169                                 clienteSubastas[] clientes2 = subastas[id].clientes();
170                                 for (int i=0; i< clientes2.length; i++){
171                                         System.out.println(i+": "+clientes2[i].identificacion());
172                                 }
173                         }
174                         else if(partesDelComando[0].equals("inscribir")){
175                                 int id = 0;
176                                 String cliente_id="";
177                                 clienteSubastas cl=null;
178                                 id = Integer.valueOf(partesDelComando[1]);
179                                 cliente_id = partesDelComando[2];
180                                 cl = buscar(cliente_id, clientes);
181                                 subastas[id].inscribirCliente(cl);
182                                 System.out.println("Cliente inscrito");
183                         }
184                         
185                         else if(partesDelComando[0].equals("pujar")){
186                                 int id = 0;
187                                 float valor = 0;
188                                 String cliente_id="";
189                                 clienteSubastas cl=null;
190                                 id = Integer.valueOf(partesDelComando[1]);
191                                 cliente_id = partesDelComando[2];
192                                 valor = Float.valueOf(partesDelComando[3]);
193                                 cl = buscar(cliente_id, clientes);
194                                 if(subastas[id].pujar(valor, cl))
195                                         System.out.println("Vas ganando");
196                                 else
197                                         System.out.println("No es suficiente");
198                         }
199                         else if(partesDelComando[0].equals("ultima")){
200                                 int id = 0;
201                                 String cliente_id="";
202                                 clienteSubastas cl=null;
203                                 id = Integer.valueOf(partesDelComando[1]);
204                                 cliente_id = partesDelComando[2];
205                                 cl = buscar(cliente_id, clientes);
206                                 subastas[id].ultimaPuja(cl);
207                                 System.out.println("Has dejado de pujar");
208                                 System.out.println(subastas[id].estado());
209                         }
210                         
211                         // creacion de clientes
212                         else if(partesDelComando[0].equals("crearcliente")){
213                                 String id="";
214                                 clienteSubastas cl=null;
215                                 id = partesDelComando[1];
216                                 cl = crearCliente(id, poa);
217                                 clientes[n_clientes++] = cl;
218                         }
219                         else if(partesDelComando[0].equals("cldisp")){
220                                 for(int i=0; i<n_clientes; i++){
221                                         System.out.println(i+": "+clientes[i].identificacion());
222                                 }
223                         }
224
225                 }
226
227                 System.out.println("FIN");
228         }
229
230 }