package persistencia;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
// Persistência: dados persistidos (não temporário)
// Gravado e Lido independente da execução do programa
// Padrão de Arquitetura chamado Data Access Object (DAO)
// Modelo (objeto de negócio, ex.: Aluno, Pedido, Livro, ...)
DAO<Filme> dao = new FilmeDAO();
Filme f1 = new Filme();
f1.setNumero(1);
f1.setTitulo("O Guia do Mochileiro das Galáxias");
f1.setGenero("Sci-fi");
f1.setAno(2005);
Filme f2 = new Filme();
f2.setNumero(2);
f2.setTitulo("Avatar");
f2.setGenero("Ficção");
f2.setAno(2009);
Filme f3 = new Filme();
f3.setNumero(3);
f3.setTitulo("Exterminador do Futuro: Gênesis");
f3.setGenero("Ação");
f3.setAno(2015);
Filme f4 = new Filme();
f4.setNumero(4);
f4.setTitulo("A Entidade");
f4.setGenero("Terror");
f4.setAno(2012);
Filme f5 = new Filme();
f5.setNumero(5);
f5.setTitulo("TED 2");
f5.setGenero("Comédia");
f5.setAno(2015);
Filme f6 = new Filme();
f6.setNumero(6);
f6.setTitulo("Star Wars: Episódio III a Vingança dos Sith");
Filme f7 = new Filme();
f7.setNumero(5);
f7.setTitulo("Não deve ser salvo");
dao.save(f1);
dao.save(f2);
dao.save(f3);
dao.save(f4);
dao.save(f5);
dao.save(f6);
dao.save(f7); // este deve falhar
// dao.delete(f2);
// dao.delete(f4);
// dao.delete(f6);
Filme a = dao.load(3);
System.out.println(a != null);
System.out.println(a.getNumero() == 3);
System.out.println(a.getTitulo().equals("Exterminador do Futuro: Gênesis"));
System.out.println(a.getGenero().equals("Ação"));
System.out.println(a.getAno() == 2015);
Filme b = dao.load(11); // número não encontrado: NULL
System.out.println(b == null);
Filme c = dao.load(1);
System.out.println(c.equals(f1));
dao.delete(c);
Filme d = dao.load(1);
System.out.println(d == null);
ArrayList<Filme> todos = dao.findAll();
System.out.println(todos.size() == 5);
System.out.println(todos.get(0).getTitulo().equals("Avatar"));
todos.get(0).setGenero("Ação");
dao.update(todos.get(0));
Filme e = dao.load(2);
System.out.println(e.getTitulo().equals("Avatar"));
System.out.println(e.getGenero().equals("Ação"));
}
}