Realizar um “CRUD” (cadastrar, alterar, remover e buscar) de uma entidade,quando tento listar os cadastros ele retorna null.
package com.prova.poo.entidade;
public class Vinho {
private int id;
private String uva;
private String nome;
private int anofab;
private String paisdeorig;
private String tipo;
public Vinho() {
}
public Vinho(String nomeEnviado, String uvaEnviado) {
setNome(nomeEnviado);
setUva(uvaEnviado);
}
public Vinho(int id, String uvaEnviado, String nomeEnviado, int anofabEnviado, String paisdeorigEnviado, String tipoEnviado) {
setUva(uvaEnviado);
setNome(nomeEnviado);
setAnofab(anofabEnviado);
setPaisdeorig(paisdeorigEnviado);
setTipo(tipoEnviado);
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUva() {
return uva;
}
public void setUva(String uva) {
this.uva = uva;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public int getAnofab() {
return anofab;
}
public void setAnofab(int anofab) {
this.anofab = anofab;
}
public String getPaisdeorig() {
return paisdeorig;
}
public void setPaisdeorig(String paisdeorig) {
this.paisdeorig = paisdeorig;
}
public String getTipo() {
return tipo;
}
public void setTipo(String tipo) {
this.tipo = tipo;
}
}
package com.prova.poo.dao;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import com.prova.poo.entidade.Vinho;
public class VinhoDao implements Dao {
public List<Vinho> vinhos = new ArrayList();
public VinhoDao() {
vinhos.add(new Vinho(1,"Sauvignon Blanc","Ravanal Sauvignon Blanc", 2019 ,"Chile", "Branco"));
}
public Optional<Vinho> buscar(long id) {
return Optional.ofNullable(vinhos.get((int)id));
}
public List<Vinho> buscarTodos() {
return vinhos;
}
public void salvar(Vinho vinhoEnviado) {
vinhos.add(vinhoEnviado);
}
public void atualizar(Vinho vinhoEnviado, String[] params) {
vinhoEnviado.setNome(Objects.requireNonNull(params[0], "O nome nao pode ser nulo! "));
}
public void deletar(Vinho t) {
vinhos.remove(vinhoEnviado);
}
}
package com.prova.poo.dao;
import java.util.List;
import java.util.Optional;
public interface Dao {
Optional<T> buscar(long id);
List<T> buscarTodos();
void salvar(T t);
void atualizar(T t, String[] params);
void deletar(T t);
}
package com.prova.poo.teste;
import java.util.Optional;
import java.util.Scanner;
import com.prova.poo.dao.Dao;
import com.prova.poo.dao.VinhoDao;
import com.prova.poo.entidade.Vinho;
public class Testemain {
private static Dao<Vinho> vinhoDao;
public static void main(String[] args) {
vinhoDao = new VinhoDao();
while (true) {
Scanner entradaValor = new Scanner(System.in);
System.out.println("_________________________________________");
System.out.println("| OPÇÃO | Entidade | AÇÃO |");
System.out.println("________________________________________");
System.out.println("| 1 | Vinho | cadastrar |");
System.out.println("| 2 | Vinho | alterar |");
System.out.println("| 3 | Vinho | remover |");
System.out.println("| 4 | Vinho | listar |");
System.out.println("| 5 | finalizar |");
System.out.println("________________________________________");
System.out.println(" * Qual a opção você deseja ? ");
int opcao = 0;
try {
opcao = entradaValor.nextInt();
} catch (Exception erro) {
System.out.println(" Erro ao digitar um valor inesperado! ");
System.out.println(" Sistema finalizado! ");
System.exit(0);
}
switch(opcao) {
case 1 :
System.out.println("Digite o nome da uva : ");
String nome = entradaValor.next();
System.out.println("Digite o tipo do vinho : ");
String tipo = entradaValor.next();
System.out.println("Digite o ano de fabricação: ");
int anofab = entradaValor.nextInt();
System.out.println("Digite o pais de origem do vinho: ");
String paisdeorig = entradaValor.next();
Vinho vinho = new Vinho();
vinhoDao.salvar(vinho);
break;
case 2 :
System.out.println("Qual vinho você deseja alterar? ");
long id = entradaValor.nextLong();
Optional<Vinho> vinho2 = vinhoDao.buscar(id);
System.out.println("Digite o nome que voce deseja alteral : ");
String nome2 = entradaValor.next();
System.out.println("Digite o tipo de vinho que voce deseja alteral : ");
String tipo2 = entradaValor.next();
vinhoDao.atualizar(vinho2.get(), new String[]{nome2,tipo2});
break;
case 3 :
System.out.println("Qual vinho você deseja remover ? ");
long id2 = entradaValor.nextLong();
Optional<Vinho> vinho3 = vinhoDao.buscar(id2);
vinhoDao.deletar(vinho3.get());
break;
case 4 :
vinhoDao.buscarTodos().forEach(user -> System.out.println(user.getNome()));
break;
case 5 :
System.out.println("Sistema finalizado.");
System.exit(0);
break;
default:
System.out.println("Não foi possivel encontrar a opção desejada.");
}
System.out.println("Deseja continuar ? [S] ou [N] ");
String opcao2 = entradaValor.next();
if (opcao2.equals("N") || opcao2.equals("n")) {
System.out.println("Sistema finalizado");
System.exit(0);
}
}
}