Estou tentando fazer um programa de supermercado, e tenho que salvar um estoque de objetos de uma Classe produto. Por isso usei o memento com a serialização. Porem fica retornando um erro do try catch que não sei oq fazer, pois preciso salvar essa lista de Produtos e dps restaurar ela. Acho que meu problema é com a conversão da classe Produto para Object.
Aqui é meu código de memento e o de “empacotamento”.
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
public class Memento implements Serializable {SUBFACADE
private SingletonEstoque estoque = null;
private List<Produto> ListaDeProdutos;
public Memento(){
}
public Memento(SingletonEstoque estoque, List<Produto> ListaDeProdutos){
this.estoque = estoque;
this.ListaDeProdutos = ListaDeProdutos;
}
public void restore(){
if(estoque != null){
for(Produto prod: ListaDeProdutos){
estoque.AddProduto(prod);
}
}else{
System.out.println("Nao a estoque salvo, tente recuperar o backup");
}
}
public void RecuperaBackup(){
List<Object> listinha = Arquivo.RecuperarBackup("Estoque.bin");
for(Object recupera: listinha){
Produto prod = (Produto) recupera;
estoque.AddProduto(prod);
}
}
public void FazerBackup(){
List<Object> listinha = new ArrayList<Object>();
for(Produto prod: ListaDeProdutos){
Object grava = prod;
listinha.add(grava);
}
Arquivo.GravarBackup(listinha, "Estoque.bin");
}
}
import java.io.File;
import java.io.IOException;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;
public class Arquivo {
public static void GravarBackup(List<Object> listaDeProdutos, String nome){
File arq = new File(nome);
try{
arq.delete();
arq.createNewFile();
ObjectOutputStream objOutput = new ObjectOutputStream(new FileOutputStream(arq));
objOutput.writeObject(listaDeProdutos);
objOutput.close();
} catch(IOException erro){
System.out.printf("Erro: %s", erro.getMessage());
}
}
public static List<Object> RecuperarBackup(String nome){
List<Object> listinha = new ArrayList<Object>();
try{
File arq = new File(nome);
if(arq.exists()){
ObjectInputStream objImput = new ObjectInputStream(new FileInputStream(arq));
listinha = (List<Object>) objImput.readObject();
objImput.close();
}
}catch(IOException erro1){
System.out.printf("Erro %s ", erro1.getMessage());
}catch (ClassNotFoundException erro2){
System.out.printf("Erro %s ", erro2.getMessage());
}
return listinha;
}
}