package itn.let.utl.user.service;
import java.util.Iterator;
import java.util.List;
import javax.annotation.Resource;
import org.apache.commons.lang3.ArrayUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.web.servlet.ModelAndView;
import itn.com.cmm.EgovMessageSource;
import itn.com.cmm.service.FileVO;
import itn.let.cop.bbs.service.BoardMaster;
import itn.let.cop.bbs.service.BoardMasterVO;
import itn.let.cop.bbs.service.EgovBBSAttributeManageService;
/**
*
* 게시판 체크에 대한 Util 클래스
* @author 사업기술본부 조용준(ITN)
* @since 2021.07.16
* @version 1.0
* @see
*
*
* << 개정이력(Modification Information) >>
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2021.07.16 조용준 최초 생성 *
*
*
*/
@Service("checkBoardUtil")
public class CheckBoardUtil {
private static final Logger LOGGER = LoggerFactory.getLogger(CheckBoardUtil.class);
/** EgovMessageSource */
@Resource(name="egovMessageSource")
EgovMessageSource egovMessageSource;
/**
* //게시판 사용 여부 체크
*
* @param encrypt
*/
public BoardMasterVO checkBoardUse(
String p_boardBbsId
, ModelAndView p_modelAndView
, EgovBBSAttributeManageService bbsAttrbService
) throws Exception{
//LOGGER.debug("commonLoginUtil.checkBoardUse()");
return this.p_checkBoardUse(p_boardBbsId, p_modelAndView, bbsAttrbService);
}
/**
* //게시판 첨부 파일 제약 조건 체크
*
* @param encrypt
*/
/*
public boolean isPosblAtchFileMv(
List fileList
, BoardMaster boardMaster
, ModelAndView p_mv
, int atchFileCnt //기존에 파일이 있는 경우
, String p_exts //가능한 확장자를 받는다. |
) throws Exception {
//LOGGER.debug("commonLoginUtil.isPosblAtchFileMv()");
return this.p_isPosblAtchFileMv(fileList, boardMaster, p_mv, atchFileCnt, p_exts);
}
*/
/**
* //게시판 첨부 파일 제약 조건 체크
*
* @param encrypt
*/
/*
public boolean isPosblAtchFileMvNoBoard(
List fileList
, ModelAndView p_mv
, int atchFileCnt //기존에 파일이 있는 경우
, String p_exts //가능한 확장자를 받는다. |
, int p_i_file_size
, int p_i_file_count
) throws Exception {
//LOGGER.debug("commonLoginUtil.isPosblAtchFileMv()");
return this.p_isPosblAtchFileMvNoBoard(fileList, p_mv, atchFileCnt, p_exts, p_i_file_size, p_i_file_count);
}
*/
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//
// private function
//
//
/**
* //게시판 사용 여부 체크
*
* @param encrypt
*/
private BoardMasterVO p_checkBoardUse(
String p_boardBbsId
, ModelAndView p_modelAndView
, EgovBBSAttributeManageService bbsAttrbService
) throws Exception{
//게시판 관리 정보 획득 및 사용 여부 체크
BoardMasterVO bmVO = null;
try {
LOGGER.debug("commonLoginUtil.checkBoardUse()");
//게시판 관리 정보 획득 및 사용 여부 체크
bmVO = this.getBoardInfo(p_boardBbsId, bbsAttrbService);
//게시판 사용여부 체크
if (bmVO == null || ("N").equals(bmVO.getUseAt())) {
p_modelAndView.addObject("message", egovMessageSource.getMessage("fail.common.imposbl"));
p_modelAndView.addObject("result", "fail");
return null;
}
} catch(IllegalArgumentException e) {
LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage());
} catch (Exception e) {
LOGGER.error("[" + e.getClass() +"] :" + e.getMessage());
}
return bmVO;
}
/**
* //게시판 첨부 파일 제약 조건 체크
*
* @param encrypt
*/
private boolean p_isPosblAtchFileMv(
List fileList
, BoardMaster boardMaster
, ModelAndView p_mv
, int atchFileCnt //기존에 파일이 있는 경우
, String p_exts //가능한 확장자를 받는다. |
) throws Exception {
boolean posblAtchFileFlag = true;
try {
LOGGER.debug("commonLoginUtil.isPosblAtchFileMv()");
int fileCnt = 0;
long posblAtchFileSize = Long.parseLong(boardMaster.getPosblAtchFileSize()) * 1024 * 1024 ;
int posblAtchFileNumber = Integer.parseInt(boardMaster.getPosblAtchFileNumber());
//String bbsTyCode = boardMaster.getBbsTyCode();
String flashMessage = "";
boolean posblAtchFileSizeFlag = true;
boolean posblAtchFileExtFlag = true;
String[] imgExts = p_exts.split("\\|");
Iterator> iter = fileList.iterator();
while (iter.hasNext()) {
FileVO vo = (FileVO) iter.next();
long fileMg = Long.parseLong(vo.getFileMg());
String fileExt = vo.getFileExtsn();
if (fileMg > posblAtchFileSize) posblAtchFileSizeFlag = false;
//String[] imgExts = {"gif", "jpg", "bmp", "jpeg", "png"};
//String[] imgExts = {"xlsx", "xls", "zip", "hwp", "txt", "doc", "docx", "csv"};
if (ArrayUtils.indexOf(imgExts, fileExt.toLowerCase()) == -1) posblAtchFileExtFlag = false;
fileCnt++;
}
if (!posblAtchFileExtFlag) {
for (int i=0;i posblAtchFileNumber) {
flashMessage += "파일 개수가 초과되었습니다. 최대개수 " + posblAtchFileNumber + "개" + "\\n";
posblAtchFileFlag = false;
}
if (!posblAtchFileFlag) p_mv.addObject("message", flashMessage);
} catch(IllegalArgumentException e) {
LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage());
} catch (Exception e) {
LOGGER.error("[" + e.getClass() +"] :" + e.getMessage());
}
return posblAtchFileFlag;
}
/**
* //게시판 첨부 파일 제약 조건 체크
*
* @param encrypt
*/
private boolean p_isPosblAtchFileMvNoBoard(
List fileList
, ModelAndView p_mv
, int atchFileCnt //기존에 파일이 있는 경우
, String p_exts //가능한 확장자를 받는다. |
, int p_i_file_size
, int p_i_file_count
) throws Exception {
boolean posblAtchFileFlag = true;
try {
LOGGER.debug("commonLoginUtil.isPosblAtchFileMv()");
int fileCnt = 0;
long posblAtchFileSize = p_i_file_size * 1024 * 1024 ;
int posblAtchFileNumber = p_i_file_count;
//String bbsTyCode = boardMaster.getBbsTyCode();
String flashMessage = "";
boolean posblAtchFileSizeFlag = true;
boolean posblAtchFileExtFlag = true;
String[] imgExts = p_exts.split("\\|");
Iterator> iter = fileList.iterator();
while (iter.hasNext()) {
FileVO vo = (FileVO) iter.next();
long fileMg = Long.parseLong(vo.getFileMg());
String fileExt = vo.getFileExtsn();
if (fileMg > posblAtchFileSize) posblAtchFileSizeFlag = false;
//String[] imgExts = {"gif", "jpg", "bmp", "jpeg", "png"};
//String[] imgExts = {"xlsx", "xls", "zip", "hwp", "txt", "doc", "docx", "csv"};
if (ArrayUtils.indexOf(imgExts, fileExt.toLowerCase()) == -1) posblAtchFileExtFlag = false;
fileCnt++;
}
if (!posblAtchFileExtFlag) {
for (int i=0;i posblAtchFileNumber) {
flashMessage += "파일 개수가 초과되었습니다. 최대개수 " + posblAtchFileNumber + "개" + "\\n";
posblAtchFileFlag = false;
}
if (!posblAtchFileFlag) p_mv.addObject("message", flashMessage);
} catch(IllegalArgumentException e) {
LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage());
} catch (Exception e) {
LOGGER.error("[" + e.getClass() +"] :" + e.getMessage());
}
return posblAtchFileFlag;
}
//관리자 설정 게시판 정보 가져오기
private BoardMasterVO getBoardInfo(
String p_bbsId
, EgovBBSAttributeManageService bbsAttrbService
)throws Exception{
BoardMasterVO bmVO = null;
try {
LOGGER.debug("commonLoginUtil.getBoardInfo()");
//게시판 등록 정보 획득
bmVO = new BoardMasterVO();
bmVO.setBbsId(p_bbsId);
bmVO = bbsAttrbService.selectBBSMasterInf(bmVO);
} catch(IllegalArgumentException e) {
LOGGER.error("[IllegalArgumentException] Try/Catch...usingParameters Runing : "+ e.getMessage());
} catch (Exception e) {
LOGGER.error("[" + e.getClass() +"] :" + e.getMessage());
}
return bmVO;
}
}