package tutorial.server;

import java.util.Map;

import javax.swing.JOptionPane;

import org.apache.log4j.Logger;


import kr.fujitsu.com.ffw.model.GenericDAO;
import kr.fujitsu.com.ffw.model.SqlWrapper;

public class TutorialServerDAO extends GenericDAO {
	private static Logger logger = Logger.getLogger(TutorialServerDAO.class);
	
	public int updateTutorialTgt(Map param) throws Exception {
		int ret = 0;
		SqlWrapper sql = null;
		
		try {
			// 데이터베이스에 접속
			connect("localhost");
			// DML(Data Manipulation Language:INSERT, UPDATE, DELETE는 Transaction
			// 을 반드시 명시한 후 Query를 전달 하여야 한다.
			//STORE_CD,POS_NO,CACHIER_NM,TOT_SALE_AMOUNT,SALE_DATE_TIME
			begin();

			logger.info("▶SEND▶ " );
			sql = new SqlWrapper();
			// resource-repository에 등록된 Query를 조회한다.
			sql.put(findQuery("tutorial-sql","INS_TUTORIAL_TGT"));
			
			// Query에 데이터를 바인딩한다.
			sql.setString(1, (String)param.get("STORE_CD"));
			sql.setString(2, (String)param.get("POS_NO"));
			sql.setString(3,(String)param.get("CASHIER_NM"));
			sql.setInt(4, integer((String)param.get("TOT_SALE_AMOUNT")));
			sql.setString(5, (String)param.get("SALE_DATE_TIME"));
					
			
			 JOptionPane.showMessageDialog(null,"▶ Sql▶ " +sql.get());
			logger.info("sql is --->"  +  sql.get() );
						
			// executeUpdate의 return value는 affected된 row의 수 이다.
			// 1건 입력하는 경우 이므로 1이 리턴되지 않는 다면 에러가 있다는 의미이므로 명시적으로
			// Exception을 throw해 트랜잭션을 rollback한다.
			ret = executeUpdate(sql);
			if( ret != 1)
				throw new Exception("UnKnownDataInsertionException ... ");
		} catch (Exception e) {
			// 에러 발생시 반드시 rollback() 처리
			rollback();
			logger.error("",e);
			throw e;
		} finally {
			// 트랜잭션을 명시적으로 종료해야 한다.
			end();
		}
		return ret;
	}
	
	public int integer(String param) {
		return param != null ? Integer.parseInt(param.trim()) : 0;
	}
}
