package org.fastcatsearch.processlogger;
import org.fastcatsearch.db.DBService;
import org.fastcatsearch.db.InternalDBModule.MapperSession;
import org.fastcatsearch.db.mapper.IndexingHistoryMapper;
import org.fastcatsearch.db.mapper.IndexingResultMapper;
import org.fastcatsearch.processlogger.log.IndexingLoggable;
import org.fastcatsearch.processlogger.log.ProcessLog;
import org.fastcatsearch.service.ServiceManager;
public class IndexingProcessLogger implements ProcessLogger {
@Override
public void log(ProcessLog processLog) {
//색인 결과 및 상태를 로깅한다.
if (processLog instanceof IndexingLoggable) {
DBService dbService = ServiceManager.getInstance().getService(DBService.class);
if (dbService != null) {
MapperSession<IndexingHistoryMapper> historyMapperSession = dbService.getMapperSession(IndexingHistoryMapper.class);
MapperSession<IndexingResultMapper> resultMapperSession = dbService.getMapperSession(IndexingResultMapper.class);
try {
IndexingHistoryMapper indexingHistoryMapper = historyMapperSession.getMapper();
IndexingResultMapper indexingResultMapper = resultMapperSession.getMapper();
IndexingLoggable indexingLoggable = (IndexingLoggable) processLog;
indexingLoggable.writeLog(indexingHistoryMapper, indexingResultMapper);
} finally {
if (historyMapperSession != null) {
historyMapperSession.closeSession();
}
if (resultMapperSession != null) {
resultMapperSession.closeSession();
}
}
}
}
}
}