Commit c8fa3e5e by Joel Florentin

twitter

parents
*.class
\ No newline at end of file
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<Usuario> usuarios = new ArrayList<>();
static List<Tweet> tweets = new ArrayList<>();
static List<Reaccion> 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;
}
}
}
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;
}
}
package twitter;
import java.util.ArrayList;
import java.util.List;
public interface Dashboard {
public static List<Tweet> lastTweets(Usuario user) {
List<Tweet> resultados = new ArrayList<>();
user.getSeguidos().stream().forEach(u -> resultados.addAll(u.getTweets()));
return resultados;
}
}
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
package twitter;
public enum TipoReaccion {
RETWEET, LIKE;
}
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;
}
}
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<Usuario> seguidos;
private List<Usuario> seguidores;
private List<Usuario> bloqueados;
private List<Tweet> 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<Usuario> getBloqueados() {
return bloqueados;
}
public List<Usuario> getSeguidores() {
return seguidores;
}
public List<Usuario> getSeguidos() {
return seguidos;
}
public List<Tweet> getTweets() {
return tweets;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return getUsername();
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment