@Override public void atualizar(UsuarioDTO usuarioDTO) { // Conversão de DTO -> Entidade para assim respeitar as camadas Usuario usuarioEntidade = this.usuarioConverter.toEntity(usuarioDTO); // Execução do método update para atualizar os dados no BD this.usuarioDAO.update(usuarioEntidade); List<PapelDTO> papeis = usuarioDTO.getPapeis(); List<GrupoDTO> grupos = usuarioDTO.getGrupos(); // Com o "usuário" atualizado, podemos aplicar no BD mudanças em suas // relações com Papel e Grupo this.atualizarPapeisEGrupos(usuarioDTO.getId(), papeis, grupos); }
@Override public UsuarioDTO salvar(UsuarioDTO usuarioDTO) { // usuarioDTO é a instância de UsuarioDTO que deseja ser salva // Como os DAOs trabalham com entidades, é necessário converter // o DTO para Entidade, para isso serve o método 'toEntity' da classe // UsuarioDTOConverter Usuario usuarioEntidade = this.usuarioConverter.toEntity(usuarioDTO); // Com a entidade já instanciada é possível executar o métododo 'save' // da classe UsuarioDAO, e com isso os dados serão escritos no BD. Long id = this.usuarioDAO.save(usuarioEntidade); // O retorno do método 'save' é o ID gerado para a entidade em questão, // este ID será usado para criar as ligações entre as tabelas de // Usuario -> Papel e Usuario -> Grupo List<PapelDTO> papeis = usuarioDTO.getPapeis(); List<GrupoDTO> grupos = usuarioDTO.getGrupos(); // Execução do método que gerencia as ligações entre as tabelas this.atualizarPapeisEGrupos(id, papeis, grupos); // Por último colocamos o ID gerado em nosso DTO e o devolvemos para // quem executou a chamada, neste ponto poderia ser feito um 'findById' // mas nesse caso não é necessário usuarioDTO.setId(id); return usuarioDTO; }