package com.nokia.alarm.service;

import java.util.List;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.nokia.alarm.entity.ResultMap;
import com.nokia.alarm.mapper.ResultMapDao;

import lombok.extern.slf4j.Slf4j;

@Slf4j
@Service
public class ResultMapService {

    private final ResultMapDao resultMapDao;

    public ResultMapService(ResultMapDao resultMapDao) {
        this.resultMapDao = resultMapDao;
    }

    public boolean isExist(ResultMap resultMap) {
        int count = resultMapDao.findByUniqueId(resultMap);
        return count != 0;
    }

    @Transactional
    public void updateOrInsertData(List<ResultMap> results) {
        if (results != null) {
            for (ResultMap result : results) {
                if (isExist(result)) {
                    log.info("2222============================================================================");
                    resultMapDao.updateData(result);
                } else {
                    log.info("1111============================================================================");
                    resultMapDao.insertData(result);
                }
                try {
                    log.info("1111============================================================================");
                    resultMapDao.insertData(result);
                } catch (Exception e) {
                    log.info("2222============================================================================");
                    if (e.getMessage().indexOf("duplicate key value violates unique constraint") != -1) {
                        resultMapDao.updateData(result);
                    }
                }
            }
        }
    }

    @Transactional
    public void insertdata(List<ResultMap> results) {
        for (ResultMap result : results) {
            resultMapDao.insertData(result);
        }
    }
}
