package jp.agentec.sinaburocast.service; import java.util.List; import jp.agentec.sinaburocast.entity.EnqueteSummary; import jp.agentec.sinaburocast.form.admin.enquete.EnqueteResultForm; import org.seasar.extension.jdbc.AutoSelect; import org.seasar.extension.jdbc.where.SimpleWhere; import org.seasar.framework.container.annotation.tiger.Component; import org.seasar.framework.container.annotation.tiger.InstanceType; import org.seasar.framework.util.StringUtil; @Component(instance=InstanceType.SINGLETON) public class EnqueteSummaryService extends AbstractService<EnqueteSummary> { public static final String ID_SEQ_NAME = "enquete_summary_id_seq"; /** * IDを発行して、登録する。 */ public int insertEnqueteSummary(EnqueteSummary enqueteSummary, String insId) { enqueteSummary.enqueteSummaryId = getSeqNextVal(Integer.class, ID_SEQ_NAME); return super.insert(enqueteSummary, insId); } public EnqueteSummary findById(Integer enqueteSummaryId) { return select().id(enqueteSummaryId).getSingleResult(); } public List<EnqueteSummary> findAllOrderById() { return select().orderBy("enqueteSummaryId asc").getResultList(); } public List<EnqueteSummary> findAllByEnqueteId(String eid) { return select().where(new SimpleWhere().eq("enqueteId",eid)).getResultList(); } /** * 指定したアンケートIDでアンケートサマリーを検索する。 * * @param eid アンケートID * @return */ public EnqueteSummary findByEnqueteId(Integer eid) { return select().where(new SimpleWhere().eq("enqueteId",eid)).orderBy("insertDate desc").limit(1).getSingleResult(); } /** * アンケート検索画面で削除ボタンを押した場合。 * @param eid アンケートID * @return */ public int deleteByEnqueteId(String eid){ List<EnqueteSummary> list = findAllByEnqueteId(eid); if(!list.isEmpty()){ jdbcManager.deleteBatch(list).execute(); } return 0; } /** * 集計結果を取得する。アンケートIDで取得 * @return */ public List<EnqueteSummary> getEnqueteSummary(EnqueteResultForm enqueteResultForm){ if(StringUtil.isNumber(enqueteResultForm.eid+"")){ AutoSelect<EnqueteSummary> autoSelect = select().innerJoin("enquete").where(new SimpleWhere().eq("enqueteId", Integer.parseInt(enqueteResultForm.eid))); enqueteResultForm.setPaging(null, enqueteResultForm.pageNo, autoSelect.getCount()); return select().innerJoin("enquete").where(new SimpleWhere().eq("enqueteId", Integer.parseInt(enqueteResultForm.eid))).orderBy("insertDate desc") .offset(enqueteResultForm.getOffSet("")).limit(enqueteResultForm.getLimit("")). getResultList(); }else{ AutoSelect<EnqueteSummary> autoSelect = select().innerJoin("enquete"); enqueteResultForm.setPaging(null, enqueteResultForm.pageNo, autoSelect.getCount()); return select().innerJoin("enquete").orderBy("insertDate desc") .offset(enqueteResultForm.getOffSet("")).limit(enqueteResultForm.getLimit("")). getResultList(); } } /** * アンケートIdで削除を行う。 * @param eid * @return */ public int deleteByEnqueteId(Integer eid){ return jdbcManager.updateBySql("delete from t_enquete_summary where enquete_id = ? ",Integer.class).params(eid).execute(); } /** * アンケート集計結果を登録する。「アンケートごとに1レコード」 * @param enqueteSummary * @param insId * @return */ public int deleteInsert(EnqueteSummary enqueteSummary,String insId){ this.deleteByEnqueteId(enqueteSummary.enqueteId); return this.insertEnqueteSummary(enqueteSummary, insId); } }