FAICS/src/main/java/kcg/faics/board/service/impl/BoardFileServiceImpl.java

208 lines
5.6 KiB
Java
Raw Normal View History

2022-03-17 02:42:45 +00:00
package kcg.faics.board.service.impl;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import kcg.faics.board.util.BoardUtils;
import kcg.faics.board.util.BoardVOHandler;
import kcg.faics.board.vo.BoardFileVO;
import kcg.faics.cmmn.bbs.BaseFileService;
import kcg.faics.cmmn.egov.file.EgovFileMngUtil;
import kcg.faics.cmmn.egov.vo.FileVO;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
/**
* BoardFileServiceImpl.java
* @author
* @since 2016. 9. 28.
*
*
* ------------- -------- ---------------------------
* 2016. 9. 28.
*
*/
@Service("boardFileService")
public class BoardFileServiceImpl implements BaseFileService<BoardFileVO> {
/**
* BoardFileMapper - Mapper
**/
@Resource(name = "boardFileMapper")
private BoardFileMapper boardFileMapper;
/**
* EgovFileMngUtil - Util
**/
@Resource(name = "EgovFileMngUtil")
private EgovFileMngUtil fileUtil;
/**
* .
*
* @param bfBdSeq
* @return
* @throws Exception
*/
@Override
public List<BoardFileVO> selectList(final BoardFileVO boardFileVO) throws Exception {
return (List<BoardFileVO>) boardFileMapper.selectFiles(boardFileVO);
}
/**
* .
*
* @param bfSeq
* @return
* @throws Exception
*/
@Override
public BoardFileVO select(final BoardFileVO boardFileVO) throws Exception {
return boardFileMapper.selectFile(boardFileVO);
}
/**
* DB .
*
* @param bfBdSeq
* @param fileVO
* @return - 1, - 0
* @exception Exception
*/
@Override
public int insert(final BoardFileVO boardFileVO) throws Exception {
return boardFileMapper.insertFile(boardFileVO);
}
/**
* .
*
* @param bfBdSeq
* @param fileMap ,
* @return - 1, - 0
* @exception Exception
*/
@Override
@Transactional
public int insertAndSaveFiles(BoardFileVO boardFileVO, final Map<String, MultipartFile> fileMap) throws Exception {
int result = 1;
String storePathKey = "";
String boardId = "";
/* 파일쓰기 */
if (!fileMap.isEmpty()) {
if (boardFileVO != null) {
boardId = boardFileVO.getId();
boardId = StringUtils.lowerCase(boardId);
}
storePathKey = BoardUtils.getStorePathKey(boardId);
List<FileVO> uploadedFile = fileUtil.parseFileInf(fileMap, "_", 0, "", storePathKey);
/* DB에 업로드한 첨부파일 레코드를 추가한다. */
Iterator<FileVO> itr = uploadedFile.iterator();
while (itr.hasNext()) {
FileVO fileVO = itr.next();
boardFileVO.setOrgName(fileVO.getOrignlFileNm());
boardFileVO.setSaveName(fileVO.getStreFileNm());
boardFileVO.setOrders(Integer.parseInt(fileVO.getFileSn().replace("file", "")));
result = insert(boardFileVO);
if (result != 1) {
throw new Exception();
}
}
}
return result;
}
/**
* .
*
* @param boardFileVO
* @return - 1, - 0
* @throws Exception
*/
@Override
public int deleteAndRemoveFile(final BoardFileVO boardFileVO) throws Exception {
int result = boardFileMapper.deleteFile(boardFileVO);
String storePathKey = "";
if (result == 1) {
/* DB에서 파일 데이터 삭제 후 실제 파일 삭제 여부는 보장하지 않는다. */
try {
storePathKey = BoardUtils.getStorePathKey(boardFileVO.getId());
fileUtil.deleteFile(boardFileVO.getSaveName(), storePathKey);
} catch (Exception e) {
e.printStackTrace();
}
}
return result;
}
/**
* .
*
* @param bfBdSeq
* @param deleteFiles
* @return - 1, - 0
* @throws Exception
*/
@Override
@Transactional
public int delete(final BoardFileVO boardFileVO) throws Exception {
int result = 1;
if (boardFileVO.getDeleteFiles() != null) {
for (String fileSeq : boardFileVO.getDeleteFiles()) {
BoardFileVO deleteFile = BoardVOHandler.getBFileVO(boardFileVO);
deleteFile.setSeq(Integer.parseInt(fileSeq));
deleteFile = select(deleteFile);
result = deleteAndRemoveFile(deleteFile);
if (result != 1) {
throw new Exception();
}
}
}
return result;
}
/**
* .
*
* @param bfBdSeq
* @return - 1, - 0
* @throws Exception
*/
@Override
@Transactional
public int deleteAndRemoveFiles(final BoardFileVO boardFileVO) throws Exception {
int result = 1;
List<BoardFileVO> fileList = boardFileMapper.selectFiles(boardFileVO);
if (fileList != null) {
for (BoardFileVO file : fileList) {
result = deleteAndRemoveFile(file);
if (result != 1) {
throw new Exception();
}
}
}
return result;
}
}