|
|
@ -7,12 +7,11 @@ import java.util.function.Predicate;
|
|
|
|
|
|
|
|
|
|
|
|
import org.springframework.web.servlet.ModelAndView;
|
|
|
|
import org.springframework.web.servlet.ModelAndView;
|
|
|
|
|
|
|
|
|
|
|
|
import cokr.xit.base.file.web.DownloadView;
|
|
|
|
|
|
|
|
import cokr.xit.base.file.web.XLSView;
|
|
|
|
|
|
|
|
import cokr.xit.base.syslog.ServiceLog;
|
|
|
|
import cokr.xit.base.syslog.ServiceLog;
|
|
|
|
import cokr.xit.foundation.AbstractComponent;
|
|
|
|
import cokr.xit.foundation.AbstractComponent;
|
|
|
|
import cokr.xit.foundation.UserInfo;
|
|
|
|
import cokr.xit.foundation.UserInfo;
|
|
|
|
import cokr.xit.foundation.data.DataObject;
|
|
|
|
import cokr.xit.foundation.data.DataObject;
|
|
|
|
|
|
|
|
import cokr.xit.foundation.web.DownloadView;
|
|
|
|
|
|
|
|
|
|
|
|
/**서비스 로그 필터.
|
|
|
|
/**서비스 로그 필터.
|
|
|
|
* 서비스 로그의 저장여부를 반환하고, 필요할 경우 서비스 로그를 수정한다.
|
|
|
|
* 서비스 로그의 저장여부를 반환하고, 필요할 경우 서비스 로그를 수정한다.
|
|
|
@ -107,7 +106,7 @@ public class LogFilter extends AbstractComponent {
|
|
|
|
* <li>파일에 포함된 개인정보 필드이름</li>
|
|
|
|
* <li>파일에 포함된 개인정보 필드이름</li>
|
|
|
|
* </ul>
|
|
|
|
* </ul>
|
|
|
|
* 등이 포함된다. 위 내용을 추출하기위해 ModelAndView에
|
|
|
|
* 등이 포함된다. 위 내용을 추출하기위해 ModelAndView에
|
|
|
|
* <ul><li>viewName은 'downloadView' 또는 'xlsView'</li>
|
|
|
|
* <ul><li>viewName은 'downloadView'</li>
|
|
|
|
* <li>파일이 사용한 데이터는 'downloadData'</li>
|
|
|
|
* <li>파일이 사용한 데이터는 'downloadData'</li>
|
|
|
|
* <li>파일에 포함된 모든 필드이름은 'dataNames'</li>
|
|
|
|
* <li>파일에 포함된 모든 필드이름은 'dataNames'</li>
|
|
|
|
* </ul>
|
|
|
|
* </ul>
|
|
|
@ -121,17 +120,21 @@ public class LogFilter extends AbstractComponent {
|
|
|
|
protected boolean downloadFilter(ServiceLog log) {
|
|
|
|
protected boolean downloadFilter(ServiceLog log) {
|
|
|
|
Object returned = log.getReturned();
|
|
|
|
Object returned = log.getReturned();
|
|
|
|
if (returned instanceof ModelAndView) {
|
|
|
|
if (returned instanceof ModelAndView) {
|
|
|
|
Map<String, Object> model = ((ModelAndView)returned).getModel();
|
|
|
|
ModelAndView mav = (ModelAndView)returned;
|
|
|
|
|
|
|
|
if (!"downloadView".equals(mav.getViewName())) return false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Map<String, Object> model = mav.getModel();
|
|
|
|
|
|
|
|
String filename = DownloadView.getFilename(model);
|
|
|
|
|
|
|
|
if (isEmpty(filename)) return false;
|
|
|
|
|
|
|
|
|
|
|
|
String filename = ifEmpty(DownloadView.getFilename(model), () -> XLSView.getFilename(model));
|
|
|
|
|
|
|
|
if (!isEmpty(filename)) {
|
|
|
|
|
|
|
|
log.setType(ServiceLog.DOWNLOAD);
|
|
|
|
log.setType(ServiceLog.DOWNLOAD);
|
|
|
|
log.setFileName(filename);
|
|
|
|
log.setFileName(filename);
|
|
|
|
setDownloadData(log, model);
|
|
|
|
setDownloadData(log, model);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**ModelAndView의 'downloadData'로 설정한 데이터에서
|
|
|
|
/**ModelAndView의 'downloadData'로 설정한 데이터에서
|
|
|
|
* 데이터 갯수, 포함된 모든 필드이름, 개인정보 필드이름들을 추출한다.
|
|
|
|
* 데이터 갯수, 포함된 모든 필드이름, 개인정보 필드이름들을 추출한다.
|
|
|
|