package com.opentravelsoft.providers.hibernate;
import java.util.List;
import org.hibernate.LockMode;
import org.hibernate.criterion.CriteriaSpecification;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.stereotype.Repository;
import com.opentravelsoft.entity.Airport;
import com.opentravelsoft.providers.AirportDao;
import com.opentravelsoft.util.PaginationSupport;
import com.opentravelsoft.util.StringUtil;
@Repository("AirportDao")
public class AirportDaoImpl extends GenericDaoHibernate<Airport, String>
implements AirportDao {
public AirportDaoImpl() {
super(Airport.class);
}
public int delete(Airport airways) {
HibernateTemplate template = getHibernateTemplate();
Airport rlt = (Airport) template.get(Airport.class, airways.getCode(),
LockMode.PESSIMISTIC_WRITE);
if (null == rlt) {
return -1;
}
rlt.setIsActive((byte) 0);
template.update(rlt);
return 0;
}
@SuppressWarnings("rawtypes")
public PaginationSupport getAirportList(String country, String city,
String kenDelkey, int fromRecord, int pageSize) {
DetachedCriteria airportCriteria = DetachedCriteria.forClass(Airport.class,
"b");
airportCriteria.createAlias("b.city", "c");
airportCriteria.createAlias("c.country", "n");
if (StringUtil.hasLength(country))
airportCriteria.add(Restrictions.eq("n.countryId", country));
if (StringUtil.hasLength(city))
airportCriteria.add(Restrictions.eq("c.citycd", city));
PaginationSupport support = findPageByCriteria(airportCriteria, pageSize,
fromRecord);
return support;
}
@SuppressWarnings("unchecked")
public List<Airport> getAirportList(boolean isActive) {
DetachedCriteria criteria = DetachedCriteria.forClass(Airport.class);
if (isActive)
criteria.add(Restrictions.eq("isActive", (byte) 1));
criteria.addOrder(Order.asc("name"));
criteria.setResultTransformer(CriteriaSpecification.ROOT_ENTITY);
return getHibernateTemplate().findByCriteria(criteria);
}
}