package br.com.dextra.dextranet.persistencia; import java.io.IOException; import java.net.URISyntaxException; import java.security.GeneralSecurityException; import java.util.Arrays; import java.util.List; import br.com.dextra.dextranet.grupo.Grupo; import br.com.dextra.dextranet.grupo.GrupoRepository; import br.com.dextra.dextranet.grupo.Membro; import br.com.dextra.dextranet.grupo.MembroRepository; import br.com.dextra.dextranet.grupo.ServicoGrupo; import br.com.dextra.dextranet.grupo.ServicoGrupoRepository; import br.com.dextra.dextranet.grupo.servico.Servico; import br.com.dextra.dextranet.grupo.servico.ServicoRepository; import br.com.dextra.dextranet.grupo.servico.google.Aprovisionamento; import br.com.dextra.dextranet.usuario.Usuario; import br.com.dextra.dextranet.usuario.UsuarioRepository; import com.google.api.services.admin.directory.model.Group; public class TesteUtils { private static GrupoRepository grupoRepositorio = new GrupoRepository(); private static UsuarioRepository usuarioRepositorio = new UsuarioRepository(); private static MembroRepository membroRepository = new MembroRepository(); private static ServicoRepository servicoRepository = new ServicoRepository(); private static ServicoGrupoRepository servicoGrupoRepository = new ServicoGrupoRepository(); private static Aprovisionamento aprovisionamento = new Aprovisionamento(); private static Servico getServico() { List<Servico> servicos = servicoRepository.lista(); if (servicos.size() == 0) { Servico servico = new Servico("Grupo Email"); servico = servicoRepository.persiste(servico); return servico; } return servicos.get(0); } public static Grupo criarGrupoComOsIntegrantes(String nomeEmailGrupo, Boolean isInfra, String nomeDoGrupo, Boolean addProprietarioComoMembro, Usuario... integrantes) { Grupo novoGrupo = new Grupo(nomeDoGrupo, nomeDoGrupo, integrantes[0].getUsername()); novoGrupo.setInfra(isInfra); novoGrupo = grupoRepositorio.persiste(novoGrupo); Servico servico = getServico(); ServicoGrupo servicoGrupo = new ServicoGrupo(servico.getId(), novoGrupo.getId(), nomeEmailGrupo); servicoGrupo = servicoGrupoRepository.persiste(servicoGrupo); novoGrupo.setServicoGrupos(Arrays.asList(servicoGrupo)); int cont = 0; for (Usuario integrante : integrantes) { if (!addProprietarioComoMembro && cont == 0) { cont++; continue; } else { membroRepository.persiste(new Membro(integrante.getId(), novoGrupo.getId(), integrante.getNome(), integrante .getUsername())); cont++; } } return novoGrupo; } public static void removerUsuario(String username) { usuarioRepositorio.remove(buscarUsuario(username).getId()); } public static Usuario buscarUsuario(String username) { return usuarioRepositorio.obtemPorUsername(username); } public static Usuario criarUsuario(String username, Boolean isAtivo) { try { Usuario usuario = usuarioRepositorio.obtemPorUsername(username); return usuario; } catch (EntidadeNaoEncontradaException e) { Usuario novoUsuario = new Usuario(username); novoUsuario.setAtivo(isAtivo); novoUsuario = usuarioRepositorio.persiste(novoUsuario); return novoUsuario; } } public static Group buscarGrupoGoogle(String emailGrupo) throws IOException, GeneralSecurityException, URISyntaxException { return aprovisionamento.obterGrupo(emailGrupo); } public static Group criarGrupoGoogle(String emailGrupo) throws IOException, GeneralSecurityException, URISyntaxException { String nomeGrupo = "Grupo 1"; String descricaoGrupo = "Grupo descrição"; return aprovisionamento.criarGrupo(nomeGrupo, emailGrupo, descricaoGrupo); } public static void adicionarMembroGrupoGoogle(List<String> emailMembros, String emailGrupo) throws IOException, GeneralSecurityException, URISyntaxException { Group group = aprovisionamento.obterGrupo(emailGrupo); aprovisionamento.adicionarMembros(emailMembros, group); } }