package br.com.dextra.dextranet.grupo;
import java.util.ArrayList;
import java.util.List;
import br.com.dextra.dextranet.persistencia.EntidadeOrdenacao;
import br.com.dextra.dextranet.persistencia.EntidadeRepository;
import br.com.dextra.dextranet.usuario.Usuario;
import com.google.appengine.api.datastore.Entity;
import com.google.appengine.api.datastore.EntityNotFoundException;
import com.google.appengine.api.datastore.Query.SortDirection;
public class MembroRepository extends EntidadeRepository {
public Membro persiste(Membro membro) {
return super.persiste(membro);
}
public Membro obtemPorId(String id) throws EntityNotFoundException {
Entity membroEntity = this.obtemPorId(id, Membro.class);
return new Membro(membroEntity);
}
public List<Membro> obtemPorIdGrupo(String idGrupo) throws EntityNotFoundException {
List<String> campos = new ArrayList<String>();
campos.add(MembroFields.idGrupo.name());
List<Object> valores = new ArrayList<Object>();
valores.add(idGrupo);
Iterable<Entity> entidades = super.obterPor(Membro.class, campos, valores);
List<Membro> membros = new ArrayList<Membro>();
Membro membro = null;
for (Entity entity : entidades) {
membro = new Membro(entity);
membros.add(membro);
}
return membros;
}
public Membro obtemPor(String idUsuario, String idGrupo) throws EntityNotFoundException {
List<String> campos = new ArrayList<String>();
campos.add(MembroFields.idGrupo.name());
campos.add(MembroFields.idUsuario.name());
List<Object> valores = new ArrayList<Object>();
valores.add(idGrupo);
valores.add(idUsuario);
Iterable<Entity> entidades = super.obterPor(Membro.class, campos, valores);
if (entidades != null && entidades.iterator().hasNext()) {
return new Membro(entidades.iterator().next());
}
return null;
}
public List<Membro> obtemPorIdUsuario(String idUsuario) throws EntityNotFoundException {
List<String> campos = new ArrayList<String>();
campos.add(MembroFields.idUsuario.name());
List<Object> valores = new ArrayList<Object>();
valores.add(idUsuario);
Iterable<Entity> entidades = super.obterPor(Membro.class, campos, valores);
List<Membro> membros = new ArrayList<Membro>();
Membro membro = null;
for (Entity entity : entidades) {
membro = new Membro(entity);
membros.add(membro);
}
return membros;
}
public List<Membro> lista() {
EntidadeOrdenacao entidadeOrdenacao = new EntidadeOrdenacao(MembroFields.id.name(), SortDirection.ASCENDING);
Iterable<Entity> entidades = super.lista(Membro.class, entidadeOrdenacao);
Membro membro;
List<Membro> membros = new ArrayList<Membro>();
for (Entity entity : entidades) {
membro = new Membro(entity);
membros.add(membro);
}
return membros;
}
public void remove(String id) {
this.remove(id, Membro.class);
}
public void removeMembroDosGruposPor(Usuario usuario) throws EntityNotFoundException {
List<Membro> membros = obtemPorIdUsuario(usuario.getId());
for (Membro membro : membros) {
remove(membro.getId());
}
}
public Membro obtemPorUsername(String usuarioLogado, String idGrupo) {
List<String> campos = new ArrayList<String>();
campos.add(MembroFields.email.name());
campos.add(MembroFields.idGrupo.name());
List<Object> valores = new ArrayList<Object>();
valores.add(usuarioLogado);
valores.add(idGrupo);
Iterable<Entity> entidades = super.obterPor(Membro.class, campos, valores);
if (entidades != null && entidades.iterator().hasNext()) {
return new Membro(entidades.iterator().next());
}
return null;
}
}