package cn.edu.whu.boot.collection.service;

import cn.edu.whu.boot.allocation.exceptions.InvalidShapefileException;
import cn.edu.whu.boot.common.domain.ResultMessage;
import cn.edu.whu.boot.xml.domain.Task;
import org.locationtech.jts.io.ParseException;
import org.apache.poi.ss.usermodel.Sheet;
import org.geotools.data.simple.SimpleFeatureIterator;


import java.io.IOException;

public interface ImportService {

    /**
     * 将表中数据迁入到另一个表中，放在一个方法中保持 ACID 特性
     * @param selectType 0 表示不抽查，1 表示抽查，selectDataNum 是抽查数目，2 表示抽查，selectDataNum 是个抽查比例
     */
    ResultMessage taskTableDataInsert (Task srcTask, Task destTask, String srcTableName, String destTableName,
                                       int selectType, int selectDataNum, String whereClause, String fieldMapping) throws IOException;

    /**
     * 将.xlsx或.xls的数据，即Sheet迁入到另一个表中，放在一个方法中保持ACID特性
     */
    void fileDataInsert (Task destTask, String destTableName, Sheet sheet, String fieldMapping) throws IOException;

    /**
     * 将shp数据迁入到另一个表中，放在一个方法中保持ACID特性
     */
    void shpDataInsert (Task destTask, String destTableName, SimpleFeatureIterator itertor, String fieldMapping,
                        String mediaFilePath) throws IOException, ParseException, InvalidShapefileException;
}
