package net.changwoo.x1wins.service; import java.io.IOException; import java.sql.Blob; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import net.changwoo.x1wins.dao.BbsDao; import net.changwoo.x1wins.dao.FileDao; import net.changwoo.x1wins.entity.Bbs; import net.changwoo.x1wins.entity.File; import net.changwoo.x1wins.web.UserController; import org.hibernate.Hibernate; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; @Service public class FileService { private static final Logger logger = LoggerFactory .getLogger(FileService.class); private static final Exception Exception = null; @Autowired private FileDao fileDao; @Autowired private BbsDao bbsDao; @Transactional public File findFile(int snum, String classname, String filename) throws Exception { List list = fileDao.findFile(snum, classname, filename); if(list.size()<=0){ throw new Exception(); } File file = (File)list.get(0); return file; } @Transactional public File findFirstFile(int snum, String classname) throws Exception { File file = fileDao.findFirstFile(snum, classname); return file; } @Transactional public List findFileList(String classname, int bbsnum, int snum, HttpServletRequest request)throws Exception { List resultList = new ArrayList(); List paramList = new ArrayList<Map>(); Map classnameMap = new HashMap(); classnameMap.put("propertyName","classname"); classnameMap.put("value", classname); paramList.add(classnameMap); Map snumMap = new HashMap(); snumMap.put("propertyName","snum"); snumMap.put("value", snum); paramList.add(snumMap); List fileList = fileDao.findAllByProperty(paramList); logger.debug("file count "+fileList.size()); ////file/download/{classname}/{snum}/{filename}.{ext} for(int i=0; i<fileList.size(); i++){ File file = (File)fileList.get(i); String filename = file.getFilename(); String url = request.getContextPath()+"/file/download/"+classname+"/"+bbsnum+"/"+snum+"/"+filename; int num = file.getNum(); String filetype = file.getContentType(); int imageType = filetype.toLowerCase().indexOf("image"); logger.debug("imagetype "+imageType+ " filetype " +filetype); Map map = new HashMap(); if(imageType>=0){ filetype = "image"; }else{ filetype = "file"; } map.put("num", num); map.put("filetype", filetype); map.put("url", url); map.put("filename", filename); map.put("classname", classname); resultList.add(map); logger.debug("file url "+i + " : "+map.get("url")); logger.debug("filetype "+i + " : "+map.get("filetype")); logger.debug("filename "+i + " : "+map.get("filename")); } return resultList; } @Transactional public void delete(int num, String classname, HttpServletRequest request) throws Exception { validOwn(num, classname, request); File file = fileDao.findById(num); fileDao.delete(file); /* HttpSession session = request.getSession(false); logger.debug("login id "+session.getAttribute("userid")); if (session.getAttribute("userid") != null){ //login y logger.debug("login y "); File file = fileDao.findById(num); int snum = file.getSnum(); //bbs String userid = ""; if(classname.equals("bbs")){ Bbs bbs = bbsDao.findById(snum); userid = bbs.getUserid(); }else if(classname.equals("user")){ }else{ throw new Exception(); } String sessionUserid = session.getAttribute("userid").toString(); if(userid.equals(sessionUserid)){ fileDao.delete(file); }else{ throw new Exception(); } }else{ throw new Exception(); } */ } @Transactional public void saveFiles(MultipartFile mFiles[], int snum, String classname, HttpServletRequest request) throws Exception{ if(mFiles.length>0){ for(int i=0; i<mFiles.length; i++){ if(!mFiles[i].isEmpty()){ Blob blob = Hibernate.createBlob(mFiles[i].getInputStream()); File file = new File(); file.setSnum(snum); file.setClassname(classname); file.setFilename(mFiles[i].getOriginalFilename()); file.setContent(blob); // file.setContent(mFiles[i].getInputStream()); file.setContentType(mFiles[i].getContentType()); fileDao.save(file); } } } } public void validOwn(int num, String classname, HttpServletRequest request) throws Exception { // boolean result = false; HttpSession session = request.getSession(false); // if (request.getSession(false) != null){ logger.debug("login id "+session.getAttribute("userid")); if (session.getAttribute("userid") != null){ //login y logger.debug("login y "); File file = fileDao.findById(num); int snum = file.getSnum(); //bbs String userid = ""; if(classname.equals("bbs")){ Bbs bbs = bbsDao.findById(snum); userid = bbs.getUserid(); }else if(classname.equals("user")){ }else{ throw new Exception(); } String sessionUserid = session.getAttribute("userid").toString(); if(!userid.equals(sessionUserid)){ throw new Exception(); } }else{ throw new Exception(); } // return result; } }