package br.com.dextra.dextranet.conteudo;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import br.com.dextra.dextranet.conteudo.post.curtida.Curtida;
import br.com.dextra.dextranet.persistencia.Entidade;
import br.com.dextra.dextranet.seguranca.AutenticacaoService;
import br.com.dextra.dextranet.usuario.Usuario;
import br.com.dextra.dextranet.utils.TimeMachine;
public abstract class Conteudo extends Entidade {
protected String usuario;
protected String usuarioMD5;
protected String conteudo;
protected Date dataDeCriacao;
protected long quantidadeDeCurtidas;
protected List<String> usuariosQueCurtiram;
protected Conteudo(String usuario) {
super();
this.usuario = usuario;
this.usuarioMD5 = Usuario.geraMD5(this.usuario);
this.dataDeCriacao = new TimeMachine().dataAtual();
this.quantidadeDeCurtidas = 0;
this.usuariosQueCurtiram = new ArrayList<String>();
}
public String getUsuario() {
return usuario;
}
public String getConteudo() {
return conteudo;
}
public Date getDataDeCriacao() {
return dataDeCriacao;
}
public long getQuantidadeDeCurtidas() {
return quantidadeDeCurtidas;
}
public String getUsuarioMD5() {
return usuarioMD5;
}
public List<String> getUsuariosQueCurtiram() {
return this.usuariosQueCurtiram;
}
public Curtida curtir(String username) {
Curtida curtida = null;
if (!this.usuarioJaCurtiu(username)) {
this.quantidadeDeCurtidas++;
this.usuariosQueCurtiram.add(username);
curtida = new Curtida(this.getId(), username);
}
return curtida;
}
public Conteudo descurtir(String username) {
if (this.usuarioJaCurtiu(username)) {
this.quantidadeDeCurtidas--;
this.usuariosQueCurtiram.remove(username);
}
return this;
}
public boolean usuarioJaCurtiu(String username) {
return this.usuariosQueCurtiram.contains(username);
}
public boolean getUsuarioCurtiu() {
return this.usuarioJaCurtiu(AutenticacaoService.identificacaoDoUsuarioLogado());
}
public void registraDataDeMigracao(Date data) {
this.dataDeCriacao = data;
}
}