public class ServerThread extends Thread{ Socket socket; public ServerThread(Socket socket) { this.socket = socket; } public void run() { try { BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream())); String linealeida[]; do { linealeida = br.readLine().split(" "); switch (linealeida[0]) { case "ADD": if(linealeida.length == 3) { ArrayList listado; listado = Server.listaElementos.get(linealeida[1]); Elemento elemento = new Elemento(linealeida[1], Double.parseDouble(linealeida[2])); if (listado == null) { listado = new ArrayList(); Server.listaElementos.put(linealeida[1], listado); } listado.add(elemento); pw.println("Elemento insertado"); pw.flush(); }else { pw.println("Uso incorrecto para ADD"); pw.flush(); } break; case "GET": if(linealeida.length == 2) { ArrayList listado = new ArrayList(); listado = Server.listaElementos.get(linealeida[1]); if(listado == null){ pw.println("Ese elemento no exite en la lista"); pw.flush(); }else { double total=0; for(Elemento elemento : listado) { total += elemento.cantidad; } pw.println("Total: " + total); pw.flush(); } }else { pw.println("USo incorrecto del comando GET"); pw.flush(); } break; case "DELETE": if(linealeida.length == 2) { ArrayList listado = new ArrayList(); listado = Server.listaElementos.get(linealeida[1]); if(listado == null){ pw.println("Ese elemento no existe"); pw.flush(); }else { listado.remove(listado.size()-1); pw.println("Elemento eliminado"); pw.flush(); } }else { pw.println("USo incorrecto del comando DELETE"); pw.flush(); } break; case "EXIT": pw.println("cerrar"); pw.flush(); break; default: pw.println("Error: Comando inexistente"); pw.flush(); break; } }while(linealeida[0].equals("EXIT")==false); br.close(); pw.close(); } catch (IOException e) { System.out.println("Error en el Socket ServerThread: "+ e); } } }