comando help aƱadido
[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                         else if(comando.equals("help")){
111                                 System.out.println(
112                  "* COMANDOS DISPONIBLES\r\n" +
113                  "*\r\n " +
114                  "* GESTOR SUBASTAS\r\n"+
115                  "* --------------\r\n"+
116                  "* salir -> sale del bucle\r\n"+
117                  "* crear valor tiempo desc -> crea una subasta\r\n"+
118                  "* buscar desc -> busca una subasta y muestra todas las coincidencias\r\n"+
119                  "* borrar id -> borra una subasta si esta cerrada\r\n"+
120                  "* \r\n"+
121                  "* COORDINADOR SUBASTA\r\n"+
122                  "* -------------------\r\n"+
123                  "* abrir id -> abre la subasta por id\r\n"+
124                  "* estado id -> devuelve el estado de una subasta\r\n"+
125                  "* valor id -> devuelve el valor actual de una puja\r\n"+
126                  "* ganador_prov id -> dice el identificador del cliente que va ganando la puja\r\n"+
127                  "* ganador id -> muestra el ganador, si la puja no esta cerrada aun, bloquea al cliente\r\n"+
128                  "* clientes id -> muestra todos los identificadores de los clientes de la subasta\r\n"+
129                  "* inscribir id cliente_id -> inscribe un cliente en una subasta\r\n"+
130                  "* pujar id cliente_id valor\r\n"+
131                  "* ultima id cliente_id\r\n"+
132                  "* \r\n"+
133                  "* CLIENTE SUBASTAS\r\n"+
134                  "* ----------------\r\n"+
135                  "* crearcliente identificacion\r\n"+
136                  "* cldisp -> muestra los clientes disponibles\r\n");
137                         }
138                         
139                         // Opciones de gestorSubastas
140                         else if(partesDelComando[0].equals("crear")){
141                                 String desc = "";
142                                 float valor = 0;
143                                 int time = 0;
144                                 valor = Float.valueOf(partesDelComando[1]);
145                                 time = Integer.valueOf(partesDelComando[2]);
146                                 for(int i=3; i<partesDelComando.length; i++){
147                                         desc += " "+partesDelComando[i];
148                                 }
149                                 coordinadorSubasta cs = gs.crearSubasta(valor, desc, time);
150                                 System.out.println("Subasta creada");
151                         }
152                         else if(partesDelComando[0].equals("buscar")){
153                                 String desc = "";
154                                 for(int i=1; i<partesDelComando.length; i++){
155                                         desc += " "+partesDelComando[i];
156                                 }
157
158                                 subastas = gs.localizarSubasta(desc);
159                                 for (int i=0; i<subastas.length; i++)
160                                         System.out.println(i+": "+subastas[i].descripcion()+" ("+subastas[i].valor()+") > " + subastas[i].estado());
161                         }
162                         else if(partesDelComando[0].equals("borrar")){
163                                 int id = 0;
164                                 id = Integer.valueOf(partesDelComando[1]);
165                                 gs.destruirSubasta(subastas[id]);
166                                 System.out.println("Subasta borrada");
167                         }
168                         
169                         // Opciones de coordinadorSubasta
170                         else if(partesDelComando[0].equals("abrir")){
171                                 int id = 0;
172                                 id = Integer.valueOf(partesDelComando[1]);
173                                 subastas[id].abrirSubasta();
174                                 System.out.println(subastas[id].estado());
175                         }
176                         else if(partesDelComando[0].equals("estado")){
177                                 int id = 0;
178                                 id = Integer.valueOf(partesDelComando[1]);
179                                 System.out.println(subastas[id].estado());
180                         }
181                         else if(partesDelComando[0].equals("valor")){
182                                 int id = 0;
183                                 id = Integer.valueOf(partesDelComando[1]);
184                                 System.out.println(subastas[id].valor());
185                         }
186                         else if(partesDelComando[0].equals("ganador_prov")){
187                                 int id = 0;
188                                 id = Integer.valueOf(partesDelComando[1]);
189                                 System.out.println(subastas[id].ganador_provisional().identificacion());
190                         }
191                         else if(partesDelComando[0].equals("ganador")){
192                                 int id = 0;
193                                 id = Integer.valueOf(partesDelComando[1]);
194                                 System.out.println(subastas[id].ganador().identificacion());
195                         }
196                         else if(partesDelComando[0].equals("clientes")){
197                                 int id = 0;
198                                 id = Integer.valueOf(partesDelComando[1]);
199                                 clienteSubastas[] clientes2 = subastas[id].clientes();
200                                 for (int i=0; i< clientes2.length; i++){
201                                         System.out.println(i+": "+clientes2[i].identificacion());
202                                 }
203                         }
204                         else if(partesDelComando[0].equals("inscribir")){
205                                 int id = 0;
206                                 String cliente_id="";
207                                 clienteSubastas cl=null;
208                                 id = Integer.valueOf(partesDelComando[1]);
209                                 cliente_id = partesDelComando[2];
210                                 cl = buscar(cliente_id, clientes);
211                                 subastas[id].inscribirCliente(cl);
212                                 System.out.println("Cliente inscrito");
213                         }
214                         
215                         else if(partesDelComando[0].equals("pujar")){
216                                 int id = 0;
217                                 float valor = 0;
218                                 String cliente_id="";
219                                 clienteSubastas cl=null;
220                                 id = Integer.valueOf(partesDelComando[1]);
221                                 cliente_id = partesDelComando[2];
222                                 valor = Float.valueOf(partesDelComando[3]);
223                                 cl = buscar(cliente_id, clientes);
224                                 if(subastas[id].pujar(valor, cl))
225                                         System.out.println("Vas ganando");
226                                 else
227                                         System.out.println("No es suficiente");
228                         }
229                         else if(partesDelComando[0].equals("ultima")){
230                                 int id = 0;
231                                 String cliente_id="";
232                                 clienteSubastas cl=null;
233                                 id = Integer.valueOf(partesDelComando[1]);
234                                 cliente_id = partesDelComando[2];
235                                 cl = buscar(cliente_id, clientes);
236                                 subastas[id].ultimaPuja(cl);
237                                 System.out.println("Has dejado de pujar");
238                                 System.out.println(subastas[id].estado());
239                         }
240                         
241                         // creacion de clientes
242                         else if(partesDelComando[0].equals("crearcliente")){
243                                 String id="";
244                                 clienteSubastas cl=null;
245                                 id = partesDelComando[1];
246                                 cl = crearCliente(id, poa);
247                                 clientes[n_clientes++] = cl;
248                         }
249                         else if(partesDelComando[0].equals("cldisp")){
250                                 for(int i=0; i<n_clientes; i++){
251                                         System.out.println(i+": "+clientes[i].identificacion());
252                                 }
253                         }
254
255                 }
256
257                 System.out.println("FIN");
258         }
259
260 }