package com.indiScene.placeBoard.service;
import java.util.Date;
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.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import com.indiScene.commonIO.service.CommonIOService;
import com.indiScene.placeBoard.dao.PlaceBoardDao;
import com.indiScene.placeBoard.dto.PlaceBoardDto;
import com.indiScene.reply.dao.ReplyDao;
import com.indiScene.reply.dto.ReplyDto;
/**
@name : PlaceBoardServiceImpl
@date : 2015. 6. 25.
@auther: 김정승
@description : 대관 게시판 서비스 클래스
*/
@Component
public class PlaceBoardServiceImpl implements PlaceBoardService {
final Logger logger=Logger.getLogger(this.getClass().getName());
@Autowired
private PlaceBoardDao marketBoardDao;
@Autowired
private ReplyDao replyDao;
@Autowired
private CommonIOService commonIOService; //mainImgFind를 위해
/**
@name : enterBoard
@date : 2015. 6. 25.
@auther: 김정승
@description :전체 게시판 리스트를 호출하기 위해 해당페이지를 계산한뒤 dao를 호출한다
*/
@Override
public void enterBoard(ModelAndView mav) {
// TODO Auto-generated method stub
Map<String, Object> map=mav.getModelMap();
HttpServletRequest request=(HttpServletRequest)map.get("request");
String pageNumber=request.getParameter("pageNumber");
if(pageNumber==null) pageNumber="1";
int currentPage=Integer.parseInt(pageNumber);
logger.info("currentPage:" +currentPage);
//전체 레코드수, 현재 번호의 시작번호, 끝번호 -->
int count=marketBoardDao.getCount();
logger.info("count:"+ count);
int boardSize=9;
int startRow=(currentPage-1) * boardSize +1;
int endRow=currentPage*boardSize;
logger.info("startRow:" + startRow + ",endRow" + endRow);
List<PlaceBoardDto> marketList=null;
List<String> mainImageList=null;
// HashMap<String,MarketBoardDto> hMap=null;
// List<HashMap<String,MarketBoardDto>> mapList=null;
if(count >0) {
marketList=marketBoardDao.getMarketList(startRow,endRow);
logger.info("marketList" + marketList.size());
mainImageList=commonIOService.mainImageFind(marketList); //첫번째 이미지를 뽑아오는 메소드
//hMap=new HashMap<String,MarketBoardDto>();
}
mav.addObject("list", marketList);
mav.addObject("count", count);
mav.addObject("boardSize", boardSize);
mav.addObject("pageNumber",currentPage);
mav.addObject("mainImageList",mainImageList);
mav.setViewName("placeBoard/enterBoard");
}
// @Override //CommonIOService로 독립함
// public List<String> mainImageFind(List<MarketBoardDto> marketList) {
// List<String> mainImageList=new ArrayList<String>();
// String contentForImg=null;
// for(int i=0;i<marketList.size();i++){
// contentForImg=marketList.get(i).getContent();
// //System.out.println(contentForImg);
// //logger.info("내용추출" +contentForImg);
// Pattern p=Pattern.compile("src=\".*.\" style"); //표준정규식 만듬
// Matcher pM=p.matcher(contentForImg);//이미지 Path가 있는 content불러와 표준정규식과 비교
// if(pM.find()){
// String imagePath=pM.group();
//
// imagePath = imagePath.replaceAll("src=\"", "").replaceAll("\" style", "");
// //logger.info("이미지 경로추출" +imagePath);
// mainImageList.add(imagePath);
// }
// }
//
// return mainImageList;
// // TODO Auto-generated method stub
// }
/**
@name : write
@date : 2015. 6. 25.
@auther: 김정승
@description :dto에 담겨있는 입력정보를 db에 삼입하기위해 dao를 호출한다
*/
@Override
public void write(ModelAndView mav) {
// TODO Auto-generated method stub
Map<String, Object> map=mav.getModelMap();
PlaceBoardDto marketBoardDto=(PlaceBoardDto)map.get("marketBoardDto");
MultipartHttpServletRequest request=(MultipartHttpServletRequest)map.get("request");
Date date=new Date();
marketBoardDto.setRegister_date(date);
commonIOService.multiFileUpload(request,marketBoardDto); //뒤에 Dto는 CommonDto로 받는다
//멀티파일 처리 시작 CommonIOService로 독립시킴
// List<MultipartFile> upFileList=request.getFiles("file[]"); //넘어오는 다중파일을 List형태로 받는다
//
// if(upFileList!=null){
// String folderName=request.getParameter("folderName");
//
// String dir = request.getSession().getServletContext().getRealPath("/resources/"+folderName+"Resources/file");
// File folderMake=new File(dir);
// if(!folderMake.exists()) folderMake.mkdirs();//폴더없을때 만드는 처리
// logger.info(dir);
// String fileName="";
// String timeName="";
// String fileNameForDto="";
// String filePathForDto="";
//
// System.out.println(upFileList.size()); //dto에 들어갈 path를 만들기 위해 for문 돌림
// for(int i=0;i<upFileList.size();i++){
// MultipartFile upFile=upFileList.get(i);
//
// fileName=upFile.getOriginalFilename();
// fileNameForDto+="<>";
// fileNameForDto+=fileName;
//
// timeName=Long.toString(System.currentTimeMillis()) + "_"
// + upFile.getOriginalFilename();
// try{
// File file=new File(dir,timeName);
// upFile.transferTo(file);
// filePathForDto+="<>"; // <> 을 기준으로 중첩해서 dto에 들어간다
// filePathForDto+=file.getAbsolutePath();
//
// }catch(Exception e){
// logger.info("fileUploadError" + e);
// }
// }
// marketBoardDto.setFile_name(fileNameForDto);
// marketBoardDto.setFile_path(filePathForDto);
//
// logger.info("fileNameForDto:" + fileNameForDto);
// logger.info("filePathForDto:" + filePathForDto);
//
// }
// //멀티파일 처리 끝
int check=marketBoardDao.insert(marketBoardDto);
logger.info("check" + check);
mav.addObject("check", check);
mav.setViewName("placeBoard/writeOk");
}
/**
@name : read
@date : 2015. 6. 25.
@auther: 김정승
@description : 클릭한 게시글을 읽기 위해 board_num을 담아 dao를 호출한다
*/
@Override
public void read(ModelAndView mav) {
// TODO Auto-generated method stub
logger.info("readService----------------------");
Map<String, Object>map=mav.getModelMap();
HttpServletRequest request=(HttpServletRequest) map.get("request");
String boardNumber=(request.getParameter("board_num"));
String currentPage=(request.getParameter("pageNumber"));
PlaceBoardDto marketBoardDto=marketBoardDao.read(boardNumber);
System.out.println("sdf"+boardNumber);
//한줄댓글을 불러온다
List<ReplyDto> replyList=replyDao.replyList(boardNumber);
int countCheck=0;
if(marketBoardDto !=null){
countCheck=marketBoardDao.count(boardNumber);
}
logger.info("marketBoardDto:" + marketBoardDto);
logger.info("countCheck" + countCheck);
//logger.info("replyContent" +replyDto.getReply_content());
//한줄댓글을 mav에 집어 넣는다.
mav.addObject("replyList",replyList);
mav.addObject("marketBoard",marketBoardDto);
mav.addObject("pageNumber",currentPage);
mav.setViewName("placeBoard/read");
}
// /** commonIO로 뺐음
// @name : imageUpload
// @date : 2015. 6. 25.
// @auther: 김정승
// @description :게시판에 이미지를 첨부하기 위해 저장위치에 파일을 저장시키고 위치를 반환한다
// */
// @Override
// public void imageUpload(ModelAndView mav) {
// Map<String,Object> map=mav.getModelMap();
// HttpServletRequest request = (HttpServletRequest) map.get("request");
// MultipartFile upFile=(MultipartFile) map.get("upFile");
//// HttpSession session = request.getSession();
//// String root_path = session.getServletContext().getRealPath("/");
//// logger.info(root_path);
//// String attach_path = "resources/files/attach/";
//
// String fileName = upFile.getOriginalFilename();
// String timeName = Long.toString(System.currentTimeMillis()) + "_"
// + fileName;
// long fileSize = upFile.getSize();
//
// logger.info("fileName:" + fileName); //이미지 경로에 들어가고 CKEditor 콜백에 들어간다
// logger.info("fileSize:" + fileSize); //일단 이미지에선 쓰지 않는다
// logger.info("timeName:" + timeName); //실제 이미지 경로에 들어가고 콜백에 들어간다.
// String rootDir=request.getSession().getServletContext().getRealPath("/");
// //System.out.println("rootDir" + rootDir);
//
// String[] simpleClassName=this.getClass().getSimpleName().split("Service");
// String folderName=simpleClassName[0];
// System.out.println(folderName);
//
// String attachDir="resources/marketResources/img/"; //콜백으로 넘길용도+실제 파일 들어갈 용도
// String CKEditorFuncNum=request.getParameter("CKEditorFuncNum");
// if(fileSize !=0){
// try{
// File file= new File(rootDir+ attachDir + timeName ); //실제 파일이 들어갈 용도
// upFile.transferTo(file); //img 새성된 File위치에 파일을 넣는다
// logger.info(file.toString());
// mav.addObject("CKEditorFuncNum",CKEditorFuncNum); //CkEditor 내부의 function 번호지정
// mav.addObject("filePath",file.toString()); //콜백에서 처리할 최초 이미지 경로
// }catch (Exception e){
// logger.info("ImageUploadError" + e);
// }
// }
// String filePath="/indiscene/" +attachDir+timeName; //콜백으로 넘길 위치용도
// mav.addObject("CKEditorFuncNum",CKEditorFuncNum);
// mav.addObject("filePath" , filePath);
// mav.setViewName("common/imgUpCheck");
//
// }
/**
@name : delete
@date : 2015. 6. 25.
@auther: 김정승
@description : 게시물 삭제를 위해 계정비번 요구 페이지 반환
*/
@Override
public void delete(ModelAndView mav) {
// TODO Auto-generated method stub
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"));
String artist_id=request.getParameter("artist_id");
mav.addObject("board_num",board_num);
mav.addObject("pageNumber",pageNumber);
mav.addObject("artist_id",artist_id);
mav.setViewName("placeBoard/delete");
}
/**
@name : deleteOk
@date : 2015. 6. 25.
@auther: 김정승
@description :대관게시판 글을 삭제하기 위한 서비스 메소드
*/
@Override
public void deleteOk(ModelAndView mav) {
// TODO Auto-generated method stub
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"));
String artist_id=request.getParameter("artist_id");
String password=request.getParameter("password");
String realPass=marketBoardDao.passCheck(artist_id);
logger.info("realPass:" +realPass);
logger.info("TypedPass:"+password);
logger.info("board_num:"+board_num);
logger.info("pageNumber:"+pageNumber);
int delCheck=0;
if(password.equals(realPass)){
logger.info("--여기는 오니");
PlaceBoardDto marketBoardDto=marketBoardDao.read(board_num);
//commonIOService.multiFileDelete(marketBoardDto); //독립된 파일처리 과정을 호출
//다중파일 삭제 처리 시작
// if(marketBoardDto.getFile_name()!=null){ //CommonService로 독립
// File file=null;
// String fileNameForDto=marketBoardDto.getFile_name();
// String filePathForDto=marketBoardDto.getFile_path();
// String file_name=null;
// String file_path=null;
//
// StringTokenizer pathToken=new StringTokenizer(filePathForDto,"<>");
// StringTokenizer nameToken=new StringTokenizer(fileNameForDto,"<>");
//
// while(nameToken.hasMoreTokens() && pathToken.hasMoreTokens()){
// file_path=pathToken.nextToken();
// logger.info("deleteTokenCheck:" +file_path );
// file=new File(file_path);
// if(file.exists() && file.isFile()) file.delete();
// }
// }
delCheck=marketBoardDao.delete(board_num);
}else{
delCheck=2;
}
mav.addObject("board_num",board_num);
mav.addObject("pageNumber",pageNumber);
mav.addObject("artist_id",artist_id);
mav.addObject("check",delCheck);
mav.setViewName("placeBoard/deleteOk");
}
/**
@name : update
@date : 2015. 6. 25.
@auther: 김정승
@description :공연게시판 수정을위해 db내용을 불러오기 위한 service 메소드
*/
@Override
public void update(ModelAndView mav) {
// TODO Auto-generated method stub
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"));
PlaceBoardDto marketBoardDto=marketBoardDao.update(board_num);
// logger.info(marketBoardDto.toString());
// logger.info(marketBoardDto.getContent());
mav.addObject("board",marketBoardDto);
mav.addObject("pageNumber",pageNumber);
mav.setViewName("placeBoard/update");
}
/**
@name : deleteOk
@date : 2015. 6. 25.
@auther: 김정승
@description :공연게시판 글을 수정하기 위한 서비스 메소드
*/
public void updateOk(ModelAndView mav) {
// TODO Auto-generated method stub
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"));
PlaceBoardDto marketBoardDto=(PlaceBoardDto) map.get("marketBoardDto");
if(marketBoardDto.getFile_name()!=null){
}
int check=marketBoardDao.updateOk(marketBoardDto);
mav.addObject("check",check);
mav.addObject("board_num",board_num);
mav.addObject("pageNumber",pageNumber);
mav.setViewName("placeBoard/updateOk");
}
// @Override //CommonIO로 독립시킴
// public void download(ModelAndView mav) throws Throwable{
// Map<String, Object> map = mav.getModelMap();
// HttpServletRequest request = (HttpServletRequest) map.get("request");
// HttpServletResponse response = (HttpServletResponse) map.get("response");
// String boardNumber =request.getParameter("board_num"); // 필요없음 확인되면 지울것
//
// //파일정보를 뽑아냄
// String file_name=request.getParameter("file_name");
// String file_path=request.getParameter("file_path");
//
// String fileName = new String(file_name.getBytes("UTF-8"),
// "ISO-8859-1");
// response.setHeader("Content-Disposition", "attachment;filename="
// + fileName);
// response.setHeader("Content-Transfer-Encoding", "binary");
// response.setContentType("application/octet-stream");
//
// //file_size가 없으므로 클릭한 file을 File에 객체 생성후 사이즈를 뽑아낸다
// File file=new File(file_path);
//
// int file_size=(int)file.length();
// response.setContentLength(file_size);
//
// logger.info("filePath" +file.toString() +"\t"+"fileSize"+ file_size);
//
// BufferedInputStream fis = null;
// BufferedOutputStream fos = null;
//
//
// try {
// fis = new BufferedInputStream(new FileInputStream(file_path));
// fos = new BufferedOutputStream(response.getOutputStream());
// byte[] by = new byte[(int) file_size];
// int count = fis.read(by);
// for (int i = 0; i < count; i++) {
// fos.write(by[i]);
// }
// fos.flush();
// } catch (Exception e) {
// e.printStackTrace();
// System.out.println("Download Error");
// } finally {
// if (fis != null)
// fis.close();
// if (fos != null)
// fos.close();
// }
// mav.setViewName("");
// }
}