O método a seguir só faz o cadastro uma única vez. Se o usuário tentar fazer outro cadastro ele não realiza e nem mostra erro. Acredito que seja a validação que fiz. Alguém da uma força ?
Classe LocaçãoServico
import entidade.Locacao;
import estruturaencadeada.EstruturaSimples;
import interfaces.IEstruturaServico;
import repositorio.Repositorio;
public class LocacaoServico implements IEstruturaServico {
Repositorio repositorio = new Repositorio();
public EstruturaSimples<Locacao> inicio = null;
@Override
public EstruturaSimples<Locacao> add(EstruturaSimples<Locacao> referencia, Locacao novaLocacao) {
if (referencia != null) {
if (referencia.informacao.getCodigoLocacao() == novaLocacao.getCodigoLocacao()) {
System.out.println("Código já existe");
} else if (referencia.informacao.getPlaca().contains(novaLocacao.getPlaca())) {
System.out.println("Placa já existe");
} else if (referencia.informacao.getCpfUsuario().contains(novaLocacao.getCpfUsuario())) {
System.out.println("CPF já existe");
}
}else {
return this.repositorio.add(referencia, novaLocacao);
}
return referencia;
}
Classe Repositório
@Override
public EstruturaSimples<Locacao> add(EstruturaSimples<Locacao> referencia, Locacao novaLocacao) {
if (referencia == null) {
novaLocacao.setValorTotal(novaLocacao.getValorDiaria() * novaLocacao.getTotalDias());
EstruturaSimples<Locacao> novaEstrutura = new EstruturaSimples<Locacao>();
novaEstrutura.informacao = novaLocacao;
System.out.println("Locação efetuada!");
return novaEstrutura;
} else if (referencia != null && referencia.proximo == null) {
referencia.proximo = add(referencia.proximo, novaLocacao);
return referencia;
}
else if (referencia != null && referencia.proximo != null) {
referencia.proximo.proximo = add(referencia.proximo.proximo, novaLocacao);
return referencia;
} else
return referencia;
}