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;
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;
16 public class Cliente {
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)){
33 private static clienteSubastas crearCliente(String ident, POA poa){
34 org.omg.CORBA.Object obj = null;
35 clienteSubastasImpl cl1x = new clienteSubastasImpl(ident);
37 obj = poa.servant_to_reference(cl1x);
38 } catch (Exception e1) {e1.printStackTrace();}
40 clienteSubastas cl1 = clienteSubastasHelper.narrow(obj);
44 public static void main(String[] args) throws IOException {
45 ORB orb = ORB.init(args, null);
47 LineNumberReader input = new LineNumberReader(new FileReader("server.ior"));
48 String ior = input.readLine();
50 org.omg.CORBA.Object obj = orb.string_to_object(ior);
52 gestorSubastas gs = gestorSubastasHelper.narrow(obj);
56 //creacion del poa raiz
57 poa = POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
58 //crear y activar sirvientes
59 poa.the_POAManager().activate();
61 catch (Exception e){e.printStackTrace();}
64 * COMANDOS DISPONIBLES
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
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
87 * crearcliente identificacion
88 * cldisp -> muestra los clientes disponibles
91 coordinadorSubasta[] subastas = null;
92 clienteSubastas[] clientes = new clienteSubastas[100];
95 boolean salir = false;
97 System.out.println("== INICIO ==");
99 System.out.print(">>");
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")){
107 System.out.println("Adios ;)");
111 // Opciones de gestorSubastas
112 else if(partesDelComando[0].equals("crear")){
115 valor = Float.valueOf(partesDelComando[1]);
116 for(int i=2; i<partesDelComando.length; i++){
117 desc += " "+partesDelComando[i];
119 coordinadorSubasta cs = gs.crearSubasta(valor, desc);
120 System.out.println("Subasta creada");
122 else if(partesDelComando[0].equals("buscar")){
124 for(int i=1; i<partesDelComando.length; i++){
125 desc += " "+partesDelComando[i];
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());
132 else if(partesDelComando[0].equals("borrar")){
134 id = Integer.valueOf(partesDelComando[1]);
135 gs.destruirSubasta(subastas[id]);
136 System.out.println("Subasta borrada");
139 // Opciones de coordinadorSubasta
140 else if(partesDelComando[0].equals("abrir")){
142 id = Integer.valueOf(partesDelComando[1]);
143 subastas[id].abrirSubasta();
144 System.out.println(subastas[id].estado());
146 else if(partesDelComando[0].equals("estado")){
148 id = Integer.valueOf(partesDelComando[1]);
149 System.out.println(subastas[id].estado());
151 else if(partesDelComando[0].equals("valor")){
153 id = Integer.valueOf(partesDelComando[1]);
154 System.out.println(subastas[id].valor());
156 else if(partesDelComando[0].equals("ganador_prov")){
158 id = Integer.valueOf(partesDelComando[1]);
159 System.out.println(subastas[id].ganador_provisional().identificacion());
161 else if(partesDelComando[0].equals("ganador")){
163 id = Integer.valueOf(partesDelComando[1]);
164 System.out.println(subastas[id].ganador().identificacion());
166 else if(partesDelComando[0].equals("clientes")){
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());
174 else if(partesDelComando[0].equals("inscribir")){
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");
185 else if(partesDelComando[0].equals("pujar")){
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");
197 System.out.println("No es suficiente");
199 else if(partesDelComando[0].equals("ultima")){
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());
211 // creacion de clientes
212 else if(partesDelComando[0].equals("crearcliente")){
214 clienteSubastas cl=null;
215 id = partesDelComando[1];
216 cl = crearCliente(id, poa);
217 clientes[n_clientes++] = cl;
219 else if(partesDelComando[0].equals("cldisp")){
220 for(int i=0; i<n_clientes; i++){
221 System.out.println(i+": "+clientes[i].identificacion());
227 System.out.println("FIN");