package tutorial.server;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;

import javax.swing.JOptionPane;

import kr.fujitsu.com.ffw.daemon.core.config.repository.telegram.TelegramUtil;
import kr.fujitsu.com.ffw.daemon.net.ActionSocket;
import kr.fujitsu.com.ffw.daemon.net.server.ServerAction;

import org.apache.log4j.Logger;

public class TutorialServerAction extends ServerAction {
	
	private static Logger logger = Logger.getLogger(TutorialServerAction.class);
	private TutorialServerDAO dao = null;
	
	public void execute(ActionSocket actSock)   {
		// 데이터 입출력과 관련된 Filter로써 BasicByteFilter를 사용할 경우,
		// 전송받은 데이터를 가져올 때는 반드시 전문의 길이를 입력해야 함
		// 현재의 전문 길이는 45
		try {
		//JOptionPane.showMessageDialog(null,"▶Server RECEIVED▶ "  );
		String receive = new String((byte[])actSock.receive(45));
		
		
		logger.info("▶RECEIVED▶ " + receive);
				
		 JOptionPane.showMessageDialog(null,"▶Server RECEIVED▶ " + receive.trim());
		// tutorial-telegram.xml의 message-form name인 TUTORIAL_FRM입력
		// receive는 전문(telegram)임
		Map param = TelegramUtil.bind(receive, "TUTORIAL_FRM");
		dao = new TutorialServerDAO();
		
		logger.info(dao.updateTutorialTgt(param) + " is inserted.");
		
		// Socket Client에게 보낼 메시지 전문을 만든다.
		String send = receive + "@" + getDate();
		actSock.send(send.getBytes());
		logger.info("▶SEND▶ " + send);
		}catch(Exception e){
			JOptionPane.showMessageDialog(null,"▶Server RECEIVED▶ " );
			logger.info("에러", e);
		}
	}
	
	private static String getDate() {
		Date date = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,SSS");
		return sdf.format(date);
	}
}
