package com.platform.service.impl; import java.sql.Connection; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.base.Custom4exception; import com.base.CustomException; import com.platform.dao.DataInfoDao; import com.platform.entities.DataInfoEntity; import com.platform.entities.GatherOracleInfo; import com.platform.entities.OracleConnectorParams; import com.platform.kubernetes.SimpleKubeClient; import com.platform.oracle.OracleConnector; import com.platform.service.IOracleExtractService; import com.platform.service.OracleExtractHelper; import com.platform.utils.Constant; @Service(value = "OracleExtract") public class OracleExtractServiceImpl implements IOracleExtractService { @Resource(name = "dataInfoDao") private DataInfoDao dataInfoDao; /** * kubernetes client */ private SimpleKubeClient client = new SimpleKubeClient(); /** * 抽取 */ private OracleExtractHelper oracleExtract = new OracleExtractHelper(); /** * 数据库连接实现类 */ private OracleConnector connect = new OracleConnector(); @Override public boolean extractOracle(String name, List dataInfolist, GatherOracleInfo oracleConnect) throws Exception { boolean isSuccess = false; try { // map转 bean(汇总库信息-带tableName的) GatherOracleInfo oracleModel = oracleConnect; // 采集库连接参数 List datainfos = dataInfolist; Connection conn = OracleConnector.ConnectionBuilder( "jdbc:oracle:thin:@" + oracleModel.getIp() + ":" + oracleModel.getPort() + ":" + oracleModel.getDatabaseName(), oracleModel.getUser(), oracleModel.getPassword()); for (OracleConnectorParams collectOracle : datainfos) { String[] str = collectOracle.getName().split("-"); if (str.length == 3) { DataInfoEntity data = new DataInfoEntity(); data.setRegionalismCode(str[0]); data.setSystemCode(Integer.valueOf(str[1])); data.setDataVersion(Integer.valueOf(str[2])); data.setExtractStatus(1); dataInfoDao.updateExtract(data); collectOracle.setName("J" + collectOracle.getName().replace("-", "_")); // client.updateOrAddReplicasLabelById(collectOracle.getName(), // "isExtract", "1"); //更新oracle汇总状态,0标示为未汇总,1标示汇总中,2标示汇总完成 String cmd = "kubectl label --overwrite rc " + collectOracle.getName() + " isExtract=1"; Constant.ganymedSSH.execCmdWaitAcquiescent(cmd); oracleExtract.createDBLink(conn, collectOracle); // 创建dblink oracleExtract.createTableSpace(conn, oracleModel); // 创建表空间 oracleExtract.createUser(conn, collectOracle, oracleModel);// 创建用户并授权 oracleExtract.extractColleDB(conn, collectOracle);// 执行抽取 // client.updateOrAddReplicasLabelById(collectOracle.getName(), // "isExtract", "1"); //更新oracle汇总状态,0标示为未汇总,1标示汇总中,2标示汇总完成 cmd = "kubectl label --overwrite rc " + collectOracle.getName() + " isExtract=1"; Constant.ganymedSSH.execCmdWaitAcquiescent(cmd); data.setExtractStatus(2); dataInfoDao.updateExtract(data); } } isSuccess = true; } catch (Exception e) { new CustomException(Custom4exception.OracleSQL_Except, e); } return isSuccess; } // @Override // public boolean extractOracle(String name, List // dataInfos, GatherOracleInfo oracleConnect) throws Exception { // boolean isSuccess = false; // try{ // //map转 bean(汇总库信息-带tableName的) // // GatherOracleInfo oracleModel = (GatherOracleInfo) // Bean2MapUtils.convertMap(GatherOracleInfo.class, oracleConnect); // // //采集库连接参数 // // List datainfos = new // ArrayList(); // // for (Map map : dataInfoMap) { // // OracleConnectorParams dataInfoEntity = (OracleConnectorParams) // Bean2MapUtils.convertMap(OracleConnectorParams.class, oracleConnect); // // datainfos.add(dataInfoEntity); // // } // // Connection conn = OracleConnector.ConnectionBuilder("jdbc:oracle:thin:@" // + oracleConnect.getIp() + ":" + oracleConnect.getPort() + "/" // + oracleConnect.getDatabaseName(), oracleConnect.getUser(), // oracleConnect.getPassword()); // // for (OracleConnectorParams collectOracle : dataInfos) { // // oracleExtract.createDBLink(conn, collectOracle); // oracleExtract.createTableSpace(conn, oracleConnect); // oracleExtract.createUser(conn, oracleConnect); // oracleExtract.extractColleDB(conn, collectOracle); // } // isSuccess = true; // }catch(Exception e){ // // } // return false; // } }