package com.opentravelsoft.providers.hibernate.product; import java.util.ArrayList; import java.util.List; import org.springframework.orm.hibernate3.HibernateTemplate; import org.springframework.stereotype.Repository; import com.opentravelsoft.entity.LineVisa; import com.opentravelsoft.entity.LineVisaId; import com.opentravelsoft.entity.VisaHelp; import com.opentravelsoft.providers.hibernate.GenericDaoHibernate; import com.opentravelsoft.providers.product.LineVisaDao; import com.opentravelsoft.util.RowDataUtil; /** * * @author <a herf="mailto:zhangsitao@gmail.com">Steven Zhang</a> * @version $Revision: 1.2 $ $Date: 2009/03/09 15:37:04 $ */ @Repository("RouteVisaDao") public class LineVisaDaoImpl extends GenericDaoHibernate<LineVisa, String> implements LineVisaDao { public LineVisaDaoImpl() { super(LineVisa.class); } @SuppressWarnings("unchecked") public List<LineVisa> getVisaList(String lineNo) { StringBuilder sql = new StringBuilder(); sql.append("select a.id.recNo,b.country,b.subject,b.price1,"); sql.append("b.price2,b.cost,b.unit,b.note "); sql.append("from LineVisa a,"); sql.append("VisaHelp b "); sql.append("where a.id.recNo=b.recNo and a.id.lineNo=? "); Object[] params = { lineNo }; List<Object[]> list = getHibernateTemplate().find(sql.toString(), params); List<LineVisa> visaList = new ArrayList<LineVisa>(); LineVisa visa = null; int idx = 0; for (Object[] obj : list) { visa = new LineVisa(); visa.setRefNo(idx++); // visa.setRecNo(RowDataUtil.getString(obj[0])); visa.setCountryCode(RowDataUtil.getString(obj[1])); visa.setItem(RowDataUtil.getString(obj[2])); visa.setUnit(RowDataUtil.getString(obj[6])); visa.setDescription(RowDataUtil.getString(obj[7])); visa.setChecked("true"); visaList.add(visa); } return visaList; } @SuppressWarnings("unchecked") public int saveVisa(String lineNo, List<LineVisa> list) { HibernateTemplate template = getHibernateTemplate(); StringBuilder sb = new StringBuilder(); sb.append("from LineVisa where id.lineNo=?"); Object[] params = { lineNo }; List<LineVisa> dblist = template.find(sb.toString(), params); for (LineVisa obj : dblist) { boolean has = false; for (int i = list.size() - 1; i >= 0; i--) { if (list.get(i).getId().getRecNo().equals(obj.getId().getRecNo())) { has = true; list.remove(i); break; } } if (!has) template.delete(obj); } for (LineVisa trait : list) { LineVisa tfa = new LineVisa(new LineVisaId(lineNo, trait.getId() .getRecNo())); template.save(tfa); } return 0; } @SuppressWarnings("unchecked") public List<LineVisa> getByCountry(String country) { StringBuilder sql = new StringBuilder(); sql.append("from VisaHelp "); sql.append("where country=? and SDate<=current_date() "); sql.append("and EDate>=current_date() and opKey<>'D'"); Object[] params = { country }; List<VisaHelp> list = getHibernateTemplate().find(sql.toString(), params); List<LineVisa> visaList = new ArrayList<LineVisa>(); LineVisa visa = null; for (VisaHelp obj : list) { visa = new LineVisa(); // visa.setRecNo(obj.getRecNo()); visa.setItem(obj.getSubject()); visa.setDescription(obj.getNote()); visa.setCountryCode(country); visa.setUnit(obj.getUnit()); visaList.add(visa); } return visaList; } }