From c8fa3e5e2013acb23e659ead83c9079c2237b4ae Mon Sep 17 00:00:00 2001 From: Joel Date: Tue, 26 Oct 2021 08:05:42 -0300 Subject: [PATCH] twitter --- .gitignore | 1 + PruebaTwitter.java | 142 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ twitter/Comentario.java | 17 +++++++++++++++++ twitter/Dashboard.java | 12 ++++++++++++ twitter/Reaccion.java | 32 ++++++++++++++++++++++++++++++++ twitter/TipoReaccion.java | 5 +++++ twitter/Tweet.java | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ twitter/Usuario.java | 144 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 433 insertions(+) create mode 100644 .gitignore create mode 100644 PruebaTwitter.java create mode 100644 twitter/Comentario.java create mode 100644 twitter/Dashboard.java create mode 100644 twitter/Reaccion.java create mode 100644 twitter/TipoReaccion.java create mode 100644 twitter/Tweet.java create mode 100644 twitter/Usuario.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5241a72 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.class \ No newline at end of file diff --git a/PruebaTwitter.java b/PruebaTwitter.java new file mode 100644 index 0000000..47c1e1a --- /dev/null +++ b/PruebaTwitter.java @@ -0,0 +1,142 @@ + + +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; + } + } +} diff --git a/twitter/Comentario.java b/twitter/Comentario.java new file mode 100644 index 0000000..06c15af --- /dev/null +++ b/twitter/Comentario.java @@ -0,0 +1,17 @@ +package twitter; +public class Comentario extends Tweet { + private Tweet padre; + + public Comentario(int id,String texto,int likesCount,int retweetCount,Usuario owner,String fechaCreacion,String imgUrl,String link,Tweet padre) { + super(id, texto, likesCount, retweetCount, owner, fechaCreacion, imgUrl, link); + this.padre = padre; + } + + public Tweet getPadre() { + return padre; + } + + public void setPadre(Tweet padre) { + this.padre = padre; + } +} diff --git a/twitter/Dashboard.java b/twitter/Dashboard.java new file mode 100644 index 0000000..554b4a4 --- /dev/null +++ b/twitter/Dashboard.java @@ -0,0 +1,12 @@ +package twitter; + +import java.util.ArrayList; +import java.util.List; + +public interface Dashboard { + public static List lastTweets(Usuario user) { + List resultados = new ArrayList<>(); + user.getSeguidos().stream().forEach(u -> resultados.addAll(u.getTweets())); + return resultados; + } +} diff --git a/twitter/Reaccion.java b/twitter/Reaccion.java new file mode 100644 index 0000000..bb259c8 --- /dev/null +++ b/twitter/Reaccion.java @@ -0,0 +1,32 @@ +package twitter; + +public class Reaccion { + private TipoReaccion tipo; + private Tweet tweet; + private Usuario owner; + + public Reaccion(Tweet tweet, TipoReaccion tipo, Usuario owner) { + this.tipo = tipo; + this.owner = owner; + this.tweet = tweet; + } + + public Usuario getOwner() { + return owner; + } + public TipoReaccion getTipo() { + return tipo; + } + public Tweet getTweet() { + return tweet; + } + public void setOwner(Usuario owner) { + this.owner = owner; + } + public void setTipo(TipoReaccion tipo) { + this.tipo = tipo; + } + public void setTweet(Tweet tweet) { + this.tweet = tweet; + } +} \ No newline at end of file diff --git a/twitter/TipoReaccion.java b/twitter/TipoReaccion.java new file mode 100644 index 0000000..7d4afdc --- /dev/null +++ b/twitter/TipoReaccion.java @@ -0,0 +1,5 @@ +package twitter; + +public enum TipoReaccion { + RETWEET, LIKE; +} diff --git a/twitter/Tweet.java b/twitter/Tweet.java new file mode 100644 index 0000000..553b2a1 --- /dev/null +++ b/twitter/Tweet.java @@ -0,0 +1,80 @@ +package twitter; + +public class Tweet { + private int id; + private String texto; + private int likesCount; + private int retweetCount; + private Usuario owner; + private String link; + private String fechaCreacion; + private String imgUrl; + + public Tweet(int id,String texto,int likesCount,int retweetCount,Usuario owner,String fechaCreacion,String imgUrl,String link) { + this.id=id; + this.texto=texto; + this.likesCount=likesCount; + this.retweetCount=retweetCount; + this.owner=owner; + this.link=link; + this.fechaCreacion=fechaCreacion; + this.imgUrl=imgUrl; + } + + public String getFechaCreacion() { + return fechaCreacion; + } + public int getId() { + return id; + } + public String getImgUrl() { + return imgUrl; + } + + public int getLikesCount() { + return likesCount; + } + public Usuario getOwner() { + return owner; + } + public int getRetweetCount() { + return retweetCount; + } + public String getTexto() { + return texto; + } + public void setFechaCreacion(String fechaCreacion) { + this.fechaCreacion = fechaCreacion; + } + public String getLink() { + return link; + } + public void setId(int id) { + this.id = id; + } + public void setImgUrl(String imgUrl) { + this.imgUrl = imgUrl; + } + + public void setLikesCount(int likesCount) { + this.likesCount = likesCount; + } + public void setOwner(Usuario owner) { + this.owner = owner; + } + public void setRetweetCount(int retweetCount) { + this.retweetCount = retweetCount; + } + public void setTexto(String texto) { + this.texto = texto; + } + public void setLink(String link) { + this.link = link; + } + + @Override + public String toString() { + // TODO Auto-generated method stub + return texto; + } +} diff --git a/twitter/Usuario.java b/twitter/Usuario.java new file mode 100644 index 0000000..19f6356 --- /dev/null +++ b/twitter/Usuario.java @@ -0,0 +1,144 @@ +package twitter; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +public class Usuario { + private int id; + private String username; + private String password; + private String email; + private String fechaNacimiento; + private String fechaCreacion; + private String urlPhoto; + private String descripcion; + private boolean isVerificado; + private List seguidos; + private List seguidores; + private List bloqueados; + private List tweets; + + public Usuario(int id,String username,String password,String email,String fechaNacimiento,String fechaCreacion,String urlPhoto,String descripcion,boolean isVerificado) { + this.id=id; + this.username=username; + this.password=password; + this.email=email; + this.fechaNacimiento=fechaNacimiento; + this.fechaCreacion=fechaCreacion; + this.urlPhoto=urlPhoto; + this.descripcion=descripcion; + this.isVerificado=isVerificado; + this.seguidores=new ArrayList<>(); + this.seguidos=new ArrayList<>(); + this.bloqueados=new ArrayList<>(); + this.tweets=new ArrayList<>(); + } + + public String getUsername() { + return username; + } + + public String getPassword() { + return password; + } + + public String getEmail() { + return email; + } + + public String getFechaNacimiento() { + return fechaNacimiento; + } + public String getFechaCreacion() { + return fechaCreacion; + } + public int getId() { + return id; + } + public String getDescripcion() { + return descripcion; + } + public String getUrlPhoto() { + return urlPhoto; + } + public boolean isVerificado() { + return isVerificado; + } + public void setDescripcion(String descripcion) { + this.descripcion = descripcion; + } + public void setEmail(String email) { + this.email = email; + } + public void setFechaCreacion(String fechaCreacion) { + this.fechaCreacion = fechaCreacion; + } + public void setFechaNacimiento(String fechaNacimiento) { + this.fechaNacimiento = fechaNacimiento; + } + public void setPassword(String password) { + this.password = password; + } + public void setId(int id) { + this.id = id; + } + public void setUrlPhoto(String urlPhoto) { + this.urlPhoto = urlPhoto; + } + public void setUsername(String username) { + this.username = username; + } + public void setVerificado(boolean isVerificado) { + this.isVerificado = isVerificado; + } + + public void addSeguido(Usuario seguido) { + this.seguidos.add(seguido);//el usuario sigue a alguien + seguido.addSeguidor(this);//a ese alguien le sigue el usuario + } + private void addSeguidor(Usuario seguidor){ + this.seguidores.add(seguidor); + } + public void removeSeguido(Usuario seguido){ + this.seguidos.remove(seguido); + seguido.removeSeguidor(this); + } + private void removeSeguidor(Usuario seguidor){ + this.seguidores.remove(seguidor); + } + public void addBloqueado(Usuario bloqueado){ + this.bloqueados.add(bloqueado); + } + public void removeBloqueado(Usuario bloqueado){ + this.bloqueados.remove(bloqueado); + } + + public void addTweet(Tweet tweet) { + tweets.add(tweet); + } + + public void removeTweet(Tweet tweet) { + tweets.remove(tweet); + } + + public List getBloqueados() { + return bloqueados; + } + public List getSeguidores() { + return seguidores; + } + public List getSeguidos() { + return seguidos; + } + public List getTweets() { + return tweets; + } + + @Override + public String toString() { + // TODO Auto-generated method stub + return getUsername(); + } +} -- libgit2 0.26.0