package com.indiScene.notice.service;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Logger;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.ModelAndView;
import com.indiScene.notice.dao.NoticeDao;
import com.indiScene.notice.dto.NoticeDto;
import com.indiScene.reply.dao.ReplyDao;
import com.indiScene.reply.dto.ReplyDto;
/**
* @name : NoticeServiceImple
* @date : 2015. 6. 26.
* @author : 손유진
*/
@Component
public class NoticeServiceImple implements NoticeService {
@Autowired
private NoticeDao noticeDao;
private Logger logger=Logger.getLogger(this.getClass().getName());
@Autowired
private ReplyDao replyDao;
@Override
public void test(ModelAndView mav) {
mav.addObject("message","member 시작입니다.");
mav.setViewName("home");
}
/**
* @name : NoticeServiceImple
* @date : 2015. 7. 31.
* @author : 손유진
* @description : 공지사항을 쓰기위한 메소드
*/
@Override
public void noticeWrite(ModelAndView mav) {
Map<String,Object>map=mav.getModelMap();
HttpServletRequest request=(HttpServletRequest)map.get("request");
// 넘어온 값이 없기 때문에 초기값을 잡아주고
int board_num=0;
int group_num=1;
int seq_num=0;
int seq_level=0;
//null이아니면 초기값을 잡아줄 필요가 없다.
if(request.getParameter("board_num")!=null){
board_num=Integer.parseInt(request.getParameter("board_num"));
group_num=Integer.parseInt(request.getParameter("group_num"));
seq_num=Integer.parseInt(request.getParameter("seq_num"));
seq_level=Integer.parseInt(request.getParameter("seq_level"));
}
logger.info("board_num:"+board_num);
logger.info("group_num:"+group_num);
logger.info("seq_num:"+seq_num);
logger.info("seq_level:"+seq_level);
String pageNumber=request.getParameter("pageNumber");
if(pageNumber==null) pageNumber="1";
mav.addObject("board_num", board_num);
mav.addObject("group_num", group_num);
mav.addObject("seq_num", seq_num);
mav.addObject("seq_level", seq_level);
mav.addObject("pageNumber",pageNumber);
mav.setViewName("notice/write");
}
/**
* @name : NoticeServiceImple
* @date : 2015. 7. 31.
* @author : 손유진
* @description : 공지사항쓰기 완료(실패,성공 여부)확인을 위한 메소드
*/
@Override
public void noticeWriteOk(ModelAndView mav) {
Map<String,Object>map=mav.getModel();
HttpServletRequest request=(HttpServletRequest)map.get("request");
NoticeDto noticeDto=(NoticeDto)map.get("noticeDto");
noticeWriteNumber(noticeDto);//그룹번호, 시퀀스번호, 시퀀스넘버, 보드넘버를 넘김.
noticeDto.setRegister_date(new Date());
noticeDto.setCount(0);
int check = noticeDao.insert(noticeDto);
logger.info("check:"+check);
int pageNumber=Integer.parseInt(request.getParameter("pageNumber"));
mav.addObject("pageNumber",pageNumber);
mav.addObject("check",check);
mav.setViewName("notice/writeOk");
}
/**
* @name : NoticeServiceImple
* @date : 2015. 7. 31.
* @author : 손유진
* @description : 공지사항을 읽을때마다 조회수가 증가하게하는 메소드 */
public void noticeWriteNumber(NoticeDto noticeDto){
String board_num=noticeDto.getBoard_num();
int group_num=noticeDto.getGroup_num();
int seq_num=noticeDto.getSeq_num();
int seq_level=noticeDto.getSeq_level();
logger.info("boardNumber:" + board_num);
logger.info("groupNumber:"+ group_num);
logger.info("sequenceNumber:"+seq_num);
logger.info("sequenceLevel:"+seq_level);
int max=0;
if(board_num.equals("0")){
max=noticeDao.noticeGroupNumberMax();
if(max!=0){
max=max+1;
}else{
max=noticeDto.getGroup_num();
}
logger.info("max:"+max);
group_num=max;
seq_num=noticeDto.getSeq_num();
seq_level=noticeDto.getSeq_level();
}else{
//답글 sequenceNumber와 level이 수정되야함.
HashMap<String, Integer> hMap=new HashMap<String, Integer>();
hMap.put("groupNumber", group_num);
hMap.put("sequenceNumber", seq_num);
hMap.put("sequenceLevel", seq_level);
noticeDao.noticeGroupNumberUpdate(hMap);
seq_num=seq_num+1;
seq_level=seq_level+1;
}
noticeDto.setGroup_num(group_num);
noticeDto.setSeq_num(seq_num);
noticeDto.setSeq_level(seq_level);
}
/**
* @name : NoticeServiceImple
* @date : 2015. 7. 31.
* @author : 손유진
* @description : 공지사항 목록 로직 메소드
*/
@Override
public void noticeList(ModelAndView mav) {
Map<String , Object>map=mav.getModelMap();
HttpServletRequest request=(HttpServletRequest)map.get("request");
String pageNumber=request.getParameter("pageNumber");
if(pageNumber==null) pageNumber="1";
int boardSize=10;
int currentPage=Integer.parseInt(pageNumber);
int startRow=(currentPage-1)*boardSize+1;
int endRow=currentPage*boardSize;
logger.info("noticeList startRow: "+startRow+", endRow: "+endRow);
int count=noticeDao.getNoticeCount();
logger.info("noticeList count: "+count);
List<NoticeDto> noticeList=null;
if(count>0){
noticeList=noticeDao.getNoticeList(startRow, endRow);
}
if(noticeList!=null) logger.info("noticeList size: "+noticeList.size());
mav.addObject("noticeSize",boardSize);
mav.addObject("currentPage",currentPage);
mav.addObject("count",count);
mav.addObject("noticeList",noticeList);
mav.setViewName("notice/list");
}
/**
* @name : NoticeServiceImple
* @date : 2015. 7. 31.
* @author : 손유진
* @description : 공지사항글을 읽는 메소드
*/
@Override
public void noticeRead(ModelAndView mav) {
Map<String,Object> map=mav.getModelMap();
HttpServletRequest request=(HttpServletRequest)map.get("request");
/*int board_num=Integer.parseInt(request.getParameter("board_num"));*/
String board_num=request.getParameter("board_num");
int pageNumber=Integer.parseInt(request.getParameter("pageNumber"));
logger.info("noticeRead board_num: "+board_num+", pageNumber: "+pageNumber);
//넘겨받은 해당 boardNumber의 조회수를 1증가시킨 뒤 (BoardDaoImpl에서 처리)
//해당 boardNumber의 데이터들을 noticeDto로 반환받는다.
NoticeDto noticeDto=noticeDao.noticeRead(board_num);
List<ReplyDto> replyList=replyDao.replyList(board_num);
logger.info("noticeRead noticeDto: "+noticeDto);
mav.addObject("notice",noticeDto);
mav.addObject("pageNumber",pageNumber);
mav.addObject("replyList",replyList);
//read.jsp에서는 board와 pageNumber만 필요
mav.setViewName("notice/read");
}
/**
* @name : NoticeServiceImple
* @date : 2015. 7. 31.
* @author : 손유진
* @description :공지사항을 삭제하는 메소드
*/
@Override
public void noticeDelete(ModelAndView mav) {
Map<String,Object> map=mav.getModelMap();
HttpServletRequest request=(HttpServletRequest)map.get("request");
String board_num=request.getParameter("board_num");
int pageNumber=Integer.parseInt(request.getParameter("pageNumber"));
logger.info("noticeDelete board_num: "+board_num+", pageNumber: "+pageNumber);
mav.addObject("board_num",board_num);
mav.addObject("pageNumber",pageNumber);
mav.setViewName("notice/delete");
}
/**
* @name : NoticeServiceImple
* @date : 2015. 7. 31.
* @author : 손유진
* @description :공지사항 삭제 확인(실패,성공여부)을 위한 메소드
*/
@Override
public void noticeDeleteOk(ModelAndView mav) {
Map<String,Object> map=mav.getModelMap();
HttpServletRequest request=(HttpServletRequest)map.get("request");
String board_num=request.getParameter("board_num");
int pageNumber=Integer.parseInt(request.getParameter("pageNumber"));
logger.info("noticeDeleteOk board_num: "+board_num+", pageNumber: "+pageNumber);
int check=noticeDao.noticeDelete(board_num);
logger.info("noticeDeleteOk check: "+check);
mav.addObject("pageNumber",pageNumber);
mav.addObject("check",check);
mav.setViewName("notice/deleteOk");
}
/**
* @name : NoticeServiceImple
* @date : 2015. 7. 31.
* @author : 손유진
* @description :공지사항글 수정
*/
@Override
public void noticeUpdate(ModelAndView mav) {
// root + "/board/update.do?boardNumber="+boardNumber+"&pageNumber="+pageNumber
Map<String, Object> map=mav.getModelMap();
HttpServletRequest request=(HttpServletRequest)map.get("request");
String board_num=request.getParameter("board_num");
int pageNumber=Integer.parseInt(request.getParameter("pageNumber"));
NoticeDto notice=noticeDao.noticeUpdateSelect(board_num);
logger.info("noticeUpdate notice:"+notice);
//board와 pageNumber를 updateOk.jsp에 넘겨줘야한다.
mav.addObject("notice",notice);
mav.addObject("pageNumber",pageNumber);
mav.setViewName("notice/update");
}
/**
* @name : NoticeServiceImple
* @date : 2015. 7. 31.
* @author : 손유진
* @description :공지사항 수정확인 메소드
*/
@Override
public void noticeUpdateOk(ModelAndView mav) {
//boardNumber, pageNumber, writer, subject, email, content, password
Map<String,Object> map=mav.getModelMap();
HttpServletRequest request=(HttpServletRequest)map.get("request");
NoticeDto noticeDto=(NoticeDto)map.get("noticeDto");
int pageNumber=Integer.parseInt(request.getParameter("pageNumber"));
logger.info("noticeUpdateOk noticeDto: "+noticeDto+", pageNumber: "+pageNumber);
int check=noticeDao.noticeUpdate(noticeDto);
logger.info("noticeUpdateOk check: "+check);
//updateOk.jsp에는 check와 pageNumber를 넘겨줘야 한다.
mav.addObject("check",check);
mav.addObject("pageNumber",pageNumber);
mav.setViewName("notice/updateOk");
}
}