import java.io.Console; import java.util.ArrayList; import java.util.List; import twitter.Reaccion; import twitter.TipoReaccion; import twitter.Tweet; import twitter.Usuario; public class PruebaTwitter { static Console cons = System.console(); static List usuarios = new ArrayList<>(); static List tweets = new ArrayList<>(); static List reacciones = new ArrayList<>(); static int i = 0; public static void main(String[] args) { usuarios.add(new Usuario(1, "joel", "123", "email", "19/10", "10/10", "urlPhoto", "descripcion", false)); usuarios.add(new Usuario(2, "jamie", "123", "email", "19/10", "10/10", "urlPhoto", "descripcion", false)); usuarios.add(new Usuario(3, "jessica", "123", "email", "19/10", "10/10", "urlPhoto", "descripcion", false)); usuarios.add(new Usuario(4, "gisele", "123", "email", "19/10", "10/10", "urlPhoto", "descripcion", false)); usuarios.add(new Usuario(5, "fabiola", "123", "email", "19/10", "10/10", "urlPhoto", "descripcion", false)); String opcion,username; do{ System.out.println("Ingrese una opcion:"); System.out.println("1-Crear Usuario"); System.out.println("2-Listar Usuario"); System.out.println("3-Ingresar como usuario"); System.out.println("4-Salir"); opcion = cons.readLine(); switch (opcion) { case "1": crearUsuario(); break; case "2": usuarios.stream().forEach(u -> System.out.println(u.getUsername())); break; case "3": System.out.println("Seleccione una opcion"); i = 0; usuarios.stream().forEach(u -> System.out.printf("%d - %s\n",++i,u.getUsername())); username = cons.readLine(); asUser(usuarios.get(Integer.parseInt(username)-1)); break; default: break; } }while(!opcion.equals("4")); } public static void crearUsuario() { System.out.println("Introduzca datos del usuario en el siguiente formato"); System.out.println("username,password,email,fechaNac,fechaCreacion,urlPhoto,descripcion,isVerificado"); String input = cons.readLine(); String [] datos_user = input.split(","); usuarios.add(new Usuario(usuarios.size()+1, datos_user[0], datos_user[1], datos_user[2], datos_user[3], datos_user[4], datos_user[5], datos_user[6], datos_user[7].equals("true"))); } public static void asUser(Usuario logueado) { String nroTweet; System.out.println("Seleccione accion que desee realizar con el usuario seleccionado"); System.out.println("1-Realizar tweet"); System.out.println("2-Dar like a un tweet"); System.out.println("3-Hacer retweet a un tweet"); System.out.println("4-Ver seguidos"); System.out.println("5-Ver seguidores"); System.out.println("6-Ver tweets"); System.out.println("7-Ver todos los likes"); System.out.println("8-Ver todos los retweets"); System.out.println("9-Seguir a alguien"); System.out.println("10-Dejar de seguir a alguien"); System.out.println("11-Ver Tweet de seguidos"); String opcion = cons.readLine(); switch (opcion) { case "1": System.out.println("texto,imgUrl,link"); String input = cons.readLine(); String [] datos_tweet = input.split(","); tweets.add(new Tweet(tweets.size()+1, datos_tweet[0], 0, 0, logueado, "", datos_tweet[1], datos_tweet[2])); break; case "2": System.out.println("Seleccione el tweet que quiere darle like"); for (int i = 0; i < tweets.size(); i++) { System.out.printf("%d - %s\n",i+1,tweets.get(i).getTexto()); } nroTweet = cons.readLine(); reacciones.add(new Reaccion(tweets.get(Integer.parseInt(nroTweet)-1), TipoReaccion.LIKE, logueado)); break; case "3": System.out.println("Seleccione el tweet que quiere darle like"); for (int i = 0; i < tweets.size(); i++) { System.out.printf("%d - %s\n",i+1,tweets.get(i).getTexto()); } nroTweet = cons.readLine(); reacciones.add(new Reaccion(tweets.get(Integer.parseInt(nroTweet)-1), TipoReaccion.LIKE, logueado)); break; case "4": System.out.println("Seguidos del usuario"); logueado.getSeguidos().forEach(seg -> System.out.println(seg)); break; case "5": System.out.println("Seguidores del usuario"); logueado.getSeguidores().forEach(seg -> System.out.println(seg)); break; case "6": System.out.println("Tweets del usuario"); tweets.stream().filter(tw -> tw.getOwner().equals(logueado)).forEach(seg -> System.out.println(seg)); break; case "7": reacciones.stream().filter(r -> r.getTipo()==TipoReaccion.LIKE && r.getOwner()==logueado).forEach(seg -> System.out.println(seg)); break; case "8": reacciones.stream().filter(r -> r.getTipo()==TipoReaccion.RETWEET && r.getOwner()==logueado).forEach(seg -> System.out.println(seg)); break; case "9": System.out.println("Selecciona un usuario"); for (int i = 0; i < usuarios.size(); i++) { //TODO: excluir al usuario logueado if(usuarios.get(i)==logueado) continue; System.out.printf("%d - %s\n",i+1,usuarios.get(i)); } opcion = cons.readLine(); logueado.addSeguido(usuarios.get(Integer.parseInt(opcion)-1)); break; case "10": System.out.println("Selecciona un usuario"); for (int i = 0; i < logueado.getSeguidos().size(); i++) { System.out.printf("%d - %s\n",i+1,logueado.getSeguidos().get(i)); } opcion = cons.readLine(); logueado.removeSeguido(logueado.getSeguidos().get(Integer.parseInt(opcion)-1)); break; default: break; } } }