AflnetPersistenceServiceImpl.java 2.34 KB
package com.example.fuzzControll.service.impl;

import com.example.fuzzControll.conf.AflnetProperties;
import com.example.fuzzControll.constents.TableClassEnum;
import com.example.fuzzControll.exception.MysqlException;
import com.example.fuzzControll.mapper.AflnetMapper;
import com.example.fuzzControll.mapper.MissionInfoMapper;
import com.example.fuzzControll.pojo.vo.AflnetResult;
import com.example.fuzzControll.pojo.vo.KittyResult;
import com.example.fuzzControll.pojo.vo.MissionInfo;
import com.example.fuzzControll.service.AflnetPersistenceService;
import com.example.fuzzControll.tools.FileTools;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Date;

@Slf4j
@Service("AflnetPersistenceService")
public class AflnetPersistenceServiceImpl implements AflnetPersistenceService {
    @Autowired
    AflnetMapper aflnetMapper;
    @Autowired
    AflnetProperties aflnetProperties;
    @Autowired
    MissionInfoMapper missionInfoMapper;
    FileTools fileTools = new FileTools();

    @Override
    public int aflnetResultBackup(String filename, String missionName) {
        return mysqlTransaction(filename, missionName);
    }

    @Override
    public void loadInFile(int missionId, String filePath) {
        AflnetResult aflnetResult = null;
        try {
            aflnetResult = aflnetMapper.selectResultById(missionId);
        } catch (MysqlException e) {
            e.printStackTrace();
            throw new MysqlException("AflnetMapper.selectResultById() Error!");
        }
        fileTools.loadFileInLocal(filePath, aflnetResult.getFileName(), aflnetResult.getFile());
    }

    @Transactional(rollbackFor = MysqlException.class)
    public int mysqlTransaction(String filename,String missionName) {
        int topMissionId = missionInfoMapper.selectTopMissionId() + 1;//获取最新的missionId
        AflnetResult result = new AflnetResult(topMissionId, fileTools.fileReadAndTranstoBytes(aflnetProperties.getOutputPath(), filename), filename);
        aflnetMapper.aflnetOutputBackup(result);//存入日志文件
        missionInfoMapper.insertMission(new MissionInfo(topMissionId, TableClassEnum.AFLNET.getTableId(), new Date(), missionName));//插入任务信息
        return 1;
    }
}