package com.opentravelsoft.providers.hibernate;
import java.util.List;
import org.hibernate.criterion.CriteriaSpecification;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Repository;
import com.opentravelsoft.entity.City;
import com.opentravelsoft.providers.CityDao;
@Repository("CityDao")
public class CityDaoImpl extends GenericDaoHibernate<City, String> implements
CityDao {
public CityDaoImpl() {
super(City.class);
}
@SuppressWarnings("unchecked")
public List<City> getAllCity() {
DetachedCriteria criteria = DetachedCriteria.forClass(City.class);
criteria.addOrder(Order.asc("citynm"));
criteria.setResultTransformer(CriteriaSpecification.ROOT_ENTITY);
return getHibernateTemplate().findByCriteria(criteria);
}
@SuppressWarnings("unchecked")
public List<City> getLineOutCity() {
DetachedCriteria criteria = DetachedCriteria.forClass(City.class);
criteria.add(Restrictions.eq("inOut", "N"));
criteria.addOrder(Order.asc("citynm"));
criteria.setResultTransformer(CriteriaSpecification.ROOT_ENTITY);
return getHibernateTemplate().findByCriteria(criteria);
}
@SuppressWarnings("unchecked")
public List<City> getCitysByNation(String nationCode) {
DetachedCriteria criteria = DetachedCriteria.forClass(City.class, "c");
criteria.createAlias("c.country", "n");
// criteria.add(Restrictions.eq("c.inOut", "N"));
criteria.add(Restrictions.eq("n.countryId", nationCode));
criteria.addOrder(Order.asc("c.citynm"));
criteria.setResultTransformer(CriteriaSpecification.ROOT_ENTITY);
return getHibernateTemplate().findByCriteria(criteria);
}
@SuppressWarnings("unchecked")
public List<City> getCitysByProvince(String provinceId) {
DetachedCriteria criteria = DetachedCriteria.forClass(City.class, "c");
criteria.createAlias("c.province", "p");
criteria.add(Restrictions.eq("p.code", provinceId));
criteria.addOrder(Order.asc("c.citynm"));
criteria.setResultTransformer(CriteriaSpecification.ROOT_ENTITY);
return getHibernateTemplate().findByCriteria(criteria);
}
}