Pārlūkot izejas kodu

解析日志data属性

Miaomz 4 gadi atpakaļ
vecāks
revīzija
d631acdfdb

+ 23 - 4
src/main/java/com/seecoder/dataanalysis/logic/parser/impl/LogParsingServiceImpl.java

@@ -1,11 +1,15 @@
 package com.seecoder.dataanalysis.logic.parser.impl;
 
 import com.alibaba.fastjson.JSONException;
+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.util.JsonUtil;
 import com.seecoder.dataanalysis.vo.SimpleLog;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.PostConstruct;
+import java.util.HashMap;
 import java.util.Map;
 
 /**
@@ -31,17 +35,32 @@ public class LogParsingServiceImpl implements LogParsingService {
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public <T> T parseLogData(SimpleLog simpleLog, boolean save) {
-        return null;
+        try {
+            String className = parseOpType(simpleLog.getOpType());
+            Class clazz = Class.forName(className);
+            Object data = JsonUtil.toObject(simpleLog.getData(), clazz);
+
+            //TODO save into the database
+            return (T) data;
+        } catch (ClassNotFoundException e){
+            e.printStackTrace();
+            return null;
+        }
     }
 
     @Override
     public String parseOpType(int opType) {
-        return null;
+        return opTypesTable.get(opType);
     }
 
 
-    private void buildOpTypesTable(){
-
+    @PostConstruct
+    protected void buildOpTypesTable(){
+        opTypesTable = new HashMap<>();
+        opTypesTable.put(0, EvalExamInfo.class.getName());  //试卷数据
+        opTypesTable.put(1, EvalExamInfo.class.getName());  //诗句更新数据
+        opTypesTable.put(2, EvalExamRecord.class.getName());  //学生提交试卷
     }
 }