/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package twitter; import java.util.ArrayList; import java.util.Date; import java.util.Objects; import java.util.Scanner; /** * * @author user */ class Tweet{ private Usuario usuario; private String text; private int numeroRt; private int numeroFav; private String imageUrl; private String linkUrl; private ArrayList reacciones; private ArrayList respuestas; public Tweet(Usuario usuario, String text, String imageUrl, String linkUrl) { this.usuario = usuario; this.text = text; this.imageUrl = imageUrl; this.linkUrl = linkUrl; this.numeroFav = 0; this.numeroRt = 0; this.respuestas = new ArrayList(); this.reacciones = new ArrayList(); } public static void likear(Usuario usuario, int tweetId){ BaseDeDatos.getTweetById(tweetId).addLike(usuario); } public void addLike(Usuario usuario){ for(Reaccion reaccion: reacciones){ if(reaccion.getUsuario()==usuario){ System.out.println("Ya diste like a esta publicacion"); return; } } this.reacciones.add(new Reaccion(usuario, this, "LIKE")); this.numeroFav++; } public static void retweetear(Usuario usuario, int tweetId){ BaseDeDatos.getTweetById(tweetId).addRt(usuario); } public void addRt(Usuario usuario){ for(Reaccion reaccion: reacciones){ if(reaccion.getUsuario()==usuario){ System.out.println("Ya diste rt a esta publicacion"); return; } } this.reacciones.add(new Reaccion(usuario, this, "RT")); this.numeroRt++; } public static void responder(Usuario usuario, int tweetId){ BaseDeDatos.getTweetById(tweetId).addRespuesta(usuario); } public void addRespuesta(Usuario usuario){ respuestas.add(Respuesta.tweetear(usuario, this)); } public static void tweetear(Usuario user){ Scanner in = new Scanner(System.in); String text; String imageUrl=null; String linkUrl=null; String choice; try{ System.out.println("Texto"); System.out.print("-----> "); text = in.nextLine(); System.out.print("\nDesea agregar una imagen al tweet?(Y/N): "); choice = (in.nextLine()).toLowerCase(); if(choice.equals("y")){ System.out.print("\nURL De la Imagen: "); imageUrl = in.nextLine(); } System.out.print("\nDesea agregar un link al tweet?(Y/N): "); choice = (in.nextLine()).toLowerCase(); if(choice.equals("y")){ System.out.print("\nURL: "); linkUrl = in.nextLine(); } BaseDeDatos.addTweet(new Tweet(user, text, imageUrl, linkUrl)); }catch (Exception e){ System.out.println("Error"); } } public Usuario getUsuario() { return usuario; } public String getText() { return text; } public int getNumeroRt() { return numeroRt; } public int getNumeroFav() { return numeroFav; } public String getImageUrl() { return imageUrl; } public String getLinkUrl() { return linkUrl; } public ArrayList getRespuestas() { return respuestas; } } //} public class Dashboard { private Usuario usuario; public Dashboard(Usuario usuario) { this.usuario = usuario; } public void verUltimosTweets(int limit){ ArrayList tweets = BaseDeDatos.getTweets(); ArrayList usuarios = this.usuario.seguimiento.getSeguidos(); int count = 0; int index=0; for(Tweet tweet: tweets){ if(usuarios.contains(tweet.getUsuario()) || tweet.getUsuario()==this.usuario){ System.out.print("\n---------------------"); System.out.print("\n\t*id: "+index+"\n\tAutor: "+tweet.getUsuario().getNombreUsuario()+ "\n\tTexto: "+tweet.getText()); System.out.print("\n\tLikes: "+tweet.getNumeroFav()+"\tRts: "+tweet.getNumeroRt()); if(tweet.getImageUrl()!=null){ System.out.print("\n\tImage: "+tweet.getImageUrl()); } if(tweet.getLinkUrl()!=null){ System.out.print("\n\tLink: "+tweet.getLinkUrl()); } if(!tweet.getRespuestas().isEmpty()){ System.out.print("\n\tRespuestas: "); for(Respuesta respuesta: tweet.getRespuestas()){ System.out.print("\n\t\t\t*Usuario: "+respuesta.getUsuario().getNombreUsuario()); System.out.print("\n\t\t\tText: "+respuesta.getText()); if(respuesta.getImageUrl()!=null){ System.out.print("\n\t\t\tImage: "+respuesta.getImageUrl()); } if(respuesta.getLinkUrl()!=null){ System.out.print("\n\t\t\tLink: "+respuesta.getLinkUrl()); } } } count++; if(count>limit){ return; } } System.out.println("\n\n"); index++; } } } public class Reaccion { private Usuario usuario; private Tweet tweet; private String tipoDeReaccion; public Reaccion(Usuario usuario, Tweet tweet, String tipoDeReaccion) { this.usuario = usuario; this.tweet = tweet; this.tipoDeReaccion = tipoDeReaccion; } public Usuario getUsuario() { return usuario; } public Tweet getTweet() { return tweet; } public String getTipoDeReaccion() { return tipoDeReaccion; } } class ComentarioUrl extends Tweet{ //Propiedades: //linkUrl } class reacciones{ //Propiedades: //Usuario //Tweet //tipoDeReaccion } public class BaseDeDatos { private static final ArrayList usuarios = new ArrayList(); private static final ArrayList tweets = new ArrayList(); public static void addUsuario(Usuario usuario){ /* * Agrega un usuario si este no existe. * */ for(Usuario user: usuarios){ if(user.getNombreUsuario().equals(usuario.getNombreUsuario())){ System.out.println("ESTE NOMBRE DE USUARIO YA ESTA REGISTRADO"); return; } } usuarios.add(usuario); } public static ArrayList getUsuarios(){ /* * Obtiene todos los usuarios */ return usuarios; } public static Usuario getUsuarioByUsername(String username){ /* Obtiene un usuario por su username, si no existe retorna null */ for(Usuario user: usuarios){ if(user.getNombreUsuario().equals(username)) return user; } return null; } public static void addTweet(Tweet tweet){ tweets.add(tweet); } public static ArrayList getTweets(){ return tweets; } public static Tweet getTweetById(int id){ return tweets.get(id); } } class Usuario{ private String nombreUsuario; private String contrasenha; private String correo; private Date fechaNacimiento; private Date fechaRegistro; private String fotoUrl; private String descripcion; public Seguimiento seguimiento; public Dashboard dashboard; public Usuario(String nombreUsuario, String contrasenha, String correo, Date fechaNacimiento, Date fechaRegistro, String fotoUrl, String descripcion, boolean esVerficado) { this.nombreUsuario = nombreUsuario; this.contrasenha = contrasenha; this.correo = correo; this.fechaNacimiento = fechaNacimiento; this.fechaRegistro = fechaRegistro; this.fotoUrl = fotoUrl; this.descripcion = descripcion; this.esVerficado = esVerficado; this.seguimiento = new Seguimiento(this); this.dashboard = new Dashboard(this); } private boolean esVerficado; public Usuario(String nombreUsuario, String contrasenha, String correo, String descripcion) { this.nombreUsuario = nombreUsuario; this.contrasenha = contrasenha; this.correo = correo; this.descripcion = descripcion; this.seguimiento = new Seguimiento(this); this.dashboard = new Dashboard(this); } public static Usuario registarUsuario(){ /* * Funcion que crea un usuario y lo retorna para ser guardado. * */ Scanner in = new Scanner(System.in); String username; String password; String mail; String fotoUrl; String descripcion; try{ System.out.print("\nIngrese nombre de usuario: "); username = in.nextLine(); System.out.print("\nIngrese contrasenha: "); password = in.nextLine(); System.out.print("\nIngrese mail: "); mail = in.nextLine(); System.out.print("\nIngrese una descripcion: "); descripcion = in.nextLine(); return new Usuario(username, password, mail, descripcion); }catch (Exception e){ System.out.println("Un error"); } return null; } public static Usuario iniciarSesion(){ /* Retorna usuario si las credenciales son correctas, null en caso contrario */ Scanner in = new Scanner(System.in); String username; String password; try{ System.out.print("\nIngrese su Nombre de Usuario: "); username = in.nextLine(); System.out.print("\nIngrese su Contrasenha: "); password = in.nextLine(); Usuario u = Objects.requireNonNull(BaseDeDatos.getUsuarioByUsername(username)); if(u.getContrasenha().equals(password)){ return u; }else{ System.out.println("Credenciales Incorrectas!"); return null; } }catch (Exception e){ System.out.println("Credenciales Incorrectas!"); } return null; } public String getNombreUsuario() { return nombreUsuario; } public String getContrasenha() { return contrasenha; } public String getCorreo() { return correo; } public Date getFechaNacimiento() { return fechaNacimiento; } public Date getFechaRegistro() { return fechaRegistro; } public String getFotoUrl() { return fotoUrl; } public String getDescripcion() { return descripcion; } public boolean isEsVerficado() { return esVerficado; } } //nombreUsuario //Contrasena //Correo //fechaNacimiento //fechaIngreso //urlPhoto //Descripcion //isVerificado //Métodos: //Getter //Setter //} class Reacciones{ Usuario u; Tweet t; public void Reacciones (Usuario u, Tweet t){ this.u=u; this.t= t; } } // propiedades,tweet id, tweetId, tweettexto //tweetTexto //nroLikes //Usuario u//Métodos: //Getter //Setter //verComentario //Class ComentarioImage extends Tweet{} //Class Usuario{ public class Twitter { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here } }