Olá pessoal, estou com duvidas em uma implementação que realizei, se esta feita da maneira correta ou se teria uma forma melhor de escrever o código. Dado as seguintes classes :
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CampoDto {
private String chave;
private String valor;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ClienteEmailSaidaDto {
@JsonProperty("campo")
private List<CampoDto> campo;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ClienteLocalSaidaDto {
@JsonProperty("campo")
private List<CampoDto> campo;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ClienteSaidaDto {
@JsonProperty("campo")
private List<CampoDto> campo;
@JsonProperty("locais-cliente")
private List<ClienteLocalSaidaDto> locaisCliente;
@JsonProperty("emails-cliente")
private List<ClienteEmailSaidaDto> emailsCliente;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DadosPessoaisSaidaDto {
private List<ClienteSaidaDto> cliente;
}
// preenchendo algumas informações
CampoDto campo1 = new CampoDto();
CampoDto campo2 = new CampoDto();
campo1.setChave("nrCpf");
campo1.setValor("123456");
campo2.setChave("nrRg");
campo2.setValor("789123");
List<CampoDto> campos = new ArrayList<>();
campos.add(campo1);
campos.add(campo2);
ClienteSaidaDto cliente = new ClienteSaidaDto();
cliente.setCampo(campos);
conforme o exemplo acima preciso percorrer essa estrutura de classes para realizar algumas validações, por exemplo em algum das classes existe a chave nrCpf e esta populada com algum valor. Realizei a implementação abaixo e gostaria de saber se esta feita de forma correta ou se teria alguma forma melhor para otimizar os códigos.
public void verificarInformacoes(){
String emailObtido = "Nao";
String nrCpfObtido = "Nao";
String telefoneObtido = "Nao";
String rgObtido = "Nao";
String nomeObtido = "Nao";
InformacoesConsultaSaidaDto informacaoes = new InformacoesConsultaSaidaDto();
Optional optCliente = Optional.ofNullable(dadosPessoais.getCliente());
if(optCliente.isPresent()) {
dadosPessoais.getCliente()
.forEach(cli ->{
cli.getEmailsCliente().forEach(email -> {
email.getCampo().forEach(a -> {
if (a.getChave().equals("dsEmail")) {
if((a.getValor()!=null)||(!a.getValor().isEmpty())) {
emailObtido = "Sim";
}
}
});
});
});
//
dadosPessoais.getCliente()
.forEach(cli ->{
cli.getLocaisCliente().forEach(locais -> {
locais.getCampo().forEach(a -> {
if (a.getChave().equals("nrCpf")) {
if((a.getValor()!=null)||(!a.getValor().isEmpty())) {
nrCpfObtido = "Sim";
}
}
});
});
});
dadosPessoais.getCliente()
.forEach(cli ->{
cli.getLocaisCliente().forEach(loc -> {
loc.getCampo().forEach(a -> {
if (a.getChave().equals("nrCpf")) {
if((a.getValor()!=null)||(!a.getValor().isEmpty())) {
nrCpfObtido = "Sim";
}
}
});
});
});
//
//
dadosPessoais.getCliente()
.forEach(cli ->{
cli.getTelefonesCliente().forEach(telefone -> {
telefone.getCampo().forEach(a -> {
if (a.getChave().equals("nrTelefone")) {
if((a.getValor()!=null)||(!a.getValor().isEmpty())) {
telefoneObtido = "Sim";
}
}
});
});
});
//
dadosPessoais.getCliente()
.forEach(nome ->{
nome.getCampo().forEach(d -> {
if (d.getChave().equals("nmCliente")) {
if((d.getValor()!=null)||(!d.getValor().isEmpty())) {
nomeObtido = "Sim";
}
}
});
});
//
dadosPessoais.getCliente()
.forEach(rg ->{
rg.getCampo().forEach(d -> {
if (d.getChave().equals("nrRg")) {
if((d.getValor()!=null)||(!d.getValor().isEmpty())) {
rgObtido = "Sim";
}
}
});
});
}
}