package com.opentravelsoft.providers.hibernate.product; import java.util.HashSet; import java.util.List; import java.util.Set; import org.hibernate.LockMode; import org.springframework.orm.hibernate3.HibernateTemplate; import org.springframework.stereotype.Repository; import com.opentravelsoft.entity.Line; import com.opentravelsoft.entity.Sight; import com.opentravelsoft.providers.hibernate.GenericDaoHibernate; import com.opentravelsoft.providers.product.LineSightDao; /** * * @author <a herf="mailto:zhangsitao@gmail.com">Steven Zhang</a> * @version $Revision: 1.2 $ $Date: 2009/03/09 15:37:04 $ */ @Repository("RouteSightDao") public class LineSightDaoImpl extends GenericDaoHibernate<Sight, String> implements LineSightDao { public LineSightDaoImpl() { super(Sight.class); } @SuppressWarnings("unchecked") public List<Sight> getDestinationSights(String lineNo) { HibernateTemplate template = getHibernateTemplate(); StringBuilder sql = new StringBuilder(); sql.append("select s "); sql.append("from Sight s,"); sql.append("LineDistrict d "); sql.append("where s.district.districtNo = d.id.districtNo "); sql.append("and d.id.lineNo=? "); Object[] params = { lineNo }; return template.find(sql.toString(), params); } @SuppressWarnings("unchecked") public List<Sight> getLineSights(String lineNo) { HibernateTemplate template = getHibernateTemplate(); StringBuilder sql = new StringBuilder(); sql.append("select l.sights from Line as l where l.lineNo=? "); Object[] params = { lineNo }; List<Sight> list = template.find(sql.toString(), params); return list; } public int saveSights(List<Sight> list, String lineNo) { HibernateTemplate template = getHibernateTemplate(); Line line = (Line) template.get(Line.class, lineNo, LockMode.PESSIMISTIC_WRITE); Set<Sight> sights = new HashSet<Sight>(0); for (Sight obj : list) { sights.add(obj); } line.setSights(sights); template.update(line); return 0; } }