package com.indiScene.muse.service;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
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 javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import com.indiScene.muse.dao.MuseDao;
import com.indiScene.muse.dto.MuseDto;
import com.indiScene.museBoard.dao.MuseBoardDao;
import com.indiScene.museBoard.dto.MuseBoardDto;
import com.indiScene.museGuest.dao.MuseGuestDaoImpl;
import com.indiScene.museGuest.dto.MuseGuestDto;
/**
* @name:MuseServiceImpl
* @date :2015. 6. 25.
* @author: 김정승
* @description : MuseService를 상속받은 클래스
*/
@Component
public class MuseServiceImpl implements MuseService {
private String rootpath = "C:/SPB_Data/git/IndiScene/src/main/webapp/";
@Autowired
private MuseDao museDao;
@Autowired
private MuseGuestDaoImpl guestDao;
@Autowired
private MuseBoardDao boardDao;
private final Logger logger = Logger.getLogger(this.getClass().getName());
/**
* @name:nameCheck
* @date :2015. 6. 26.
* @author: 김정승
* @description : muse 이름이 기존에 존재하는지 확인하는 method
*/
public void nameCheck(ModelAndView mav){
Map<String, Object> map = mav.getModelMap();
HttpServletRequest request = (HttpServletRequest)map.get("request");
HttpServletResponse response = (HttpServletResponse)map.get("response");
String muse_name = request.getParameter("muse_name");
MuseDto museDto = museDao.nameCheck(muse_name);
//logger.info("--" + museDto);
try{
if(museDto == null){
PrintWriter out = response.getWriter();
out.print("0");
}else if(museDto != null){
PrintWriter out = response.getWriter();
out.print("1");
}
}catch(Exception e){
e.printStackTrace();
}
}
/**
* @name:logup
* @date :2015. 6. 26.
* @author: 김정승
* @description : muse 개설을 위한 method
*/
public void logup(ModelAndView mav){
Map<String, Object> map = mav.getModelMap();
MultipartHttpServletRequest request = (MultipartHttpServletRequest)map.get("request");
HttpServletResponse response = (HttpServletResponse)map.get("response");
logger.info("Request Prameter Check(museName) : " +request.getParameter("muse_name"));
MuseDto museDto = (MuseDto)map.get("museDto");
museDto.setMuse_date(new Date());
MultipartFile upFile = request.getFile("file");
String fileName = upFile.getOriginalFilename();
String timeName = System.currentTimeMillis() + "_" + fileName ;
long fileSize = upFile.getSize();
logger.info("-- fileName : " + fileName);
logger.info("-- timeName : " + timeName);
logger.info("-- fileSize : " + fileSize);
String dir= request.getSession().getServletContext().getRealPath("/").replace('\\', '/')+"resources/museResources";
if(fileSize != 0){
try{
// String dir="C:/SPB_Data/git/IndiScene/src/main/webapp/resources/museResources";
File file = new File(dir, timeName);
upFile.transferTo(file);
museDto.setMuse_filepath(file.getAbsolutePath());
}catch(Exception e){
logger.info("ch File Input Ouput Error");
}
}else{
museDto.setMuse_filepath(dir+"Koala.jpg");
}
//logger.info("ch dir : " + museDto.getMuse_filepath());
PrintWriter out = null;
response.setCharacterEncoding("utf-8");
try {
out = response.getWriter();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int check = museDao.logup(museDto);
if(check > 0){
int musenew = guestDao.createMuse(museDto.getMuse_name());
//logger.info("-- new create muse write : " + musenew);
out.print("<script> "
+ "alert('뮤즈가 개설되었습니다.');"
+ "indimuse('"+museDto.getArtist_id()+"')"
+ " </script> ");
}else{
//logger.info("-- new create muse write : " + musenew);
out.print("<script> "
+ "alert('뮤즈가 개설 될수 없습니다.');"
+ "indimuse('"+museDto.getArtist_id()+"')"
+ " </script> ");
}
//logger.info("-- muselogup check:" + check);
/*mav.addObject("check",check);
mav.setViewName("museCreate/logup");*/
mav.setViewName("museCreate/musemain");
}
/**
* @name:museCheck
* @date :2015. 6. 26.
* @author: 김정승
* @description : 회원이 이전에 muse를 개설했는지 확인하는 method
*/
public void museCheck(ModelAndView mav){
Map<String, Object> map = mav.getModelMap();
HttpServletRequest request = (HttpServletRequest)map.get("request");
HttpServletResponse response = (HttpServletResponse)map.get("response");
String artist_id = request.getParameter("artist_id");
MuseDto museDto = museDao.museCheck(artist_id);
try{
if(museDto == null){
PrintWriter out = response.getWriter();
out.print("0");
}else if(museDto != null){
PrintWriter out = response.getWriter();
out.print(museDto.getMuse_name());
}
}catch(Exception e){
e.printStackTrace();
}
}
/**
* @name:museMain
* @date :2015. 6. 26.
* @author: 김정승
* @description : museMain페이지로 이동할때
*/
public void museMain(ModelAndView mav){
Map<String, Object> map = mav.getModelMap();
HttpServletRequest request = (HttpServletRequest) map.get("request");
String artist_id = request.getParameter("artist_id");
List<HashMap<String, Object>> bestMuse = museDao.bestMuse(artist_id);
List<HashMap<String, Object>> myMuse = museDao.myMuse(artist_id);
List<MuseDto> allMuse = museDao.allMuse(artist_id);
for(int i = 0; i < bestMuse.size(); i++){
String path = (String)bestMuse.get(i).get("MUSE_FILEPATH");
int su = request.getSession().getServletContext().getRealPath("/").length()-1;
logger.info("--" + su + " " + path + " " + path.substring(su));
bestMuse.get(i).replace("MUSE_FILEPATH", path.substring(su));
}
for(int i = 0; i < myMuse.size(); i++){
String path = (String)myMuse.get(i).get("MUSE_FILEPATH");
int su = request.getSession().getServletContext().getRealPath("/").length()-1;
logger.info("--" + su + " " + path + " " + path.substring(su));
myMuse.get(i).replace("MUSE_FILEPATH", path.substring(su));
}
for(int i = 0; i < allMuse.size(); i++){
String path = (String)allMuse.get(i).getMuse_filepath();
int su = request.getSession().getServletContext().getRealPath("/").length()-1;
logger.info("--" + su + " " + path + " " + path.substring(su));
allMuse.get(i).setMuse_filepath(path.substring(su));
}
mav.addObject("bestMuse", bestMuse);
mav.addObject("myMuse", myMuse);
mav.addObject("allMuse", allMuse);
mav.setViewName("museCreate/musemain");
//logger.info("--" + bestMuse.size() + myMuse.size() + allMuse.size());
}
/**
* @name: museCancle
* @date :2015. 6. 26.
* @author: 김정승
* @description : 회원가입을 취소하기 위해 MuseDao class를 호출하는 method
*/
public void museCancle(ModelAndView mav){
Map<String, Object> map = mav.getModelMap();
HttpServletRequest request = (HttpServletRequest)map.get("request");
HttpServletResponse response = (HttpServletResponse)map.get("response");
String artist_id = request.getParameter("artist_id");
String muse_name = request.getParameter("muse_name");
int check = museDao.museCancle(artist_id, muse_name);
try{
PrintWriter out = response.getWriter();
out.print(check);
}catch(Exception e){
e.printStackTrace();
}
}
/**
* @name: museSignup
* @date :2015. 6. 26.
* @author: 김정승
* @description : muse가입을 위해 MuseDao class를 호출하는 method
*/
public void museSignup(ModelAndView mav){
Map<String, Object> map = mav.getModelMap();
HttpServletRequest request = (HttpServletRequest)map.get("request");
HttpServletResponse response = (HttpServletResponse)map.get("response");
String artist_id = request.getParameter("artist_id");
String muse_name = request.getParameter("muse_name");
int check = museDao.museSignup(artist_id, muse_name);
try{
PrintWriter out = response.getWriter();
out.print(check);
}catch(Exception e){
e.printStackTrace();
}
}
/**
* @name: masterCheck
* @date :2015. 6. 26.
* @author: 김정승
* @description : muse 개설자인지 확인하기 위해 MuseDao class를 호출하는 method
*/
public void masterCheck(ModelAndView mav){
Map<String, Object> map = mav.getModelMap();
HttpServletRequest request = (HttpServletRequest)map.get("request");
HttpServletResponse response = (HttpServletResponse)map.get("response");
String artist_id = request.getParameter("artist_id");
String muse_name = request.getParameter("muse_name");
//logger.info("-- " + artist_id + "," + muse_name);
MuseDto museDto = museDao.masterCheck(artist_id, muse_name);
try{
PrintWriter out = response.getWriter();
if(museDto != null){
out.print("1");
}else{
out.print("0");
}
//logger.info("--museDto" + museDto);
}catch(Exception e){
e.printStackTrace();
}
}
/**
* @name: museMember
* @date :2015. 6. 26.
* @author: 김정승
* @description : muse가입 맴버 확인을 위해 MuseDao class를 호출하는 method
*/
public void museMember(ModelAndView mav){
Map<String, Object> map = mav.getModelMap();
HttpServletRequest request = (HttpServletRequest)map.get("request");
String muse_name = request.getParameter("muse_name");
List<HashMap<String, Object>> joinMember = museDao.joinMember(muse_name);
List<HashMap<String, Object>> nonMember = museDao.nonMember(muse_name);
logger.info("--" + joinMember.size() + " , " + nonMember.size());
mav.addObject("joinMember", joinMember);
mav.addObject("nonMember", nonMember);
mav.addObject("muse_name", muse_name);
mav.setViewName("museCreate/member");
}
/**
* @name: inviteMember
* @date :2015. 6. 26.
* @author: 김정승
* @description : muse가입신청 맴버 승인을 위해 MuseDao class를 호출하는 method
*/
public void inviteMember(ModelAndView mav){
Map<String, Object> map = mav.getModelMap();
HttpServletRequest request = (HttpServletRequest)map.get("request");
HttpServletResponse response = (HttpServletResponse)map.get("response");
String artist_id = request.getParameter("artist_id");
String muse_name = request.getParameter("muse_name");
//logger.info("-- " + artist_id + "," + muse_name);
int check = museDao.inviteMember(artist_id, muse_name);
try{
PrintWriter out = response.getWriter();
out.print(check);
}catch(Exception e){
e.printStackTrace();
}
}
/**
* @name: outMember
* @date :2015. 6. 26.
* @author: 김정승
* @description : muse가입 맴버 탈퇴를 위해 MuseDao class를 호출하는 method
*/
public void outMember(ModelAndView mav){
Map<String, Object> map = mav.getModelMap();
HttpServletRequest request = (HttpServletRequest)map.get("request");
HttpServletResponse response = (HttpServletResponse)map.get("response");
String artist_id = request.getParameter("artist_id");
String muse_name = request.getParameter("muse_name");
//logger.info("-- " + artist_id + "," + muse_name);
int check = museDao.outMember(artist_id, muse_name);
try{
PrintWriter out = response.getWriter();
out.print(check);
}catch(Exception e){
e.printStackTrace();
}
}
/**
* @name: goin
* @date :2015. 6. 26.
* @author: 김정승
* @description : 가입된 muse로 이동하기 위해 MuseDao class를 호출하는 method
*/
public void goin(ModelAndView mav){
Map<String, Object> map = mav.getModelMap();
HttpServletRequest request = (HttpServletRequest)map.get("request");
String muse_name = request.getParameter("muse_name");
HashMap<String, Object> hmap = new HashMap<String, Object>();
hmap.put("startpage", 0);
hmap.put("endpage", 4);
hmap.put("muse_name", muse_name);
hmap.put("startRow", 0);
hmap.put("endRow", 4);
List<MuseGuestDto> list = guestDao.getList(hmap);
List<MuseBoardDto> boardlist = boardDao.getBoardList(hmap);
//logger.info("-- list : " + list.size());
mav.addObject("muse_name", muse_name);
mav.addObject("list", list);
mav.addObject("boardList",boardlist);
mav.setViewName("museCreate/goin");
}
public void deleteMuse(ModelAndView mav){
Map<String, Object> map = mav.getModelMap();
HttpServletRequest request = (HttpServletRequest)map.get("request");
HttpServletResponse response = (HttpServletResponse)map.get("response");
String muse_name = request.getParameter("muse_name");
String artist_id = request.getParameter("artist_id");
PrintWriter out = null;
response.setCharacterEncoding("utf-8");
try {
out = response.getWriter();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int check = museDao.deleteMuse(muse_name);
if(check > 0){
int checkG = guestDao.deleteMuse(muse_name);
if(checkG > 0){
out.print("<script> "
+ "alert('뮤즈가 삭제되었습니다.');"
+ "indimuse('"+artist_id+"')"
+ " </script> ");
}
}else{
out.print("<script> "
+ "alert('뮤즈가 개설될수 없습니다.');"
+ "indimuse('"+artist_id+"')"
+ " </script> ");
}
}
}