Estou a trabalhar com web service e tenho duas classes semelhantes ClienteFeminino e ClienteMasculino que têm atributos diferentes mas herdaram as duas atributos da mesma classe pai Pessoas.
Precisava de uma classe que ao introduzir dados em XML aceitasse tanto a classe ClienteFeminino como ClienteMasculino e depois um método que me ajudasse a perceber que tipo de cliente, se feminino ou masculino, eu acabei de introduzir só q nao estou a conseguir, agradecia alguma ajuda, obrigado
Tipo isto, estou a usar o postman
<pessoa>
<nif>123321129</nif>
<nome>Raul</nome>
<data_nascimento>
<dia>7</dia>
<mes>1</mes>
<ano>1999</ano>
</data_nascimento>
</pessoa>
Nesta linha é onde devia inserir o nome da classe que devia aceitar as classes filho q mencionei
public ResponseEntity addCliente(@RequestBody ??? ???)
Como que vc identifica que esse xml é uma pessoa ClienteFeminino ou ClienteMasculino?
Isto seria um XML para ClienteFeminino uma vez que tem um atributo a mais que o ClienteMasculino q é a anca:
<cliente>
<nif>123321129</nif>
<nome>Sandra</nome>
<data_nascimento>
<dia>7</dia>
<mes>1</mes>
<ano>1999</ano>
</data_nascimento>
<numero>23</numero>
<altura>170</altura>
<peso>78</peso>
<anca>60</anca>
<cintura>70</cintura>
<pescoço>20</pescoço>
</cliente>
Para ClienteMaculino seria o mesmo mas sem a linha referente à anca. Acho q também é importante referir que tenho outra classe que herdou os mesmos atributos da classe pai que estas duas classes que é a classe Funcionários.
E como vc está fazendo essa conversão?
Por exemplo para funcionário fiz assim:
public class Mapper {
public static Data dataDTO2data(DataDTO dataDTO) throws NullPointerException {
Data data = null;
data = new Data(dataDTO.getDia(), dataDTO.getMes(), dataDTO.getAno());
return data;
}
public static Funcionario funcionarioDTO2Funcionario(FuncionarioDTO funcionarioDTO) throws NullPointerException {
Funcionario funcionario = null;
Data data = dataDTO2data(funcionarioDTO.getNascimento());
funcionario = new Funcionario(funcionarioDTO.getNif(), funcionarioDTO.getNome(), data, funcionarioDTO.getNumeroFuncionario(), funcionarioDTO.getModalidade());
return funcionario;
}
}