package br.ufpr.c3sl.daoconcrete; import java.util.ArrayList; import java.util.Date; import java.util.List; import br.ufpr.c3sl.dao.RetroactionDAO; import br.ufpr.c3sl.daoFactory.DB4ODAOFactory; import br.ufpr.c3sl.exception.UserException; import br.ufpr.c3sl.model.Mistake; import br.ufpr.c3sl.model.Retroaction; import com.db4o.EmbeddedObjectContainer; import com.db4o.ObjectSet; import com.db4o.query.Predicate; public class DB4ORetroaction implements RetroactionDAO{ @Override public Retroaction insert(Retroaction retroaction) throws UserException { EmbeddedObjectContainer dbo = DB4ODAOFactory.getConnection(); retroaction.setCreatedAt(new Date().getTime()); dbo.store(retroaction); return retroaction; } @Override public List<Retroaction> getAll(final Mistake mistake) { EmbeddedObjectContainer dbo = DB4ODAOFactory.getConnection(); List<Retroaction> results = dbo.query(new Predicate<Retroaction>() { private static final long serialVersionUID = 7067504373296785410L; public boolean match(Retroaction retroaction){ return (retroaction.getMistake().getUser().getEmail().equals(mistake.getUser().getEmail()) && retroaction.getMistake() == mistake); } }); ArrayList<Retroaction> list = new ArrayList<Retroaction>(); list.addAll(results); return list; } @Override public boolean delete(Retroaction retroaction) { try { EmbeddedObjectContainer dbo = DB4ODAOFactory.getConnection(); Retroaction found = null; Retroaction r = new Retroaction(); r.setCreatedAt(retroaction.getCreatedAt()); r.setMistake(null); ObjectSet<Retroaction> result = dbo.queryByExample(r); found = result.next(); System.out.println("Foound "+ found); dbo.delete(found); }catch (Exception e) { e.printStackTrace(); return false; } return true; } }