package br.gov.servicos.editor.usuarios; import br.com.caelum.stella.format.CPFFormatter; import br.gov.servicos.editor.usuarios.cadastro.CamposServidor; import br.gov.servicos.editor.usuarios.cadastro.FormularioUsuario; import lombok.experimental.FieldDefaults; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; import static lombok.AccessLevel.PRIVATE; @Component @FieldDefaults(level = PRIVATE, makeFinal = true) public class UsuarioFactory { CPFFormatter cpfFormatter = new CPFFormatter(); public Usuario criarUsuario(FormularioUsuario formulario) { return popularUsuarioApartirDoFormulario(new Usuario(), formulario.withHabilitado(Boolean.TRUE)); } public Usuario atualizaUsuario(Usuario usuario, FormularioUsuario formulario) { return popularUsuarioApartirDoFormulario(usuario, formulario); } private Usuario popularUsuarioApartirDoFormulario(Usuario usuario, FormularioUsuario formulario) { Papel papel = new Papel(Long.valueOf(formulario.getPapelId())); return usuario .withCpf(cpfFormatter.unformat(formulario.getCpf())) .withSiorg(formulario.getSiorg()) .withSiape(StringUtils.defaultIfEmpty(formulario.getCamposServidor().getSiape(), null)) .withEmailPrimario(formulario.getEmailPrimario()) .withEmailSecundario(formulario.getEmailSecundario()) .withServidor(formulario.getCamposServidor().isServidor()) .withNome(formulario.getNome()) .withPapel(papel) .withHabilitado(formulario.isHabilitado()); } public FormularioUsuario criaFormulario(Usuario usuario) { return new FormularioUsuario() .withCpf(cpfFormatter.format(usuario.getCpf())) .withSiorg(usuario.getSiorg()) .withCamposServidor(new CamposServidor().withSiape(usuario.getSiape()).withServidor(usuario.isServidor())) .withEmailPrimario(usuario.getEmailPrimario()) .withEmailSecundario(usuario.getEmailSecundario()) .withNome(usuario.getNome()) .withPapelId(usuario.getPapel() != null ? String.valueOf(usuario.getPapel().getId()) : null) .withHabilitado(usuario.isHabilitado()); } }