public class ServerThread extends Thread{ Socket socket; Declaramos Socket public ServerThread(Socket socket){//constructor de clase this.socket = socket } public void run(){//Funcionalidad Arranque del hilo servidor try{ System.out.println("CONECTADO"); BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter pr = new PrintWriter(new OutputStreamWriter(socket.getOutputStream())); string[] linealeida; do{ linealeida = br.readLine().split("");//separamos para pillar primero el comando switch(lineaLeida[0]){ //Comando ADD, formato: ADD nombre cantidad (add patata 1) case "ADD": if(lineaLeida.length==3){Si el comando tiene 3 elementos (Comando, nombre, cantidad) ArrayList elementos = null;//Declaramos nueva lista de elementos Elemento elemento = new Elemento(lineaLeida[1], Double.parsedDouble(linealeida[2])); elementos= Server.listaElementos.get(linealeida[1]); if(elementos==null){//si no se encuentra el elemento elementos = new ArrayList() //creamos nueva lista Server.listaElementos.put(elemento.nombre, Elementos); } Elementos.add(elemento); pw.println("elemento añadido al nombre especificado"); pw.flush; }else{ pw.println(linealeida[0] + "El comando necesita mas argumentos\nEstructura: ADD Nombre, Cantidad"); pw.flush(); } break; //Comando GET, formato: Get Nombre (Get patata) case "GET": if(linealeida.legth==2){ //Si el comando tiene GET + el Nombre ArrayList elementos = null elementos = Server.listaElementos.get(lineaLeida[1]);//buscamos nombre en la lista if(elementos == null){//Si no se encuentra el elemento pw.println("0"); pw.flush; }else{ double total = 0; for(Elemento elemento: elementos){ total+=elemento.cantidad; } pw.println(total); pw.flush; } }else{ pw.println(linealeida[0]+"no tiene estructura valida\nUso: GET Nombre"); pw.flush(); } break; //Comando DELETE, uso: DELETE Nombre (DELETE Patata) case "DELETE": if(linealeida.lenght == 2){ ArrayList Elementos = null; Elementos = Server.listaElementos.get(lineaLeida[1]); if((Elementos==null || Elementso.size()==0)){ pw.println("no hay elementos para este nombre"); pw.flush(); }else{ Elementos.remove(elementos.size()-1); pw.println("elemento borrado con éxito"); pw.flush(); } }else{ pw.println(linealeida[0] + "se ha usado incorrectamente\nUso: DELETE Patata") } break; //Comando de salida EXIT case "EXIT": if(lineaLeida.leght==1){ pw.println("Cerrado"); pw.flush(); }else{ pw.printl("el comando EXIT tiene demasiados elementos") pw.flush(); } break; //En caso de introducir comando invalido default: pw.prinln("comando inexistente"); pw.flush; break; } }while(linealleida[0].conentEquals("exit")==false) }catch(IOException e){ e.printStackTrace(); } } }