package fr.chantier.dao.impl;
import fr.chantier.dao.CommandesDAO;
import fr.chantier.model.ClientsEntity;
import fr.chantier.model.CommandesEntity;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.hibernate.criterion.Criterion;
import java.util.*;
/**
* Created by IntelliJ IDEA.
* User: sora
* Date: Oct 27, 2008
* Time: 6:00:22 PM
* To change this template use File | Settings | File Templates.
*/
public class CommandesDAOImpl extends GenericHibernateDAO<CommandesEntity, Integer> implements CommandesDAO {
public CommandesDAOImpl(Session session) {
super(session);
}
public CommandesEntity findById(Integer commandId) {
Criteria crit = getSession().createCriteria(getPersistentClass());
crit.add(Restrictions.eq("commandId", commandId));
return (CommandesEntity) crit.uniqueResult();
}
public Collection<CommandesEntity> findByCriterions(ClientsEntity clientsEntity, Order order, Criterion simpleExpression, Date date) {
Criteria crit = getSession().createCriteria(getPersistentClass());
if (order != null) {
crit.addOrder(order);
}
if (simpleExpression != null) {
crit.add(simpleExpression);
}
if (clientsEntity != null) {
crit.add(Restrictions.eq("clientsByClientId.clientId", clientsEntity.getClientId()));
} else {
if (date != null) {
Calendar cal = new GregorianCalendar();
cal.setTime(date);
int mois = cal.get(Calendar.MONTH) + 1;
String moisString = (mois > 9) ? mois + "" : "0" + mois;
crit.add(Restrictions.sqlRestriction("Command_date LIKE '" + cal.get(Calendar.YEAR)
+ "-" + moisString + "%'"));
}
}
return new LinkedHashSet(crit.list());
}
public Collection<CommandesEntity> findNonFinaliseAndMonth(Order order) {
Criteria crit = getSession().createCriteria(getPersistentClass());
if (order != null) {
crit.addOrder(order);
}
Calendar cal = Calendar.getInstance();
int mois = cal.get(Calendar.MONTH) + 1;
String moisString = (mois > 9) ? mois + "" : "0" + mois;
crit.add(
Restrictions.or(
Restrictions.sqlRestriction("Command_date LIKE '" + cal.get(Calendar.YEAR)
+ "-" + moisString + "%'"),
Restrictions.eq("finalise", false)
));
return new LinkedHashSet(crit.list());
}
}