package geoinfo.admins.board; import egovframework.com.cmm.service.EgovProperties; import egovframework.rte.psl.dataaccess.util.EgovMap; import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; import geoinfo.admins.board.service.RefrncRoomService; import geoinfo.com.GeoinfoCommon; import geoinfo.session.UserInfo; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.HashMap; import java.util.List; import java.util.Objects; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.io.FilenameUtils; import org.apache.log4j.Logger; import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.util.FileCopyUtils; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; @Controller public class RefrncRoomController { private static final Logger LOGGER = Logger.getLogger(RefrncRoomController.class.getName()); @Resource(name = "refrncRoomService") private RefrncRoomService masterService; private final String savePath = EgovProperties.getProperty("Geoinfo.FilePath"); @RequestMapping(value = "admins/board/01.do") public String board01( @RequestParam HashMap params, ModelMap model, HttpServletResponse response, HttpServletRequest request) throws Exception { if (!UserInfo.isValidSession(request, response, "admin")) { return ""; } /** pageing */ PaginationInfo paginationInfo = new PaginationInfo(); if (params.get("pageIndex") == null || "".equals(params.get("pageIndex"))) { paginationInfo.setCurrentPageNo(1); params.put("pageIndex", 1); } else { paginationInfo.setCurrentPageNo(Integer.valueOf((String) params.get("pageIndex"))); } paginationInfo.setRecordCountPerPage(10); paginationInfo.setPageSize(10); params.put("firstRecordIndex", paginationInfo.getFirstRecordIndex()); params.put("recordCountPerPage", paginationInfo.getRecordCountPerPage()); List result = masterService.selectInfoList(params); paginationInfo.setTotalRecordCount(Integer.valueOf(((EgovMap) result.get(0)).get("totalrows").toString())); model.addAttribute("params", params); model.addAttribute("result", result); model.addAttribute("paginationInfo", paginationInfo); return "admins/board/01"; } @RequestMapping(value = "admins/board/01_write.do") public String write01( @RequestParam HashMap params, ModelMap model, HttpServletResponse response, HttpServletRequest request) throws Exception { if (!UserInfo.isValidSession(request, response, "admin")) { return ""; } String pId = params.get("pId").toString(); model.addAttribute("pId", pId); return "admins/board/01_write"; } @RequestMapping(value = "admins/board/01_write-post", method = RequestMethod.POST, produces = { MediaType.APPLICATION_JSON_VALUE }) public ModelMap saveInfo(@RequestParam HashMap params, ModelMap model, HttpServletResponse response, HttpServletRequest request, MultipartHttpServletRequest multiRequest) throws Exception { HashMap jsonMap = new HashMap(); request.setCharacterEncoding("utf-8"); String subject = params.get("subject").toString(); String contents = params.get("contents").toString(); String cls = params.get("cls").toString(); String topnotice = params.get("topChk").toString(); params.put("subject", subject); params.put("contents", contents); params.put("cls", cls); params.put("topnotice", topnotice); MultipartFile fileName1 = multiRequest.getFile("fileName1"); MultipartFile fileName2 = multiRequest.getFile("fileName2"); MultipartFile fileName3 = multiRequest.getFile("fileName3"); try { if(fileName1.getOriginalFilename().equals("")) { params.put("fileName1", ""); } else { GregorianCalendar cal = new GregorianCalendar(); String L_dat = cal.get(Calendar.YEAR) + "_" + cal.get(Calendar.MONTH)+ "_" + cal.get(Calendar.DATE); String L_tmp = cal.get(Calendar.HOUR) + "_" + cal.get(Calendar.MINUTE)+ "_" + cal.get(Calendar.SECOND); String saveName1 = L_dat + "_" + L_tmp + fileName1.getOriginalFilename().substring(fileName1.getOriginalFilename().lastIndexOf(".")); params.put("saveName1", saveName1); params.put("fileName1", fileName1.getOriginalFilename()); File saveFile = new File(savePath, FilenameUtils.getName(saveName1)); fileName1.transferTo(saveFile); } if(fileName2.getOriginalFilename().equals("")) { params.put("fileName2", ""); } else { GregorianCalendar cal = new GregorianCalendar(); String L_dat = cal.get(Calendar.YEAR) + "_" + cal.get(Calendar.MONTH)+ "_" + cal.get(Calendar.DATE); String L_tmp = cal.get(Calendar.HOUR) + "_" + cal.get(Calendar.MINUTE)+ "_" + cal.get(Calendar.SECOND); String saveName2 = L_dat + "_" + L_tmp + fileName2.getOriginalFilename().substring(fileName2.getOriginalFilename().lastIndexOf(".")); params.put("saveName2", saveName2); params.put("fileName2", fileName2.getOriginalFilename()); File saveFile = new File(savePath, FilenameUtils.getName(saveName2)); fileName2.transferTo(saveFile); } if(fileName3.getOriginalFilename().equals("")) { params.put("fileName3", ""); } else { GregorianCalendar cal = new GregorianCalendar(); String L_dat = cal.get(Calendar.YEAR) + "_" + cal.get(Calendar.MONTH)+ "_" + cal.get(Calendar.DATE); String L_tmp = cal.get(Calendar.HOUR) + "_" + cal.get(Calendar.MINUTE)+ "_" + cal.get(Calendar.SECOND); String saveName3 = L_dat + "_" + L_tmp + fileName3.getOriginalFilename().substring(fileName3.getOriginalFilename().lastIndexOf(".")); params.put("saveName3", saveName3); params.put("fileName3", fileName3.getOriginalFilename()); File saveFile = new File(savePath, FilenameUtils.getName(saveName3)); fileName3.transferTo(saveFile); } masterService.saveInfo(params); jsonMap.put("success", true); } catch (IOException Ex) { jsonMap.put("success", false); } model.addAttribute("jsonView", jsonMap); // JSON으로 리턴하기 위해서는 모델키를 'jsonView'로 지정해야함 return model; } @RequestMapping(value = "admins/board/01_view.do") public String view01( @RequestParam HashMap params, ModelMap model, HttpServletResponse response, HttpServletRequest request) throws Exception { if (!UserInfo.isValidSession(request, response, "admin")) { return ""; } String aid; if(Objects.isNull(params.get("aid"))) { aid = params.get("idx").toString(); } else { aid = params.get("aid").toString(); } EgovMap result = masterService.selectDetailInfo(params); model.addAttribute("aid", aid); model.addAttribute("result", result); model.addAttribute("br", "\r"); return "admins/board/01_view"; } @RequestMapping(value = "admins/board/01_delete", method = RequestMethod.POST, produces = { MediaType.APPLICATION_JSON_VALUE }) public ModelMap delete01(@RequestParam HashMap params, ModelMap model, HttpServletResponse response, HttpServletRequest request) throws Exception { HashMap jsonMap = new HashMap(); try { masterService.deleteInfo(params); String fileName1 = GeoinfoCommon.parseData(params.get("fileName1").toString()); String fileName2 = GeoinfoCommon.parseData(params.get("fileName2").toString()); String fileName3 = GeoinfoCommon.parseData(params.get("fileName3").toString()); params.put("fileName1", fileName1); params.put("fileName2", fileName2); params.put("fileName3", fileName3); File deleteFile1 = new File(savePath + "/" + FilenameUtils.getName(fileName1)); if(deleteFile1.exists()) { deleteFile1.delete(); } File deleteFile2 = new File(savePath + "/" + FilenameUtils.getName(fileName2)); if(deleteFile2.exists()) { deleteFile2.delete(); } File deleteFile3 = new File(savePath + "/" + FilenameUtils.getName(fileName3)); if(deleteFile3.exists()) { deleteFile3.delete(); } jsonMap.put("success", true); } catch (IOException Ex) { jsonMap.put("success", false); } model.addAttribute("jsonView", jsonMap); // JSON으로 리턴하기 위해서는 모델키를 'jsonView'로 지정해야함 return model; } @RequestMapping(value = "admins/board/01-modify.do") public String modify01( @RequestParam HashMap params, ModelMap model, HttpServletResponse response, HttpServletRequest request) throws Exception { if (!UserInfo.isValidSession(request, response, "admin")) { return ""; } String aid = params.get("aid").toString(); EgovMap result = masterService.selectModifyInfo(params); model.addAttribute("aid", aid); model.addAttribute("result", result); return "admins/board/01-modify"; } @RequestMapping(value = "admins/board/fileDownload.do") public void fileDownload(@RequestParam HashMap params, ModelMap model, HttpServletResponse response, HttpServletRequest request) throws Exception { String savename = params.get("savename").toString(); File file = new File(savePath + "\\" + FilenameUtils.getName(savename)); response.setContentType("multipart/form-data"); response.setContentLength((int)file.length()); response.setHeader("Content-Disposition", GeoinfoCommon.safeHttpHeader("attachment; filename=\"" + savename + "\"")); response.setHeader("Content-Transfer-Encoding", "binary"); OutputStream out = response.getOutputStream(); FileInputStream fis = null; try { fis = new FileInputStream(file); FileCopyUtils.copy(fis, out); } catch(IOException e){ LOGGER.error(e); }finally{ if(fis != null){ try{ fis.close(); }catch(IOException e){ LOGGER.error(e); } } } out.flush(); } @RequestMapping(value = "admins/board/01-modify-post", method = RequestMethod.POST, produces = { MediaType.APPLICATION_JSON_VALUE }) public ModelMap updateInfo(@RequestParam HashMap params, ModelMap model, HttpServletResponse response, HttpServletRequest request, MultipartHttpServletRequest multiRequest) throws Exception { HashMap jsonMap = new HashMap(); request.setCharacterEncoding("utf-8"); String subject = params.get("subject").toString(); String contents = params.get("contents").toString(); String topnotice = params.get("top").toString(); params.put("subject", subject); params.put("contents", contents); params.put("topnotice", topnotice); String delFile1 = params.get("delFile1").toString(); String delFile2 = params.get("delFile2").toString(); String delFile3 = params.get("delFile3").toString(); String preFile1 = params.get("preFile1").toString(); String preFile2 = params.get("preFile2").toString(); String preFile3 = params.get("preFile3").toString(); String preSaveNm1 = params.get("preSaveNm1").toString(); String preSaveNm2 = params.get("preSaveNm2").toString(); String preSaveNm3 = params.get("preSaveNm3").toString(); MultipartFile fileName1 = multiRequest.getFile("fileName1"); MultipartFile fileName2 = multiRequest.getFile("fileName2"); MultipartFile fileName3 = multiRequest.getFile("fileName3"); try { if(!"".equals(preFile1) && "0".equals(delFile1)) { params.put("saveName1", preSaveNm1); params.put("fileName1", preFile1); } else { if(fileName1.getOriginalFilename().equals("")) { params.put("fileName1", ""); } else { GregorianCalendar cal = new GregorianCalendar(); String L_dat = cal.get(Calendar.YEAR) + "_" + cal.get(Calendar.MONTH)+ "_" + cal.get(Calendar.DATE); String L_tmp = cal.get(Calendar.HOUR) + "_" + cal.get(Calendar.MINUTE)+ "_" + cal.get(Calendar.SECOND); String saveName1 = L_dat + "_" + L_tmp + fileName1.getOriginalFilename().substring(fileName1.getOriginalFilename().lastIndexOf(".")); params.put("saveName1", saveName1); params.put("fileName1", fileName1.getOriginalFilename()); File saveFile = new File(savePath, FilenameUtils.getName(saveName1)); fileName1.transferTo(saveFile); } } if(!"".equals(preFile2) && "0".equals(delFile2)) { params.put("saveName2", preSaveNm2); params.put("fileName2", preFile2); } else { if(fileName2.getOriginalFilename().equals("")) { params.put("fileName2", ""); } else { GregorianCalendar cal = new GregorianCalendar(); String L_dat = cal.get(Calendar.YEAR) + "_" + cal.get(Calendar.MONTH)+ "_" + cal.get(Calendar.DATE); String L_tmp = cal.get(Calendar.HOUR) + "_" + cal.get(Calendar.MINUTE)+ "_" + cal.get(Calendar.SECOND); String saveName2 = L_dat + "_" + L_tmp + fileName2.getOriginalFilename().substring(fileName2.getOriginalFilename().lastIndexOf(".")); params.put("saveName2", saveName2); params.put("fileName2", fileName2.getOriginalFilename()); File saveFile = new File(savePath, FilenameUtils.getName(saveName2)); fileName2.transferTo(saveFile); } } if(!"".equals(preFile3) && "0".equals(delFile3)) { params.put("saveName3", preSaveNm3); params.put("fileName3", preFile3); } else { if(fileName3.getOriginalFilename().equals("")) { params.put("fileName3", ""); } else { GregorianCalendar cal = new GregorianCalendar(); String L_dat = cal.get(Calendar.YEAR) + "_" + cal.get(Calendar.MONTH)+ "_" + cal.get(Calendar.DATE); String L_tmp = cal.get(Calendar.HOUR) + "_" + cal.get(Calendar.MINUTE)+ "_" + cal.get(Calendar.SECOND); String saveName3 = L_dat + "_" + L_tmp + fileName3.getOriginalFilename().substring(fileName3.getOriginalFilename().lastIndexOf(".")); params.put("saveName3", saveName3); params.put("fileName3", fileName3.getOriginalFilename()); File saveFile = new File(savePath, FilenameUtils.getName(saveName3)); fileName3.transferTo(saveFile); } } masterService.updateInfo(params); jsonMap.put("success", true); } catch (IOException Ex) { jsonMap.put("success", false); } model.addAttribute("jsonView", jsonMap); // JSON으로 리턴하기 위해서는 모델키를 'jsonView'로 지정해야함 return model; } }