package dao;
import com.db4o.query.Predicate;
import java.util.Iterator;
import java.util.List;
import java.util.TreeSet;
import business.CenarioVolume;
import business.Projeto;
import com.db4o.query.Query;
import java.util.Collections;
import java.util.SortedSet;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
*/
public class ProjetoDAO extends AbstractDAO<Projeto> {
/**
*
*/
public ProjetoDAO() {
super("id", Projeto.class);
}
@Override
public void connect() {
super.connect();
}
@Override
public void delete(Projeto obj) throws Exception {
super.delete(obj);
}
@Override
public Projeto find(long value) {
return super.find(value);
}
@Override
public List<Projeto> getAll(String orderByField, boolean asc) throws Exception {
return super.getAll(orderByField, asc);
}
@Override
public List<Projeto> queryByExample(Projeto obj) {
return super.queryByExample(obj);
}
@Override
public void save(Projeto obj) throws Exception {
super.save(obj);
}
@Override
public void close() {
super.close();
}
/**
*
* @param idProjeto
* @param idCenario
* @return
*/
public CenarioVolume getCenario(final Projeto proj, final long idCenario) {
final TreeSet<CenarioVolume> cenarios = new TreeSet<>();
db.query(new Predicate<Projeto>() {
@Override
public boolean match(final Projeto projeto) {
CenarioVolume cenario = null;
Iterator<CenarioVolume> it = projeto.getIteratorCenario();
while (it.hasNext()) {
cenario = it.next();
if ((projeto.getId() == proj.getId()) && (cenario.getId() == idCenario)) {
cenarios.add(cenario);
return true;
}
}
return false;
}
});
if (!cenarios.isEmpty()) {
return cenarios.first();
}
return new CenarioVolume(proj.getNewCenarioVolumeId());
}
public long getNewId() throws Exception {
SortedSet<Projeto> result = Collections.synchronizedSortedSet(new TreeSet<Projeto>());
long id = 0;
try {
Query query = db.query();
query.constrain(type);
query.descend("id").orderAscending();
result.addAll((List) query.execute());
} catch (Exception e) {
Logger.getLogger(AbstractDAO.class.getName()).log(Level.SEVERE, null, e);
db.rollback();
throw new Exception(e);
}
if (result.isEmpty()) {
id = 1;
} else {
id = result.last().getId() + 1;
}
return id;
}
}