|
|
@@ -1,11 +1,18 @@
|
|
|
package com.seecoder.dataanalysis.logic.parser.impl;
|
|
|
|
|
|
import com.alibaba.fastjson.JSONException;
|
|
|
+import com.seecoder.dataanalysis.data.dao.eval.EvalExamInfoDao;
|
|
|
+import com.seecoder.dataanalysis.data.dao.eval.EvalExamRecordDao;
|
|
|
+import com.seecoder.dataanalysis.data.entity.eval.EvalExamInfo;
|
|
|
+import com.seecoder.dataanalysis.data.entity.eval.EvalExamRecord;
|
|
|
import com.seecoder.dataanalysis.logic.parser.LogParsingService;
|
|
|
+import com.seecoder.dataanalysis.logic.parser.ParsingException;
|
|
|
+import com.seecoder.dataanalysis.logic.parser.convertor.LogConvertor;
|
|
|
import com.seecoder.dataanalysis.util.JsonUtil;
|
|
|
import com.seecoder.dataanalysis.vo.EvalExamInfoDTO;
|
|
|
import com.seecoder.dataanalysis.vo.EvalExamRecordDTO;
|
|
|
import com.seecoder.dataanalysis.vo.SimpleLog;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import javax.annotation.PostConstruct;
|
|
|
@@ -24,34 +31,65 @@ public class LogParsingServiceImpl implements LogParsingService {
|
|
|
*/
|
|
|
private Map<Integer, String> opTypesTable;
|
|
|
|
|
|
+ private EvalExamRecordDao evalExamRecordDao;
|
|
|
+
|
|
|
+ private EvalExamInfoDao evalExamInfoDao;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ public void setEvalExamRecordDao(EvalExamRecordDao evalExamRecordDao) {
|
|
|
+ this.evalExamRecordDao = evalExamRecordDao;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ public void setEvalExamInfoDao(EvalExamInfoDao evalExamInfoDao) {
|
|
|
+ this.evalExamInfoDao = evalExamInfoDao;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
@Override
|
|
|
- public SimpleLog parseLog(String log) {
|
|
|
+ public SimpleLog parseLog(String log) throws ParsingException{
|
|
|
try {
|
|
|
return JsonUtil.toObject(log, SimpleLog.class);
|
|
|
} catch (JSONException e) {
|
|
|
e.printStackTrace();
|
|
|
- return null;
|
|
|
+ throw new ParsingException(e.toString(), 0);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@SuppressWarnings("unchecked")
|
|
|
- public <T> T parseLogData(SimpleLog simpleLog, boolean save) {
|
|
|
+ public <T> T parseLogData(SimpleLog simpleLog, boolean save) throws ParsingException{
|
|
|
try {
|
|
|
String className = parseOpType(simpleLog.getOpType());
|
|
|
Class clazz = Class.forName(className);
|
|
|
Object data = JsonUtil.toObject(simpleLog.getData(), clazz);
|
|
|
|
|
|
- //TODO save into the database
|
|
|
+ if (!save) {
|
|
|
+ return (T) data;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (className.equals(EvalExamInfoDTO.class.getName())) {
|
|
|
+ EvalExamInfo info = LogConvertor.convertToEvalExamInfoEntity((EvalExamInfoDTO) data);
|
|
|
+ evalExamInfoDao.save(info);
|
|
|
+ } else if (className.equals(EvalExamRecordDTO.class.getName())) {
|
|
|
+ EvalExamRecord record = LogConvertor.convertToEvalExamRecordEntity((EvalExamRecordDTO) data);
|
|
|
+ evalExamRecordDao.save(record);
|
|
|
+ }
|
|
|
return (T) data;
|
|
|
- } catch (ClassNotFoundException e){
|
|
|
+ } catch (ClassNotFoundException|ClassCastException e){
|
|
|
e.printStackTrace();
|
|
|
return null;
|
|
|
+ } catch (JSONException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ throw new ParsingException(e.toString(), 1);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public String parseOpType(int opType) {
|
|
|
+ public String parseOpType(int opType) throws ParsingException {
|
|
|
+ if (!opTypesTable.containsKey(opType)) {
|
|
|
+ throw new ParsingException("不支持的操作类型:" + opType, 2);
|
|
|
+ }
|
|
|
return opTypesTable.get(opType);
|
|
|
}
|
|
|
|