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.Configs; import com.platform.utils.Constant; import com.platform.utils.FileOperateHelper; @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; if (datainfos.size() == 0) { return false; } Connection conn = OracleConnector.ConnectionBuilder("jdbc:oracle:thin:@" + oracleModel.getIp() + ":" + oracleModel.getPort() + ":" + oracleModel.getDatabaseName(), oracleModel.getUser(), oracleModel.getPassword(),dataInfolist.get(0)); if (null == conn) { FileOperateHelper.fileWrite(Configs.EXTRACT_LOG_LOCALTION + dataInfolist.get(0).getName(), "创建oracle连接失败: [" + conn + "]\r\n"); return false; } for (OracleConnectorParams collectOracle : datainfos) { if(null != collectOracle.getDataId() && !"".equals(collectOracle.getDataId())){ DataInfoEntity data = new DataInfoEntity(); data.setId(Integer.valueOf(collectOracle.getDataId())); data.setExtractStatus(1); dataInfoDao.updateExtract(data); String replicasName = collectOracle.getName(); collectOracle.setName("J" + collectOracle.getName().replace("-", "_")); String cmd = "kubectl label --overwrite rc " + replicasName + " isExtract=1"; List rList = Constant.ganymedSSH .execCmdWaitAcquiescent(cmd); StringBuffer sb = new StringBuffer(); for (String string : rList) sb.append(string).append("\n"); Configs.CONSOLE_LOGGER.info(sb.toString()); // client.updateOrAddReplicasLabelById(collectOracle.getName(), "isExtract", "1"); //更新oracle汇总状态,0标示为未汇总,1标示汇总中,2标示汇总完成 oracleExtract.createDBLink(conn, collectOracle); //创建dblink oracleExtract.createTableSpace(conn, collectOracle, oracleModel); //创建表空间 oracleExtract.createUser(conn, collectOracle, oracleModel);//创建用户并授权 oracleExtract.extractColleDB(conn, collectOracle, oracleModel);//执行抽取 // client.updateOrAddReplicasLabelById(collectOracle.getName(), "isExtract", "2"); //更新oracle汇总状态,0标示为未汇总,1标示汇总中,2标示汇总完成 cmd = "kubectl label --overwrite rc " + replicasName + " isExtract=2"; rList = Constant.ganymedSSH.execCmdWaitAcquiescent(cmd); sb = new StringBuffer(); for (String string : rList) sb.append(string).append("\n"); Configs.CONSOLE_LOGGER.info(sb.toString()); data.setExtractStatus(2); dataInfoDao.updateExtract(data); } } isSuccess = true; }catch(Exception e){ new CustomException(Custom4exception.OracleSQL_Except, e); } return isSuccess; } @Override public boolean isConnectTotalOracle(GatherOracleInfo oracleModel) throws Exception { boolean isConnect = false; Connection conn = OracleConnector.ConnectionBuilder("jdbc:oracle:thin:@" + oracleModel.getIp() + ":" + oracleModel.getPort() + ":" + oracleModel.getDatabaseName(), oracleModel.getUser(), oracleModel.getPassword(), null); if (null == conn) { isConnect = false; throw new CustomException(Custom4exception.connect_Oracle_Except, null, oracleModel); // FileOperateHelper.fileWrite(Configs.EXTRACT_LOG_LOCALTION // + dataInfolist.get(0).getName(), "创建oracle连接失败: [" + conn + "]\r\n"); }else { isConnect = oracleExtract.testConnect(conn); } return isConnect; } // @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; // } }