-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBackQnaServiceImpl.java
More file actions
160 lines (141 loc) · 5.57 KB
/
Copy pathBackQnaServiceImpl.java
File metadata and controls
160 lines (141 loc) · 5.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
package kr.sga.gkmarket.qna.service;
import java.io.File;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import org.apache.ibatis.session.SqlSessionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import kr.sga.gkmarket.qna.dao.BackQnaDAO;
import kr.sga.gkmarket.qna.dao.BackQnaFileDAO;
import kr.sga.gkmarket.qna.vo.BackQnaFileVO;
import kr.sga.gkmarket.qna.vo.BackQnaVO;
import kr.sga.gkmarket.qna.vo.QnaPagingVO;
import kr.sga.gkmarket.qna.vo.QnaUserNameVO;
import kr.sga.gkmarket.vo.CommVO;
import kr.sga.gkmarket.vo.PagingVO;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Service("backQnaService")
public class BackQnaServiceImpl implements BackQnaService {
@Autowired
public BackQnaDAO backQnaDAO;
@Autowired
public BackQnaFileDAO backQnaFileDAO;
@Override
public void insert(BackQnaVO backQnaVO) {
if (backQnaVO != null) {
backQnaDAO.insert(backQnaVO);
}
}
@Override
public void update(BackQnaVO backQnaVO, String delFiles, String realPath) {
log.info("{}의 update 호출 : {}", this.getClass().getName(), backQnaVO + "\n" + delFiles + "\n" + realPath);
// 1. 글수정
System.out.println("backQnaVO : "+ backQnaVO + "\n");
backQnaDAO.update(backQnaVO);
// 2. 새롭게 첨부된 첨부 파일의 정보도 저장해 주어야 한다.
BackQnaFileVO file = backQnaVO.getFile();
file.setBack_Qna_Idx(backQnaVO.getBack_Qna_Idx()); // 원본글번호
backQnaFileDAO.insert(file);
// 3, 이미 첨부되었던 파일 삭제
log.info("{}의 update delFiles : {}", this.getClass().getName(), delFiles);
if(delFiles!=null) {
int idx = Integer.parseInt(delFiles);
if(idx>0) {
// 실제 파일을 삭제하려면
// 1. 해당 글번호의 글을 읽어와서
BackQnaFileVO backQnaFileVO = backQnaFileDAO.selectFiles(idx);
if(backQnaFileVO!=null) {
// 2. 실제 서버의 파일을 삭제해 주어야 한다.
File onefile = new File(realPath + File.separator + backQnaFileVO.getBack_Qnafile_SaveName());
onefile.delete(); // 실제 파일삭제
backQnaFileDAO.deleteByIdx(idx); // DB에서만 삭제된다.
}
}
}
}
@Override
public void delete(BackQnaVO backQnaVO, String realPath) {
BackQnaVO qnaVO = backQnaDAO.selectByIdx(backQnaVO.getBack_Qna_Idx());
System.out.println(qnaVO);
log.info("{}의 delete 호출 : {}", this.getClass().getName(), backQnaVO + "\n" + realPath);
BackQnaFileVO file = backQnaFileDAO.selectFiles(qnaVO.getBack_Qna_Idx());
log.info("{}의backQnaVO.getBack_Qna_Idx() : {}", qnaVO.getBack_Qna_Idx());
//db파일 삭제
backQnaFileDAO.deleteByIdx(file.getBack_Qna_Idx());
log.info("{}의file.getBack_Qna_Idx() : {}",file.getBack_Qna_Idx());
//실제 파일 삭제
File realFile = new File(realPath + File.separator + file.getBack_Qnafile_SaveName());
realFile.delete();
if (qnaVO != null) {
System.out.println("qnaVO.getBack_Qna_Idx() : " + qnaVO.getBack_Qna_Idx() );
backQnaDAO.delete(qnaVO.getBack_Qna_Idx());
System.out.println("qnaVO.getBack_Qna_Idx()" + qnaVO.getBack_Qna_Idx());
}
}
@Override
public BackQnaVO selectByIdx(int idx) {
log.info("{}의 selectByIdx 호출 : {}", this.getClass().getName(), idx);
BackQnaVO backQnaVO = backQnaDAO.selectByIdx(idx); // 글 1개를 가져온다.
// 그 글에 해당하는 첨부파일의 정보를 가져온다.
if (backQnaVO != null) {
BackQnaFileVO list = backQnaFileDAO.selectFiles(idx);
backQnaVO.setFile(list);
}
log.info("{}의 selectByIdx 리턴 : {}", this.getClass().getName(), backQnaVO);
return backQnaVO;
}
@Override
public QnaPagingVO<BackQnaVO> selectList(CommVO commVO) {
log.info("{}의 selectList 호출 : {}", this.getClass().getName(), commVO);
System.out.println(backQnaDAO.selectCount());
QnaPagingVO<BackQnaVO> pagingVO = null;
try {
// 전체 개수구하기
int totalCount = backQnaDAO.selectCount();
// 페이지 계산
pagingVO = new QnaPagingVO<>(commVO.getCurrentPage(), commVO.getPageSize(), commVO.getBlockSize(), totalCount);
// 글 읽어오기
HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put("startNo", pagingVO.getStartNo());
map.put("pageSize", pagingVO.getPageSize());
List<BackQnaVO> list = backQnaDAO.selectList(map);
// 해당글들의 첨부파일 정보를 넣어준다.
if (list != null && list.size() > 0) {
for (BackQnaVO vo : list) {
// 해당글의 첨부파일 목록을 가져온다.
BackQnaFileVO fileList = backQnaFileDAO.selectFiles(commVO.getIdx());
// vo에 넣는다.
vo.setFile(fileList);
}
}
// 완성된 리스트를 페이징 객체에 넣는다.
pagingVO.setList(list);
pagingVO.setNamelist(backQnaDAO.selectUserName());
} catch (Exception e) {
e.printStackTrace();
}
return pagingVO;
}
@Override
public BackQnaFileVO selectFiles(int idx) {
@SuppressWarnings("unused")
BackQnaFileVO backQnaFileVO = backQnaFileDAO.selectFiles(idx);
return null;
}
@Override
public List<QnaUserNameVO> selectUserName() {
log.info("{}의 selectByIdx 호출", this.getClass().getName());
List<QnaUserNameVO> userNameList = null;
userNameList = backQnaDAO.selectUserName();
log.info("{}의 selectByIdx 리턴 : {}", this.getClass().getName(), userNameList);
return userNameList;
}
@Override
public int selectSeq() {
int seq = 0;
seq = backQnaDAO.selectSeq();
return seq;
}
}