package com.indiScene.museBoard.service; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.logging.Logger; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.servlet.ModelAndView; import com.indiScene.audioProcessing.KOSTAAudio; import com.indiScene.museBoard.dao.MuseBoardDao; import com.indiScene.museBoard.dto.MuseBoardDto; /** * @type : MuseBoardServiceImpl * @date : 2015. 7. 31. * @author : MS * @description : */ @Controller public class MuseBoardServiceImpl implements MuseBoardService { private String dir = "C:/SPB_Data/git/IndiScene/src/main/webapp/resources/"; // private String dir="C:/KMS_MavenSpring/apache-tomcat-7.0.59/wtpwebapps/IndiScene/resources/"; @Autowired private MuseBoardDao dao; private Logger logger = Logger.getLogger(this.getClass().getName()); @Override public void write(ModelAndView mav) { logger.info("MuseBoard Write Service"); Map<String, Object> map = mav.getModel(); HttpServletRequest request = (HttpServletRequest) map.get("request"); String board_num = "0"; int group_num = 1; int seq_num = 0; int seq_level = 0; if(request.getParameter("board_num") != null){ board_num = 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")); mav.setViewName("museBoard/collabo"); }else{ String pageNumber = request.getParameter("pageNumber"); MuseBoardDto board = dao.read(board_num); mav.addObject("pageNumber",pageNumber); mav.addObject("board",board); mav.setViewName("museBoard/write"); } String muse_name=request.getParameter("muse_name"); mav.addObject("muse_name",muse_name); mav.addObject("board_num" , board_num); mav.addObject("group_num" , group_num); mav.addObject("seq_num" , seq_num); mav.addObject("seq_level" , seq_level); } @Override public void writeOk(ModelAndView mav) { logger.info("MuseBoard WriteOk Service"); Map<String, Object> map = mav.getModel(); MultipartHttpServletRequest request = (MultipartHttpServletRequest) map.get("request"); MuseBoardDto MuseBoardDto = (MuseBoardDto) map.get("MuseBoardDto"); Iterator<String> iter = request.getFileNames(); List<MultipartFile> fileList = new ArrayList<MultipartFile>(); while(iter.hasNext()){ String fileStr = iter.next(); MultipartFile mf = request.getFile(fileStr); fileList.add(mf); // //System.out.println(fileStr +"\t"+ mf.getOriginalFilename()); } MuseBoardDto.setRegister_date(new java.util.Date()); MuseBoardDto.setCount(0); String coverImage=null; if(!request.getFile("coverImage").isEmpty()){ coverImage= MuseBoardDto.getArtist_id()+"_"+System.currentTimeMillis()+"_"+fileList.get(0).getOriginalFilename(); }else{ coverImage="d2.jpg"; } String musicFile = null; if(fileList.size() == 2){ // 녹음파일일 경우. musicFile =MuseBoardDto.getArtist_id()+"_"+System.currentTimeMillis()+"_"+fileList.get(1).getOriginalFilename(); } // String dirCover = request.getSession().getServletContext().getRealPath("/resources/museBoard/cover"); // String dirMusic = request.getSession().getServletContext().getRealPath("/resources/museBoard/music"); File coverImageFile = new File(dir+"/uploadBoard/cover/",coverImage); File uploadMusicFile = null; File recordFile=null; if(musicFile !=null){ // 녹음파일일 경우. uploadMusicFile = new File(dir+"/uploadBoard/music/",musicFile); }else{ uploadMusicFile = new File(dir+"/uploadBoard/music/",request.getParameter("recordFile").substring(request.getParameter("recordFile").lastIndexOf("/")+1)); recordFile = new File(dir+"/TemporaryMusic/",request.getParameter("recordFile").substring(request.getParameter("recordFile").lastIndexOf("/")+1)); } MuseBoardDto.setFile_name(uploadMusicFile.getName()); MuseBoardDto.setFile_path(uploadMusicFile.getAbsolutePath()); MuseBoardDto.setImage_path(coverImageFile.getAbsolutePath()); MuseBoardDto.setBoard_like(0); try { fileList.get(0).transferTo(coverImageFile); if(fileList.size()==2){ fileList.get(1).transferTo(uploadMusicFile); }else{ if(!recordFile.renameTo(uploadMusicFile)){ byte[] buf= new byte[1024]; FileInputStream fis = new FileInputStream(recordFile); FileOutputStream fos = new FileOutputStream(uploadMusicFile); int read= 0; while((read=fis.read(buf, 0, buf.length))!=-1){ fos.write(buf,0,read); } fis.close(); fos.close(); recordFile.delete(); } } } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } MuseBoardDto.setFile_path(MuseBoardDto.getFile_path().substring(MuseBoardDto.getFile_path().indexOf("\\resources")).replace('\\', '/')); MuseBoardDto.setImage_path(MuseBoardDto.getImage_path().substring(MuseBoardDto.getImage_path().indexOf("\\resources")).replace('\\','/')); MuseBoardWriteNumber(MuseBoardDto); int check = dao.write(MuseBoardDto); mav.addObject("check", check); mav.addObject("board", MuseBoardDto); mav.setViewName("museBoard/writeOk"); } @Override public void MuseBoardWriteNumber(MuseBoardDto boardDto){ String board_num = boardDto.getBoard_num(); int group_num = boardDto.getGroup_num(); int seq_num = boardDto.getSeq_num(); int seq_level = boardDto.getSeq_level(); //logger.info("ch boardWriteNumber =>" + boardNumber + "||" + groupNumber + "||" + sequenceNumber + "||" + sequenceLevel); int max = 0; if(board_num.equals("0")){ //Root max=dao.boardGroupNumberMax(); if(max != 0){ max = max+1; }else{ max = boardDto.getGroup_num(); } group_num=max; seq_num=boardDto.getSeq_num(); seq_level = boardDto.getSeq_level(); }else{ HashMap<String, Integer> hMap = new HashMap<String, Integer>(); hMap.put("group_num", group_num); hMap.put("seq_num", seq_num); dao.boardGroupNumberUpdate(hMap); seq_level+=1; seq_num+=1; } boardDto.setGroup_num(group_num); boardDto.setSeq_num(seq_num); boardDto.setSeq_level(seq_level); logger.info("--"+group_num + "," + seq_num + "," + seq_level); } /* @Override public void record(MultipartHttpServletRequest request, HttpServletResponse response) { logger.info("upload Record Service Start"); String artistId= request.getParameter("artist_id"); Iterator<String> iter = request.getFileNames(); MultipartFile mpf = request.getFile(iter.next()); String recordFile = artistId+"_"+System.currentTimeMillis()+"_"+"RecordingFile.wav"; // String dir =request.getSession().getServletContext().getRealPath("/resources/TemporaryMusic"); File record =new File(dir+"/TemporaryMusic/",recordFile); try { mpf.transferTo(record); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } PrintWriter pw=null; try { pw = response.getWriter(); } catch (IOException e) { e.printStackTrace(); } pw.write(recordFile); // //System.out.println("artist id = " +request.getParameter("artist_id")); }*/ @Override public void list(ModelAndView mav) { logger.info("upload List Service Start"); Map<String,Object> hMap = mav.getModel(); HttpServletRequest request=(HttpServletRequest)hMap.get("request"); dir= request.getSession().getServletContext().getRealPath("/").replace('\\', '/')+"resources/"; int boardSize =10; String pageNumber = request.getParameter("pageNumber"); if(pageNumber == null) pageNumber ="1"; int currentPage = Integer.parseInt(pageNumber); int startRow = (currentPage - 1) * boardSize +1; int endRow = currentPage*boardSize; int count = dao.getBoardCount(); HashMap<String,Object> rowMap = new HashMap<String,Object>(); rowMap.put("startRow", startRow); rowMap.put("endRow", endRow); rowMap.put("muse_name", request.getParameter("muse_name")); List<MuseBoardDto> list= dao.getBoardList(rowMap); /* for(MuseBoardDto dto:list){ // //System.out.println(dto.getFile_path()); dto.setFile_path(dto.getFile_path().substring(dto.getFile_path().indexOf("\\resources")).replace('\\', '/')); dto.setImage_path(dto.getImage_path().substring(dto.getImage_path().indexOf("\\resources")).replace('\\','/')); }*/ String muse_name=request.getParameter("muse_name"); mav.addObject("muse_name",muse_name); mav.addObject("boardList",list); mav.addObject("count",count); mav.addObject("boardSize",boardSize); mav.addObject("currentPage",currentPage); mav.setViewName("museBoard/list"); } @Override public void read(ModelAndView mav) { Map<String, Object> map=mav.getModel(); HttpServletRequest request = (HttpServletRequest) map.get("request"); String board_num = request.getParameter("boardNum"); String pageNumber = request.getParameter("pageNumber"); MuseBoardDto boardDto = dao.read(board_num); dao.readCount(board_num); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm"); String date= sdf.format(boardDto.getRegister_date()); String muse_name=request.getParameter("muse_name"); mav.addObject("muse_name",muse_name); mav.addObject("date",date); mav.addObject("pageNumber",pageNumber); mav.addObject("board_num",board_num); mav.addObject("boardDto",boardDto); mav.setViewName("museBoard/read"); } @Override public void update(ModelAndView mav) { Map<String, Object> map=mav.getModel(); HttpServletRequest request = (HttpServletRequest) map.get("request"); String board_num = request.getParameter("boardNum"); String pageNumber = request.getParameter("pageNumber"); MuseBoardDto board = dao.read(board_num); // //System.out.println(board); String muse_name=request.getParameter("muse_name"); mav.addObject("muse_name",muse_name); mav.addObject("pageNumber",pageNumber); mav.addObject("board",board); mav.setViewName("museBoard/update"); } @Override public void updateOk(ModelAndView mav) { logger.info("MuseBoard UpdateOk Service"); Map<String, Object> map = mav.getModel(); MultipartHttpServletRequest request = (MultipartHttpServletRequest) map.get("request"); MuseBoardDto MuseBoardDto = (MuseBoardDto) map.get("MuseBoard"); MuseBoardDto originalDto = dao.read(MuseBoardDto.getBoard_num()); String coverImage = null; String musicFile = null; Iterator<String> iter = request.getFileNames(); while(iter.hasNext()){ String fileStr = iter.next(); MultipartFile mf = request.getFile(fileStr); if(!mf.isEmpty()){ if(fileStr.equals("coverImage")){ coverImage=MuseBoardDto.getArtist_id()+"_"+System.currentTimeMillis()+"_"+mf.getOriginalFilename(); File oldFile = new File(dir+"/uploadBoard/cover/",originalDto.getImage_path().substring(originalDto.getImage_path().lastIndexOf("/")+1)); oldFile.delete(); File newFile = new File(dir+"/uploadBoard/cover/",coverImage); MuseBoardDto.setImage_path(newFile.getAbsolutePath().substring(newFile.getAbsolutePath().indexOf("\\resources")).replace('\\','/')); try { mf.transferTo(newFile); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }else if(fileStr.equals("musicFile")){ musicFile = MuseBoardDto.getArtist_id()+"_"+System.currentTimeMillis()+"_"+mf.getOriginalFilename(); File oldFile = new File(dir+"/uploadBoard/cover/",originalDto.getFile_path().substring(originalDto.getFile_path().lastIndexOf("/")+1)); oldFile.delete(); File newFile = new File(dir+"/uploadBoard/cover/",musicFile); MuseBoardDto.setFile_name(mf.getOriginalFilename()); MuseBoardDto.setFile_path(newFile.getAbsolutePath().substring(newFile.getAbsolutePath().indexOf("\\resources")).replace('\\', '/')); try { mf.transferTo(newFile); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }else{ if(fileStr.equals("coverImage")){ MuseBoardDto.setImage_path(originalDto.getImage_path()); }else if(fileStr.equals("musicFile")){ } MuseBoardDto.setFile_path(originalDto.getFile_path()); } // //System.out.println(fileStr +"\t"+ mf.getOriginalFilename()); } dao.update(MuseBoardDto); } @Override public void delete(ModelAndView mav){ logger.info("MuseBoard Delete Service"); Map<String, Object> map = mav.getModel(); HttpServletRequest request = (HttpServletRequest) map.get("request"); String board_num = request.getParameter("boardNum"); String pageNumber = request.getParameter("pageNumber"); String muse_name=request.getParameter("muse_name"); mav.addObject("muse_name",muse_name); mav.addObject("pageNumber",pageNumber); mav.addObject("board_num",board_num); mav.setViewName("museBoard/delete"); } @Override public void deleteOk(ModelAndView mav) { logger.info("MuseBoard DeleteOk Service"); Map<String, Object> map = mav.getModel(); HttpServletRequest request = (HttpServletRequest) map.get("request"); String board_num = request.getParameter("board_num"); String pageNumber = request.getParameter("pageNumber"); String password = request.getParameter("password"); HashMap<String,String> hMap = new HashMap<String,String>(); hMap.put("board_num", board_num); hMap.put("password", password); hMap.put("artist_id", request.getParameter("artist_id")); MuseBoardDto originalDto = dao.read(board_num); File oldImg = new File(dir+"/uploadBoard/cover/",originalDto.getImage_path().substring(originalDto.getImage_path().lastIndexOf("/")+1)); File oldMusic = new File(dir+"/uploadBoard/cover/",originalDto.getFile_path().substring(originalDto.getFile_path().lastIndexOf("/")+1)); oldImg.delete(); oldMusic.delete(); int check = dao.delete(hMap); String muse_name=request.getParameter("muse_name"); mav.addObject("muse_name",muse_name); mav.addObject("pageNumber",pageNumber); mav.addObject("check",check); mav.setViewName("museBoard/deleteOk"); } /* @Override public void like(ModelAndView mav) { logger.info("MuseBoard like Service"); Map<String, Object> map = mav.getModel(); HttpServletRequest request = (HttpServletRequest) map.get("request"); HttpServletResponse response = (HttpServletResponse) map.get("response"); String board_num = request.getParameter("boardNum"); String artist_id= request.getParameter("artist_id"); HashMap <String, String> hMap = new HashMap<String,String>(); hMap.put("board_num", board_num); hMap.put("artist_id", artist_id); int count = dao.likeCheck(hMap); PrintWriter pw = null;; response.setContentType("text/html; charset=UTF-8"); try { pw = response.getWriter(); } catch (IOException e) { e.printStackTrace(); } if(count>0){ pw.write("이미 추천한 게시물입니다."); }else{ int likeCheck = dao.likeUpdate(hMap); if(likeCheck ==0){ pw.write("본인의 게시물은 추천할 수 없습니다."); }else{ int check = dao.like(hMap); if(check>0){ pw.write("추천되었습니다."); int likeCount = dao.checkLike(hMap); if(likeCount == 30){ dao.copyBest(board_num); } } } } } */ @Override public void collabo(ModelAndView mav) { logger.info("MuseBoard Collabo Service"); Map<String, Object> map = mav.getModel(); HttpServletRequest request = (HttpServletRequest) map.get("request"); String board_num = request.getParameter("boardNum"); String pageNumber = request.getParameter("pageNumber"); MuseBoardDto board = dao.read(board_num); String muse_name=request.getParameter("muse_name"); mav.addObject("muse_name",muse_name); mav.addObject("pageNumber",pageNumber); mav.addObject("board",board); mav.setViewName("museBoard/collabo"); } @Override public void collaboAdopt(ModelAndView mav) { logger.info("MuseBoard collaboAdopt Service"); Map<String, Object> map = mav.getModel(); MultipartHttpServletRequest request = (MultipartHttpServletRequest) map.get("request"); HttpServletResponse response = (HttpServletResponse) map.get("response"); MuseBoardDto MuseBoardDto = (MuseBoardDto) map.get("MuseBoard"); Iterator<String> iter = request.getFileNames(); MultipartFile mf = null; while(iter.hasNext()){ String fileStr = iter.next(); if(fileStr.equals("musicFile")){ mf = request.getFile(fileStr); // //System.out.println(fileStr+"\t"+mf.getOriginalFilename()); } // //System.out.println(fileStr +"\t"+ request.getFile(fileStr)); } String musicFile = null; if(mf!=null){ // 음악파일일 경우. musicFile =MuseBoardDto.getArtist_id()+"_"+System.currentTimeMillis()+"_"+mf.getOriginalFilename(); } File uploadMusicFile = null; File recordFile=null; if(musicFile !=null){ // 음악파일일 경우. uploadMusicFile = new File(dir+"/uploadBoard/music/",musicFile); }else{ uploadMusicFile = new File(dir+"/uploadBoard/music/",request.getParameter("recordFile").substring(request.getParameter("recordFile").lastIndexOf("/")+1)); recordFile = new File(dir+"/TemporaryMusic/",request.getParameter("recordFile").substring(request.getParameter("recordFile").lastIndexOf("/")+1)); } try { if(mf!=null){ mf.transferTo(uploadMusicFile); }else{ if(!recordFile.renameTo(uploadMusicFile)){ byte[] buf= new byte[1024]; FileInputStream fis = new FileInputStream(recordFile); FileOutputStream fos = new FileOutputStream(uploadMusicFile); int read= 0; while((read=fis.read(buf, 0, buf.length))!=-1){ fos.write(buf,0,read); } fis.close(); fos.close(); recordFile.delete(); } } } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } File originalFile = new File(dir+request.getParameter("originalFile").substring(request.getParameter("originalFile").indexOf("/resources")+10)); KOSTAAudio kostaAudio = new KOSTAAudio(); String mergeFile = kostaAudio.mergeAudio(originalFile.getAbsolutePath(), uploadMusicFile.getAbsolutePath(), MuseBoardDto.getArtist_id(), Double.parseDouble(request.getParameter("sync"))); try { PrintWriter pw = response.getWriter(); pw.write(mergeFile.substring(mergeFile.indexOf("/resources"))); } catch (IOException e) { e.printStackTrace(); } MuseBoardDto.setFile_path(uploadMusicFile.getAbsolutePath().substring(uploadMusicFile.getAbsolutePath().indexOf("\\resources")).replace('\\', '/')); // MuseBoardWriteNumber(MuseBoardDto); // int check = dao.write(MuseBoardDto); // mav.addObject("check", check); // mav.addObject("board", MuseBoardDto); } @Override public void collaboOk(ModelAndView mav) { logger.info("MuseBoard CollaboOk Service"); Map<String, Object> map = mav.getModel(); MultipartHttpServletRequest request = (MultipartHttpServletRequest) map.get("request"); MuseBoardDto MuseBoardDto = (MuseBoardDto) map.get("MuseBoardDto"); MuseBoardDto.setRegister_date(new java.util.Date()); MuseBoardDto.setCount(0); String coverImage=null; if(!request.getFile("coverImage").isEmpty()){ coverImage= MuseBoardDto.getArtist_id()+"_"+System.currentTimeMillis()+"_"+request.getFile("coverImage").getOriginalFilename(); }else{ coverImage="d2.jpg"; } File coverImageFile = new File(dir+"/uploadBoard/cover/",coverImage); File uploadMusicFile = new File(dir+request.getParameter("mergeFile").substring(request.getParameter("mergeFile").indexOf("/resources"))); MuseBoardDto.setFile_name(uploadMusicFile.getName()); MuseBoardDto.setFile_path(request.getParameter("mergeFile").substring(request.getParameter("mergeFile").indexOf("/resources"))); MuseBoardDto.setImage_path(coverImageFile.getAbsolutePath()); MuseBoardDto.setBoard_like(0); try { if(!request.getFile("coverImage").isEmpty()){ request.getFile("coverImage").transferTo(coverImageFile); } } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } if(!request.getFile("coverImage").isEmpty()){ MuseBoardDto.setImage_path(MuseBoardDto.getImage_path().substring(MuseBoardDto.getImage_path().indexOf("\\resources")).replace('\\','/')); }else{ MuseBoardDto.setImage_path(request.getParameter("image_path")); } MuseBoardWriteNumber(MuseBoardDto); int check = dao.write(MuseBoardDto); String muse_name=request.getParameter("muse_name"); mav.addObject("muse_name",muse_name); mav.addObject("check", check); mav.addObject("board", MuseBoardDto); mav.setViewName("museBoard/writeOk"); } @Override public void museToUpload(ModelAndView mav) { logger.info("MuseBoard museToUpload Service"); Map<String, Object> map = mav.getModel(); HttpServletRequest request = (HttpServletRequest) map.get("request"); HttpServletResponse response = (HttpServletResponse) map.get("response"); String board_num = request.getParameter("boardNum"); String muse_name=request.getParameter("muse_name"); MuseBoardDto board = dao.read(board_num); board.setArtist_id("["+muse_name+"]"+board.getArtist_id()); int check = dao.museToUpload(board); if(check > 0){ try { PrintWriter out = response.getWriter(); out.write("게시물 작성이 완료되었습니다."); } catch (IOException e) { e.printStackTrace(); } } mav.addObject("muse_name",muse_name); } }