package banco.DAO;
import java.util.Date;
import java.util.List;
import javax.persistence.Query;
import banco.connection.EclipseLinkConnection;
import banco.modelo.ServicoPrestado;
import banco.utils.ServicoPrestadoUtils;
import com.ibm.icu.util.Calendar;
public class ServicoPrestadoDAO extends EclipseLinkConnection implements
ServicoPrestadoUtils {
@Override
public void saveOrUpdate(ServicoPrestado modelo) {
if (modelo.getId() != null)
merge(modelo);
else
persist(modelo);
}
@Override
public void delete(ServicoPrestado modelo) {
remove(modelo);
}
@Override
public ServicoPrestado find(Long id) {
Query q = getEntityManager().createQuery(
"select s from ServicoPrestado s where s.id = :id");
q.setParameter("id", id);
return (ServicoPrestado) q.getSingleResult();
}
@SuppressWarnings("unchecked")
@Override
public List<ServicoPrestado> findAll() {
Query q = getEntityManager().createQuery("select s from ServicoPrestado s");
return q.getResultList();
}
@SuppressWarnings("unchecked")
@Override
public List<ServicoPrestado> findAllByPeriodoAndStatusAndConclusao(
Date dataInicial, Date dataFinal, Boolean status, Boolean emExecucao) {
if (dataInicial != null && dataFinal != null) {
Calendar c = Calendar.getInstance();
c.setTime(dataInicial);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
dataInicial = c.getTime();
c.setTime(dataFinal);
c.set(Calendar.HOUR_OF_DAY, 23);
c.set(Calendar.MINUTE, 59);
c.set(Calendar.SECOND, 59);
dataFinal = c.getTime();
}
Query q = getEntityManager().createQuery("select s from ServicoPrestado s where (s.dataAbertura between :dataInicial and :dataFinal) "
+ "and (s.ativo = :status or :status is null) "
+ "and (s.emExecucao = cast(:emExecucao as boolean) or :emExecucao is null)");
q.setParameter("dataInicial", dataInicial);
q.setParameter("dataFinal", dataFinal);
q.setParameter("status", status);
q.setParameter("emExecucao", emExecucao);
return q.getResultList();
}
@SuppressWarnings("unchecked")
@Override
public List<ServicoPrestado> findAllByStatusAndConclusao(Boolean status, Boolean emExecucao) {
Query q = getEntityManager().createQuery("select s from ServicoPrestado s where (s.ativo = cast(:status as boolean) or cast(:status as boolean) " +
"is null) and (s.emExecucao = cast(:emExecucao as boolean) or cast(:emExecucao as boolean) is null)");
q.setParameter("status", status)
.setParameter("emExecucao", emExecucao);
return q.getResultList();
}
}