package com.chenyang.nse.bussiness.service.core.encryption;

import com.chenyang.nse.bussiness.dao.PageInfo;
import com.chenyang.nse.bussiness.entity.orm.table.core.encryption.ColumnPrimaryKeyInfo;
import com.chenyang.nse.bussiness.entity.orm.table.core.encryption.TCoreJiaMiJieMiJinDu;
import com.chenyang.nse.bussiness.entity.vo.TreeVO;
import com.chenyang.nse.bussiness.entity.vo.encyption.EncryptionConfigVO;
import com.chenyang.nse.bussiness.entity.vo.excel.ExcelEncryptionVO;
import com.chenyang.nse.bussiness.entity.vo.maskingtask.ColumnInfoVO;
import java.lang.reflect.InvocationTargetException;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public interface EncryptionConfigService {
   EncryptionConfigVO decrypt(EncryptionConfigVO vo) throws Exception;

   void saveColumnType(List<String> parameter, List<String> dataEncryptionTypeTidList) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException;

   void saveKafka(List<String> parameter);

   List<ColumnInfoVO> queryOriginalList(EncryptionConfigVO vo);

   HashMap queryBatchOriginalList(EncryptionConfigVO vo);

   List<Map<String, String>> queryEncryptionList(EncryptionConfigVO vo);

   Map<String, Object> queryDatasystemInfo(String dataSystemId, String projectId);

   Map<String, Object> querytableInfo(String dataSystemId, String projectId, String schema, String tableName);

   void saveColumnPrimaryKey(ColumnPrimaryKeyInfo columnPrimaryKeyInfo);

   List<Map<String, Object>> getAllColumnsByMap(ExcelEncryptionVO params) throws SQLException;

   Map<String, List<String>> getKeyMap();

   List<TreeVO> getEncryptionTypeList();

   List<Map<String, Object>> getProjectChildren(String id);

   List<TCoreJiaMiJieMiJinDu> queryTCoreJiaMiDulist(PageInfo pageInfo, String projectId, String tableName, String state);

   void saveStatus(String encryptionId, String replaceFlag);

   boolean allEncrypted(String projectid);

   HashMap getProjectEncryptConfig(String projectid);

   HashMap getProjectEncryptConfigTxt(String projectid);
}
