package br.com.dextra.dextranet.conteudo.post.comentario; import java.util.ArrayList; import java.util.Date; import java.util.List; import br.com.dextra.dextranet.conteudo.Conteudo; import br.com.dextra.dextranet.conteudo.ConteudoIndexavel; import br.com.dextra.dextranet.utils.ConteudoHTML; import com.google.appengine.api.datastore.Entity; import com.google.appengine.api.datastore.Text; import com.google.appengine.api.search.Document; import com.google.appengine.api.search.Field; public class Comentario extends Conteudo implements ConteudoIndexavel { private String postId; public Comentario(String postId, String username, String conteudo) { super(username); this.postId = postId; this.conteudo = new ConteudoHTML(conteudo).removeJavaScript(); } @SuppressWarnings("unchecked") public Comentario(Entity entity) { super((String) entity.getProperty(ComentarioFields.usuario.name())); this.id = (String) entity.getProperty(ComentarioFields.id.name()); this.conteudo = ((Text) entity.getProperty(ComentarioFields.conteudo.name())).getValue(); this.quantidadeDeCurtidas = (Long) entity.getProperty(ComentarioFields.quantidadeDeCurtidas.name()); this.usuariosQueCurtiram = (List<String>) entity.getProperty(ComentarioFields.usuariosQueCurtiram.name()); this.dataDeCriacao = (Date) entity.getProperty(ComentarioFields.dataDeCriacao.name()); this.postId = (String) entity.getProperty(ComentarioFields.postId.name()); if (this.usuariosQueCurtiram == null) { this.usuariosQueCurtiram = new ArrayList<String>(); } } public String getPostId() { return postId; } @Override public Entity toEntity() { Entity entidade = new Entity(this.getKey(this.getClass())); entidade.setProperty(ComentarioFields.id.name(), this.id); entidade.setProperty(ComentarioFields.conteudo.name(), new Text(this.conteudo)); entidade.setProperty(ComentarioFields.quantidadeDeCurtidas.name(), this.quantidadeDeCurtidas); entidade.setProperty(ComentarioFields.usuariosQueCurtiram.name(), this.usuariosQueCurtiram); entidade.setProperty(ComentarioFields.usuario.name(), this.usuario); entidade.setProperty(ComentarioFields.usuarioMD5.name(), this.usuarioMD5); entidade.setProperty(ComentarioFields.dataDeCriacao.name(), this.dataDeCriacao); entidade.setProperty(ComentarioFields.postId.name(), this.postId); return entidade; } @Override public String toString() { return "Comentario [postId=" + postId + ", usuario=" + usuario + ", dataDeCriacao=" + dataDeCriacao + ", quantidadeDeCurtidas=" + quantidadeDeCurtidas + ", id=" + id + "]"; } @Override public Document toDocument() { Document document = Document.newBuilder().setId(id) .addField(Field.newBuilder().setName(ComentarioFields.id.name()).setText(id)) .addField(Field.newBuilder().setName(ComentarioFields.conteudo.name()).setText(conteudo)) .addField(Field.newBuilder().setName(ComentarioFields.usuario.name()).setText(usuario)).build(); return document; } }