package br.com.dextra.dextranet.grupo; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang.StringUtils; import br.com.dextra.dextranet.grupo.servico.google.GoogleGrupoJSON; import br.com.dextra.dextranet.persistencia.Entidade; import br.com.dextra.dextranet.seguranca.AutenticacaoService; import br.com.dextra.dextranet.utils.ConteudoHTML; import com.google.appengine.api.datastore.Entity; public class Grupo extends Entidade { private String nome; private String descricao; private String proprietario; private List<Membro> membros; private List<ServicoGrupo> servicoGrupos; private Boolean infra = false; public Grupo() { } public Grupo(String nome, String descricao, String proprietario) { super(); preenche(nome, descricao, proprietario); } public Grupo(Entity entidade) { this.id = (String) entidade.getProperty(GrupoFields.id.name()); this.nome = (String) entidade.getProperty(GrupoFields.nome.name()); this.descricao = (String) entidade.getProperty(GrupoFields.descricao.name()); this.proprietario = (String) entidade.getProperty(GrupoFields.proprietario.name()); this.infra = (Boolean) entidade.getProperty(GrupoFields.infra.name()); } @Override public Entity toEntity() { Entity entidade = new Entity(this.getKey(Grupo.class)); entidade.setProperty(GrupoFields.id.name(), this.id); entidade.setProperty(GrupoFields.nome.name(), this.nome); entidade.setProperty(GrupoFields.descricao.name(), this.descricao); entidade.setProperty(GrupoFields.proprietario.name(), this.proprietario); entidade.setProperty(GrupoFields.infra.name(), this.infra); return entidade; } public Grupo preenche(String nome, String descricao, String proprietario) { ConteudoHTML conteudoHTML = new ConteudoHTML(nome); this.nome = conteudoHTML.removeJavaScript(); conteudoHTML = new ConteudoHTML(descricao); this.descricao = conteudoHTML.removeJavaScript(); conteudoHTML = new ConteudoHTML(proprietario); this.proprietario = conteudoHTML.removeJavaScript(); return this; } public GrupoJSON getGrupoJSON() { GrupoJSON grupojson = new GrupoJSON(this.id, this.nome, this.descricao, getUsuarioJSON(), getServicos()); grupojson.setProprietario(proprietario); grupojson.setInfra(this.infra); String username = AutenticacaoService.identificacaoDoUsuarioLogado(); Boolean isUsuarioGrupoInfra = AutenticacaoService.isUsuarioGrupoInfra(); for (Membro membro : getMembros()) { if (isUsuarioGrupoInfra || (!StringUtils.isEmpty(membro.getEmail()) && membro.getEmail().equals(username))) { grupojson.setEditarGrupo(true); break; } else { grupojson.setEditarGrupo(false); } } if (isUsuarioGrupoInfra || proprietario.equals(username)) { grupojson.setExcluirGrupo(true); } else { grupojson.setExcluirGrupo(false); } return grupojson; } public String getNome() { return nome; } public String getDescricao() { return descricao; } public String getProprietario() { return proprietario; } public Grupo comProprietario(String proprietario) { this.proprietario = proprietario; return this; } public List<UsuarioJSON> getUsuarioJSON() { UsuarioJSON usuariojson; List<UsuarioJSON> usuariosjson = new ArrayList<UsuarioJSON>(); for (Membro membro : this.membros) { usuariojson = new UsuarioJSON(membro.getIdUsuario(), membro.getNomeUsuario(), membro.getEmail()); usuariosjson.add(usuariojson); } return usuariosjson; } public List<GoogleGrupoJSON> getServicos() { List<GoogleGrupoJSON> googleGrupoJSONs = new ArrayList<GoogleGrupoJSON>(); for (ServicoGrupo servicoGrupos : this.servicoGrupos) { GoogleGrupoJSON googleGrupoJSON = new GoogleGrupoJSON(servicoGrupos.getId(), servicoGrupos.getIdServico(), servicoGrupos.getEmailGrupo(), null, servicoGrupos.getEmailsExternos()); googleGrupoJSONs.add(googleGrupoJSON); } return googleGrupoJSONs; } public List<Membro> getMembros() { return membros; } public void setMembros(List<Membro> membros) { this.membros = membros; } public List<ServicoGrupo> getServicoGrupos() { return servicoGrupos; } public void setServicoGrupos(List<ServicoGrupo> servicoGrupos) { this.servicoGrupos = servicoGrupos; } public Boolean isInfra() { return infra; } public void setInfra(Boolean infra) { this.infra = infra; } @Override public String toString() { return new StringBuilder().append("Grupo [") .append(GrupoFields.id.name() + "=").append(this.id + ",") .append(GrupoFields.nome.name() + "=").append(this.nome + ",") .append(GrupoFields.descricao.name() + "=").append(this.descricao + ",") .append(GrupoFields.proprietario.name() + "=").append(this.proprietario).append("]").toString(); } }