package com.opentravelsoft.providers.hibernate; import java.util.ArrayList; import java.util.List; import org.hibernate.LockMode; import org.hibernate.criterion.CriteriaSpecification; import org.hibernate.criterion.DetachedCriteria; import org.hibernate.criterion.MatchMode; 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.District; import com.opentravelsoft.providers.DistrictDao; import com.opentravelsoft.util.RowDataUtil; import com.opentravelsoft.util.StringUtil; @Repository("DistrictDao") public class DistrictDaoImpl extends GenericDaoHibernate<District, String> implements DistrictDao { public DistrictDaoImpl() { super(District.class); } @SuppressWarnings("unchecked") public List<District> getDistrictList(String districtName, String countryNo, String provinceId) { DetachedCriteria criteria = DetachedCriteria.forClass(District.class, "d"); criteria.createAlias("d.country", "c"); criteria.createAlias("d.province", "p", CriteriaSpecification.LEFT_JOIN); if (StringUtil.hasLength(districtName)) criteria.add(Restrictions.like("d.cnName", districtName, MatchMode.ANYWHERE)); if (StringUtil.hasLength(countryNo)) criteria.add(Restrictions.eq("c.countryId", countryNo)); if (StringUtil.hasLength(provinceId)) criteria.add(Restrictions.eq("p.code", provinceId)); criteria.addOrder(Order.asc("d.districtNo")); criteria.setResultTransformer(CriteriaSpecification.ROOT_ENTITY); return getHibernateTemplate().findByCriteria(criteria); } public int deleteDistrict(String districtNo) { HibernateTemplate template = getHibernateTemplate(); District tfa021 = (District) template.get(District.class, districtNo, LockMode.PESSIMISTIC_WRITE); if (tfa021 != null) template.delete(tfa021); else return -1; return 0; } public int editDistrict(District district, String method) { String districtNo = district.getDistrictNo(); HibernateTemplate template = getHibernateTemplate(); District tfa021 = (District) template.get(District.class, districtNo, LockMode.PESSIMISTIC_WRITE); if (null == tfa021 && method.equals("update")) { return -1; } if (method.equals("insert")) { tfa021 = new District(); } tfa021.setDistrictNo(district.getDistrictNo()); tfa021.setCnName(district.getCnName()); tfa021.setCnNote(district.getCnNote()); tfa021.setCountry(district.getCountry()); tfa021.setProvince(district.getProvince()); template.saveOrUpdate(tfa021); return 0; } @SuppressWarnings("unchecked") public List<District> getDistrictByCountry(String countryNo) { StringBuilder sql = new StringBuilder(); sql.append("from District "); if (countryNo.equals("")) sql.append("where cnName<>'' "); else sql.append("where country = ? and cnName<>'' "); sql.append("order by cnName "); List<District> list; if (countryNo.equals("")) list = getHibernateTemplate().find(sql.toString()); else list = getHibernateTemplate().find(sql.toString(), countryNo); List<District> districtList = new ArrayList<District>(); District district = null; for (District obj : list) { if (!RowDataUtil.getString(obj.getCnName()).equals("")) { district = new District(); district.setDistrictNo(RowDataUtil.getString(obj.getDistrictNo())); district.setCnName(RowDataUtil.getString(obj.getCnName())); districtList.add(district); } else continue; } return districtList; } @SuppressWarnings("unchecked") public List<District> getDistrictByProvince(String provinceNo) { StringBuilder sql = new StringBuilder(); sql.append("from District "); sql.append("where 1=1 "); if (provinceNo.equals("")) sql.append("and duchy.code<>'' "); else sql.append("and duchy.code = ? and duchy.code<>'' "); sql.append("order by cnName "); List<District> list; if (provinceNo.equals("")) list = getHibernateTemplate().find(sql.toString()); else list = getHibernateTemplate().find(sql.toString(), provinceNo); List<District> districtList = new ArrayList<District>(); District district = null; for (District obj : list) { if (!RowDataUtil.getString(obj.getCnName()).equals("")) { district = new District(); district.setDistrictNo(RowDataUtil.getString(obj.getDistrictNo())); district.setCnName(RowDataUtil.getString(obj.getCnName())); districtList.add(district); } else continue; } return districtList; } }