diff --git a/.project b/.project index c9ff485b..766e275f 100644 --- a/.project +++ b/.project @@ -37,5 +37,6 @@ <nature>org.eclipse.wst.common.project.facet.core.nature</nature> <nature>org.eclipse.jdt.core.javanature</nature> <nature>org.eclipse.wst.jsdt.core.jsNature</nature> + <nature>com.sysdeo.eclipse.tomcat.tomcatnature</nature> </natures> </projectDescription> diff --git a/WebContent/WEB-INF/config/config.properties b/WebContent/WEB-INF/config/config.properties index 676e5527..c9d94dc3 100644 --- a/WebContent/WEB-INF/config/config.properties +++ b/WebContent/WEB-INF/config/config.properties @@ -17,6 +17,7 @@ jdbc.mysql.password=root gather-user-name=system # 密码 gather-user-password=oracle + # gather-port=1521 # @@ -40,11 +41,15 @@ jdbc.minEvictableIdleTimeMillis=300000 # #============================================================================================================== table-suffix=_20152016 -extract-log-localtion=/home/log/ +extract-log-localtion=/home/web_manage/log/ gather-tablespace-name=TS_TTSSS + gather-tablespace-path= gather-table-user-password= kubeMasterUrl=http://192.168.191.23:8080/ + collect-user-name=system collect-password=oracle collect-service-name=orcl + +gfs_control_ip=192.168.191.23 \ No newline at end of file diff --git a/WebContent/WEB-INF/config/log4j-config.xml b/WebContent/WEB-INF/config/log4j-config.xml index 55b0cb0f..801540e5 100644 --- a/WebContent/WEB-INF/config/log4j-config.xml +++ b/WebContent/WEB-INF/config/log4j-config.xml @@ -8,17 +8,25 @@ <layout class="org.apache.log4j.TTCCLayout"> <param name="ConversionPattern" value="TTCCLayout"></param> </layout> + <filter class="org.apache.log4j.varia.LevelRangeFilter"> + <param name="LevelMin" value="DEBUG" /> + <param name="LevelMax" value="ERROR" /> + </filter> </appender> <!-- 输出日志到文件 每天一个文件 --> <appender name="dailyRollingFile" class="org.apache.log4j.DailyRollingFileAppender"> <param name="Threshold" value="info"></param> <param name="ImmediateFlush" value="true"></param> - <param name="File" value="logs/dailyRollingFile.log"></param> + <param name="File" value="/home/web_manage/logs/dailyRollingFile.log"></param> <param name="DatePattern" value="'.'yyyy-MM-dd'.log'"></param> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss\} %-5p] [%t] {%c:%L}-%m%n"></param> </layout> + <filter class="org.apache.log4j.varia.LevelRangeFilter"> + <param name="LevelMin" value="ERROR" /> + <param name="LevelMax" value="ERROR" /> + </filter> </appender> <!-- 输出日志到文件 文件大小到达指定尺寸的时候产生一个新的文件 --> diff --git a/WebContent/WEB-INF/config/mybatis-applicationConfig.xml b/WebContent/WEB-INF/config/mybatis-applicationConfig.xml index 4bb8e731..ae09a182 100644 --- a/WebContent/WEB-INF/config/mybatis-applicationConfig.xml +++ b/WebContent/WEB-INF/config/mybatis-applicationConfig.xml @@ -18,5 +18,6 @@ <mapper resource="com/dao/mapper/dataInfoMoveTmpmapper.xml"/> <mapper resource="com/dao/mapper/RegionalismMapper.xml"/> <mapper resource="com/dao/mapper/SystemCodeMapper.xml"/> + <mapper resource="com/dao/mapper/VolumeMapper.xml"/> </mappers> </configuration> \ No newline at end of file diff --git a/src/com/base/BaseController.java b/src/com/base/BaseController.java index 88ef5f48..804f833a 100644 --- a/src/com/base/BaseController.java +++ b/src/com/base/BaseController.java @@ -45,6 +45,7 @@ public class BaseController { System.out.println("URI"+request.getRequestURI()); request.setAttribute("ex", ex); System.err.println("BaseController --exp " + ex); + new CustomException("base_code_", ex); // 根据不同错误转向不同页面 if(ex instanceof CustomException) { CustomException cuse = (CustomException) ex; diff --git a/src/com/base/Custom4exception.java b/src/com/base/Custom4exception.java index a5bc8540..0e109c86 100644 --- a/src/com/base/Custom4exception.java +++ b/src/com/base/Custom4exception.java @@ -27,8 +27,11 @@ public class Custom4exception { public final static String threadVolume_Thread_Except = "3001001002"; /** - * 抽取汇总 + * 抽取汇总--的-获取抽取动作异常 */ public final static String threadVolume_Oracle_Except = "3002001002"; + /** * SQL执行错误 */ + public final static String OracleSQL_Except = "3002001002"; + } diff --git a/src/com/base/CustomException.java b/src/com/base/CustomException.java index 08b75248..e40f5697 100644 --- a/src/com/base/CustomException.java +++ b/src/com/base/CustomException.java @@ -4,6 +4,9 @@ package com.base; import org.apache.log4j.Logger; +import com.platform.controller.DataModelController; +import com.platform.utils.Configs; + /** * <一句话功能简述> * <功能详细描述> @@ -16,7 +19,7 @@ import org.apache.log4j.Logger; public class CustomException extends Exception { /** log4j */ - public static Logger log = Logger.getRootLogger(); + public static Logger log = Configs.DAILY_ROLLING_LOGGER; /** 自定义异常信息-错误信息 */ private String msg; @@ -44,7 +47,6 @@ public class CustomException extends Exception { public CustomException(String code,Exception e,Object... obj) { super(code); StringBuffer sbuf= new StringBuffer(); - sbuf.append(msg); this.code = code; sbuf.append(code); sbuf.append("\r\n"); @@ -56,6 +58,8 @@ public class CustomException extends Exception { } // 记录原始的异常 if (null != e) { + sbuf.append(e.getMessage()); + sbuf.append("\r\n"); StackTraceElement[] array = e.getStackTrace(); cause = e.getCause(); for (StackTraceElement stackTraceElement : array) { @@ -68,6 +72,7 @@ public class CustomException extends Exception { Object[] array = obj; sbuf.append("Object[] size : "); sbuf.append(array.length); + sbuf.append("\r\n"); int forSize = 0; if (Constant.CustomException_log_object_size < array.length) { forSize = Constant.CustomException_log_object_size; @@ -89,7 +94,7 @@ public class CustomException extends Exception { sbuf.append("\r\n"); // 是否 写入 文件 - log.error(sbuf.toString()); + log.debug(sbuf.toString()); } /** diff --git a/src/com/base/i18n.properties b/src/com/base/i18n.properties index e69de29b..eee66963 100644 --- a/src/com/base/i18n.properties +++ b/src/com/base/i18n.properties @@ -0,0 +1,4 @@ +3001001001=ThreadVolume\u7C7B\u67E5\u8BE2 volume\u5F02\u5E38 +3001001002=ThreadVolume\u7C7B\u7EBF\u7A0B\u4F11\u7720\u5F02\u5E38 +3002001002= \u62BD\u53D6\u6C47\u603B--\u7684-\u83B7\u53D6\u62BD\u53D6\u52A8\u4F5C\u5F02\u5E38 +3002001002=SQL\u6267\u884C\u9519\u8BEF \ No newline at end of file diff --git a/src/com/dao/mapper/VolumeMapper.xml b/src/com/dao/mapper/VolumeMapper.xml new file mode 100644 index 00000000..29f0a59b --- /dev/null +++ b/src/com/dao/mapper/VolumeMapper.xml @@ -0,0 +1,95 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE mapper +PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" +"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"> + +<mapper namespace="com.platform.dao.VolumeDao"> + <resultMap id="getEntityByText" type="com.platform.entities.VolumeInitEntity"> + <id property="id" column="id" javaType="int" jdbcType="INTEGER" /> + <result property="name" column="name" javaType="string" + jdbcType="VARCHAR" /> + <result property="ip" column="ip" javaType="string" + jdbcType="VARCHAR" /> + <result property="path" column="path" javaType="string" + jdbcType="VARCHAR" /> + <result property="mark" column="mark" javaType="string" + jdbcType="VARCHAR" /> + </resultMap> + + <!-- 获取数据全部记录信息 --> + <select id="findAll" resultType="com.platform.entities.VolumeInitEntity"> + SELECT + id,name,ip,path,mark + FROM + volume_info + ORDER BY id + </select> + + <update id="update" parameterType="com.platform.entities.VolumeInitEntity"> + UPDATE + volume_info + <set > + <trim suffixOverrides=","> + <if test="name != null and name != ''"> + name= #{name}, + </if> + <if test="ip != null and ip != ''"> + ip= #{ip}, + </if> + <if test="path != null and path != ''"> + path= #{path}, + </if> + <if test="mark != null and mark != ''"> + mark= #{mark}, + </if> + </trim> + </set> + <where> + id = #{id} + </where> + </update> + + <insert id="save" parameterType="com.platform.entities.VolumeInitEntity"> + INSERT INTO + volume_info( + <trim suffixOverrides=","> + <if test="name != null and name != ''"> + name, + </if> + <if test="ip != null and ip != ''"> + ip, + </if> + <if test="path != null and path != ''"> + path, + </if> + <if test="mark != null and mark != ''"> + mark, + </if> + </trim> + ) + VALUES( + <trim suffixOverrides=","> + <if test="name != null and name != ''"> + #{name}, + </if> + <if test="ip != null and ip != ''"> + #{ip}, + </if> + <if test="path != null and path != ''"> + #{path}, + </if> + <if test="mark != null and mark != ''"> + #{mark}, + </if> + </trim> + ) + </insert> + + <delete id="remove" parameterType="java.lang.String"> + DELETE FROM + volume_info + WHERE + name = #{name} + </delete> + +</mapper> \ No newline at end of file diff --git a/src/com/dao/mapper/data-details-mapper.xml b/src/com/dao/mapper/data-details-mapper.xml index 217885ca..61071bd0 100644 --- a/src/com/dao/mapper/data-details-mapper.xml +++ b/src/com/dao/mapper/data-details-mapper.xml @@ -44,11 +44,16 @@ PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" jdbcType="VARCHAR" /> <result property="volumePath" column="volume_path" javaType="string" jdbcType="VARCHAR" /> + <result property="mark" column="mark" javaType="string" + jdbcType="VARCHAR" /> </resultMap> <sql id="conditionsFilters"> <if test="dataType!=null"> AND data_details.data_type=#{dataType} </if> + <if test="mark!=null and mark != ''"> + AND data_details.mark=#{mark} + </if> <if test="submittedBatch!=null"> AND data_details.submitted_batch=#{submittedBatch} @@ -80,7 +85,7 @@ PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" <select id="getLimitedDataInfoEntities" parameterType="com.platform.entities.PagerOptions" resultMap="getEntityByText"> SELECT - id,regionalism_code,city_name,district_name,system_code,system_name,data_type,data_version,submitted_batch,data_path,data_charset,collection_time,collector_name,collector_contacts,extract_status,data_year,start_year,end_year,volume_ip,volume_path + id,regionalism_code,city_name,district_name,system_code,system_name,data_type,data_version,submitted_batch,data_path,data_charset,collection_time,collector_name,collector_contacts,extract_status,data_year,start_year,end_year,volume_ip,volume_path,mark FROM data_details <where> <include refid="conditionsFilters" /> @@ -99,6 +104,14 @@ PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" LIMIT #{limit} </if> </select> + + <!-- 获取数据符合筛选条件的全部记录信息 --> + <select id="findAll" resultMap="getEntityByText"> + SELECT + id,regionalism_code,city_name,district_name,system_code,system_name,data_type,data_version,submitted_batch,data_path,data_charset,collection_time,collector_name,collector_contacts,extract_status,data_year,start_year,end_year,volume_ip,volume_path,mark + FROM data_details + ORDER BY data_details.id + </select> <!-- 获取数据符合筛选条件的总记录条数 --> <select id="getLimitedDataCount" resultType="java.lang.Integer" @@ -207,10 +220,10 @@ PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" #{year}, </if> <if test="startYear != null and startYear != ''"> - #{start_year}, + #{startYear}, </if> <if test="endYear != null and endYear != ''"> - #{end_year}, + #{endYear}, </if> <if test="volumeIp != null and volumeIp != ''"> #{volumeIp}, @@ -245,5 +258,15 @@ PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" </foreach> and remove ='0' </update> + + <update id="updateExtract" parameterType="com.platform.entities.DataInfoEntity"> + UPDATE + data_info + set extract_status = #{extractStatus} + <where> + id = #{id} + AND remove ='0' + </where> + </update> </mapper> \ No newline at end of file diff --git a/src/com/dao/mapper/dataInfoMoveTmpmapper.xml b/src/com/dao/mapper/dataInfoMoveTmpmapper.xml index e35029a5..6d7b843d 100644 --- a/src/com/dao/mapper/dataInfoMoveTmpmapper.xml +++ b/src/com/dao/mapper/dataInfoMoveTmpmapper.xml @@ -49,7 +49,7 @@ PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" </resultMap> <sql id="Base_Column_List"> - regionalism_code,system_code,dst_path,lasttime,fkid + regionalism_code,system_code,dst_path,lasttime,fkid,dst_volume_ip,dst_volume_path </sql> <!-- 获取数据全部记录信息 --> @@ -120,6 +120,12 @@ PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" <if test="fkid > 0 "> fkid, </if> + <if test="dstVolumeIp != null and dstVolumeIp != ''"> + dst_volume_ip, + </if> + <if test="dstVolumePath != null and dstVolumePath != ''"> + dst_volume_path, + </if> </trim> ) VALUES( @@ -146,7 +152,13 @@ PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" #{lastTime}, </if> <if test="fkid > 0 "> - #{fkid), + #{fkid}, + </if> + <if test="dstVolumeIp != null and dstVolumeIp != ''"> + #{dstVolumeIp}, + </if> + <if test="dstVolumePath != null and dstVolumePath != ''"> + #{dstVolumePath}, </if> </trim> ) @@ -156,7 +168,7 @@ PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" INSERT INTO move_data_tmp ( <include refid="Base_Column_List" /> ) VALUES <foreach collection="list" item="item" index="index" separator=","> - (#{item.regionalismCode,jdbcType=VARCHAR},#{item.systemCode,jdbcType=INTEGER},#{item.dstPath,jdbcType=VARCHAR},#{item.lastTime,jdbcType=VARCHAR},#{item.fkid}) + (#{item.regionalismCode,jdbcType=VARCHAR},#{item.systemCode,jdbcType=INTEGER},#{item.dstPath,jdbcType=VARCHAR},#{item.lastTime,jdbcType=VARCHAR},#{item.fkid},#{item.dstVolumeIp},#{item.dstVolumePath}) </foreach> </select> diff --git a/src/com/platform/controller/DataModelController.java b/src/com/platform/controller/DataModelController.java index 418ed466..528aa89a 100644 --- a/src/com/platform/controller/DataModelController.java +++ b/src/com/platform/controller/DataModelController.java @@ -11,8 +11,6 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import net.sf.json.JSONObject; - import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.springframework.stereotype.Controller; @@ -27,45 +25,48 @@ import org.springframework.web.bind.annotation.ResponseBody; import com.base.BaseController; import com.platform.entities.DataInfoEntity; import com.platform.entities.DataInfoEntityMoveTmp; -import com.platform.entities.FolderNode; import com.platform.entities.GatherOracleInfo; import com.platform.entities.PagerOptions; import com.platform.entities.VolumeEntity; +import com.platform.entities.oracleForm; import com.platform.entities.volumeMoveForm; import com.platform.service.DataInfoService; import com.platform.service.ICodeService; import com.platform.service.IGfsService; +import com.platform.service.ILogRead; import com.platform.service.IMoveDataService; import com.platform.service.IMySqlService; import com.platform.service.IOracleExtractService; import com.platform.service.OracleStatusService; -import com.platform.utils.Bean2MapUtils; import com.platform.utils.Configs; import com.platform.utils.UtilsHelper; @Controller -public class DataModelController extends BaseController{ - - public static Logger log = Logger.getLogger(DataModelController.class); - +public class DataModelController extends BaseController { + + public static Logger log = Configs.DAILY_ROLLING_LOGGER; + @Resource(name = "dataInfoService") private DataInfoService dfs; - + @Resource(name = "gfsService") private IGfsService gfsService; - + @Resource(name = "mySqlService") private IMySqlService mySqlService; - + @Resource(name = "OracleExtract") private IOracleExtractService OracleExtract; - + @Resource(name = "moveDataService") private IMoveDataService moveDataService; - + @Resource(name = "codeService") private ICodeService codeService; - + + @Resource(name = "logReadService") + private ILogRead logReadService; + public void setDfsImp(DataInfoService dfs) { this.dfs = dfs; } @@ -92,12 +93,14 @@ public class DataModelController extends BaseController{ .append("}").toString()); PagerOptions pagerOptions = (PagerOptions) UtilsHelper .newObjAndSetAttrsByClass(PagerOptions.class, params); - + //冷热区查询字段mark + pagerOptions.setMark(pagerOptions.getVolumeType()); return dfs.getPagerTableData(pagerOptions); } - @RequestMapping(value="/delete/data", method= RequestMethod.POST) - public void deleteData(HttpServletRequest res, HttpServletResponse req) throws Exception { + @RequestMapping(value = "/delete/data", method = RequestMethod.POST) + public void deleteData(HttpServletRequest res, HttpServletResponse req) + throws Exception { res.setCharacterEncoding("UTF-8"); Map<String, String[]> paramMap = res.getParameterMap(); String[] data = paramMap.get("data"); @@ -106,13 +109,14 @@ public class DataModelController extends BaseController{ } @RequestMapping("/connectOracle") - public void connectOracle(HttpServletRequest res, HttpServletResponse req) throws UnsupportedEncodingException { + public void connectOracle(HttpServletRequest res, HttpServletResponse req) + throws UnsupportedEncodingException { res.setCharacterEncoding("UTF-8"); Map<String, String[]> paramMap = res.getParameterMap(); String[] oraclesName = paramMap.get("oracleName"); if (oraclesName != null) for (String rcName : oraclesName) { - Configs.CONSOLE_LOGGER.info("连接成功\t" + rcName); + Configs.CONSOLE_LOGGER.info("执行连接\t" + rcName); new OracleStatusService().connectToOracle(rcName); } req.setStatus(200); @@ -134,211 +138,163 @@ public class DataModelController extends BaseController{ req.setStatus(200); } - @RequestMapping(value="/oracle/{name}/extract", method= RequestMethod.POST) - public void oracleExtract(HttpServletRequest res, - HttpServletResponse req,@PathVariable String name) throws Exception { + @RequestMapping(value = "/oracle/{name}/extract", method = RequestMethod.POST) + public void oracleExtract(HttpServletRequest res, HttpServletResponse req, + @RequestBody oracleForm form) throws Exception { + Configs.CONSOLE_LOGGER.error("/oracle/{name}/extract"); res.setCharacterEncoding("UTF-8"); - System.out.println("------extract-------"); - System.out.println(name); - Map<String, String[]> paramMap = res.getParameterMap(); - //汇总库 对象信息--带有tableName- - String[] nodes = paramMap.get("target"); - Map map = null; - for (String string : nodes) { - JSONObject jsonobject = JSONObject.fromObject(string); - map = jsonobject; - System.out.println(map); - } - - // 采集库对象--(多个采集库抽取到1个汇总库的1个tableName下) - String[] inneed = paramMap.get("inneed"); - List<Map<String, String>> colleclist = new ArrayList<Map<String,String>>(); - for (String string : nodes) { - JSONObject jsonobject = JSONObject.fromObject(string); - Map inneedMap = jsonobject; - colleclist.add(inneedMap); + if (null != form.getInneed() && form.getInneed().size() > 0) { + OracleExtract.extractOracle(form.getName(), form.getInneed(), + form.getTarget()); } - OracleExtract.extractOracle(name, colleclist, map); req.setStatus(200); } -// public void oracleExtract(HttpServletRequest res, -// HttpServletResponse req, String name, @RequestBody GatherOracleInfo gather, @RequestBody List<OracleConnectorParams> collectOracles) -// throws Exception { -//// res.setCharacterEncoding("UTF-8"); -// log.debug("------extract-------"); -//// Map<String, String[]> paramMap = res.getParameterMap(); -//// log.debug(paramMap); -//// //汇总库 对象信息--带有tableName- -//// String[] nodes = paramMap.get("target"); -//// Map map = null; -//// for (String string : nodes) { -//// JSONObject jsonobject = JSONObject.fromObject(string); -//// map = jsonobject; -//// System.out.println(map); -//// } -//// -//// // 采集库对象--(多个采集库抽取到1个汇总库的1个tableName下) -//// String[] inneed = paramMap.get("inneed"); -//// List<Map<String, String>> colleclist = new ArrayList<Map<String,String>>(); -//// for (String string : nodes) { -//// JSONObject jsonobject = JSONObject.fromObject(string); -//// Map inneedMap = jsonobject; -//// colleclist.add(inneedMap); -//// } -// OracleExtract.extractOracle(name, collectOracles, gather); -// } - - @RequestMapping(value="/volume/list", method= RequestMethod.POST) + + // public void oracleExtract(HttpServletRequest res, + // HttpServletResponse req, String name, @RequestBody GatherOracleInfo + // gather, @RequestBody List<OracleConnectorParams> collectOracles) + // throws Exception { + // // res.setCharacterEncoding("UTF-8"); + // log.debug("------extract-------"); + // // Map<String, String[]> paramMap = res.getParameterMap(); + // // log.debug(paramMap); + // // //汇总库 对象信息--带有tableName- + // // String[] nodes = paramMap.get("target"); + // // Map map = null; + // // for (String string : nodes) { + // // JSONObject jsonobject = JSONObject.fromObject(string); + // // map = jsonobject; + // // System.out.println(map); + // // } + // // + // // // 采集库对象--(多个采集库抽取到1个汇总库的1个tableName下) + // // String[] inneed = paramMap.get("inneed"); + // // List<Map<String, String>> colleclist = new + // ArrayList<Map<String,String>>(); + // // for (String string : nodes) { + // // JSONObject jsonobject = JSONObject.fromObject(string); + // // Map inneedMap = jsonobject; + // // colleclist.add(inneedMap); + // // } + // OracleExtract.extractOracle(name, collectOracles, gather); + // } + + @RequestMapping(value = "/volume/list", method = RequestMethod.POST) @ResponseBody public List<VolumeEntity> volumeList() throws Exception { log.debug("-----/volume/list------"); List<VolumeEntity> result = gfsService.getAllVolumes(); return result; } - - @RequestMapping(value = "/volume/{name}/move", method= RequestMethod.POST) + + @RequestMapping(value = "/volume/{name}/move", method = RequestMethod.POST) @ResponseBody - public void volumeMove(HttpServletRequest res, HttpServletResponse req,@RequestBody volumeMoveForm form) throws Exception { -// res.setCharacterEncoding("UTF-8"); -// System.out.println("get Request"); -// Map<String, String[]> paramMap = res.getParameterMap(); -//// System.out.println(paramMap); -// String[] nodes = paramMap.get("selectNode"); -// Map map = null; -// for (String string : nodes) { -// System.out.println(string); -// JSONObject jsonobject = JSONObject.fromObject(string); -// map = jsonobject; -// } -// String dstVolume = (String) map.get("volume"); - -// List<String> listItemPath = new ArrayList<String>(); -// String[] items = paramMap.get("selectItems"); -// System.out.println("selectItems"); + public void volumeMove(HttpServletRequest res, HttpServletResponse req, + @RequestBody volumeMoveForm form) throws Exception { List<DataInfoEntity> datas = new ArrayList<DataInfoEntity>(); -// List<String> srcVolumes = new ArrayList<String>(); -// for (String string : items) { -// System.out.println(string); -// JSONObject jsobj = JSONObject.fromObject(string); -// Map itemmap = jsobj; -// DataInfoEntity data = (DataInfoEntity) Bean2MapUtils.convertMap(DataInfoEntity.class, itemmap); -// datas.add(data); -// } List<DataInfoEntity> selectItems = form.getSelectItems(); if (null == selectItems) { req.setStatus(200); return; } datas.addAll(selectItems); - + System.out.println("------/volume/{name}/move--------"); - if (datas.size() >0) { + if (datas.size() > 0) { moveDataService.moveData(datas, form.getSelectNode()); } req.setStatus(200); } -// public Object volumeMove(HttpServletRequest res, HttpServletResponse req, String name, -// @RequestBody FolderNode selectNode, @RequestBody List<DataInfoEntity> selectItems) throws Exception { -// log.debug("-----/volume/{name}/move------"); -//// Map<String, String[]> paramMap = res.getParameterMap(); -//// System.out.println(paramMap); -// Map<String, String[]> paramMap = res.getParameterMap(); -// log.debug(paramMap); -// //汇总库 对象信息--带有tableName- -// String[] nodes = (String[]) paramMap.get("selectNode"); -// Map map = null; -// JSONObject jsonobject = JSONObject.fromObject(string); -// map = jsonobject; -// -// -// log.debug(selectItems); -// log.debug(selectNode); -// boolean result = false ; -// if (selectItems.size() >0) { -// result = moveDataService.moveData(selectItems, selectNode.getPath()); -// } -// return result; -// } - - @RequestMapping(value="/oracle/list", method= RequestMethod.POST) + + @RequestMapping(value = "/oracle/list", method = RequestMethod.POST) @ResponseBody public List<GatherOracleInfo> oracleList() throws Exception { log.debug("----------getOracleInfo-----------------------"); - List<GatherOracleInfo> result = mySqlService.findAllMySql(); + List<GatherOracleInfo> result = mySqlService.findAllMySql(); return result; } - - @RequestMapping(value="/oracle/{id}/delete", method= RequestMethod.POST) - public void oracleDelete(HttpServletRequest req, HttpServletResponse res, @PathVariable String id) throws Exception { + + @RequestMapping(value = "/oracle/{id}/delete", method = RequestMethod.POST) + public void oracleDelete(HttpServletRequest req, HttpServletResponse res, + @PathVariable String id) throws Exception { log.debug("----------deleteOracleInfo----------------"); Integer num = Integer.valueOf(id); - Integer result = mySqlService.deleteMySql(num); + Integer result = mySqlService.deleteMySql(num); log.info("oracleDelete : " + result); res.setStatus(200); } - - @RequestMapping(value="/oracle/{id}/insert", method= RequestMethod.POST) + + @RequestMapping(value = "/oracle/{id}/insert", method = RequestMethod.POST) @ResponseBody - public void oracleInsert(HttpServletRequest res, HttpServletResponse req, @PathVariable String id, @RequestBody GatherOracleInfo oracle) throws Exception { + public void oracleInsert(HttpServletRequest res, HttpServletResponse req, + @PathVariable String id, @RequestBody GatherOracleInfo oracle) + throws Exception { log.debug("----------insertOracleInfo----------------"); oracle.setId(Integer.valueOf(id)); mySqlService.insertOracle(oracle); req.setStatus(200); } - - @RequestMapping(value="/oracle/{id}/update", method= RequestMethod.POST) + + @RequestMapping(value = "/oracle/{id}/update", method = RequestMethod.POST) @ResponseBody - public void oracleUpdate(HttpServletRequest res, HttpServletResponse req, @PathVariable("id") String id, @RequestBody GatherOracleInfo oracle) throws Exception { + public void oracleUpdate(HttpServletRequest res, HttpServletResponse req, + @PathVariable("id") String id, @RequestBody GatherOracleInfo oracle) + throws Exception { log.debug("----------updateOracleInfo-----------------------"); log.debug(oracle); - mySqlService.updateOracle(oracle); + mySqlService.updateOracle(oracle); req.setStatus(200); } - - @RequestMapping(value="/task/transfer/list", method= RequestMethod.POST) + + @RequestMapping(value = "/task/transfer/list", method = RequestMethod.POST) @ResponseBody public Object taskTransferList() throws Exception { log.debug("----------/task/transfer/list-----------------------"); List<DataInfoEntityMoveTmp> result = moveDataService.findAll(); return result; } - - @RequestMapping(value="/task/transfer/{id}/delete", method= RequestMethod.POST) + + @RequestMapping(value = "/task/transfer/{id}/delete", method = RequestMethod.POST) @ResponseBody - public Object taskTransferDelete(HttpServletRequest res, HttpServletResponse req, @PathVariable String id) throws Exception { + public Object taskTransferDelete(HttpServletRequest res, + HttpServletResponse req, @PathVariable String id) throws Exception { log.debug("----------/task/transfer/{id}/delete-----------------------"); DataInfoEntityMoveTmp move = new DataInfoEntityMoveTmp(); move.setId(Integer.valueOf(id)); - int result = moveDataService.delete(move ); + int result = moveDataService.delete(move); req.setStatus(200); return result; } - - @RequestMapping(value="/task/transfer/save", method= RequestMethod.POST) + + @RequestMapping(value = "/task/transfer/save", method = RequestMethod.POST) @ResponseBody - public Object taskTransferSave(HttpServletRequest res, HttpServletResponse req, @RequestBody DataInfoEntity move) throws Exception { + public Object taskTransferSave(HttpServletRequest res, + HttpServletResponse req, @RequestBody DataInfoEntity move) + throws Exception { log.debug("---------/task/transfer/save-----------------------"); int result = dfs.save(move); req.setStatus(200); return result; } - - @RequestMapping(value="/code/list", method= RequestMethod.POST) + + @RequestMapping(value = "/code/list", method = RequestMethod.POST) @ResponseBody public Object findCodeList() throws Exception { log.debug("---------/findSystemCode-----------------------"); Map<String, Object> result = codeService.findAll(); return result; } - - @RequestMapping(value = "/oracle/extract/log", method= RequestMethod.POST ) + + @RequestMapping(value = "/oracle/extract/log", method = RequestMethod.POST) @ResponseBody - public Object getExtractLog(@RequestParam("rcName") String name, HttpServletRequest res, HttpServletResponse req){ + public Object getExtractLog(@RequestParam("rcName") String name, + HttpServletRequest res, HttpServletResponse req) throws Exception { log.info("---------/oracle/extract/log-------------------"); - StringBuilder sb = new StringBuilder(); - sb.append("查看相应日志").append("\n").append("看到了"); + String result = logReadService.readLog(name); + // StringBuilder sb = new StringBuilder(); + // sb.append("查看相应日志").append("\n").append("看到了"); Map<String, String> log = new HashMap<>(); - log.put(name, sb.toString()); + log.put(name, result); return log; } } diff --git a/src/com/platform/controller/VolumeController.java b/src/com/platform/controller/VolumeController.java new file mode 100644 index 00000000..a787ce07 --- /dev/null +++ b/src/com/platform/controller/VolumeController.java @@ -0,0 +1,68 @@ +package com.platform.controller; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.log4j.Logger; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import com.base.BaseController; +import com.platform.entities.VolumeInitEntity; +import com.platform.service.IVolumeService; +import com.platform.utils.Configs; + +@Controller +public class VolumeController extends BaseController{ + + public static Logger log = Configs.DAILY_ROLLING_LOGGER; + + @Resource(name = "volumeService") + private IVolumeService volumeService; + + + @RequestMapping(value = "/volume/insert", method = RequestMethod.POST) + @ResponseBody + public void volumeInsert(HttpServletRequest res, HttpServletResponse req, + @RequestBody VolumeInitEntity entity) throws Exception { + Configs.CONSOLE_LOGGER.error("/oracle/{name}/extract"); + volumeService.save(entity); + req.setStatus(200); + } + + @RequestMapping(value = "/volume/{name}/delete", method = RequestMethod.POST) + @ResponseBody + public void volumeDelete(HttpServletRequest res, HttpServletResponse req, + @RequestBody VolumeInitEntity entity) throws Exception { + Configs.CONSOLE_LOGGER.error("/oracle/{name}/extract"); + volumeService.delete(entity); + req.setStatus(200); + } + + + @RequestMapping(value = "/volume/{name}/start", method = RequestMethod.POST) + @ResponseBody + public void volumeStart(HttpServletRequest res, HttpServletResponse req, + @RequestBody VolumeInitEntity entity) throws Exception { + Configs.CONSOLE_LOGGER.error("/oracle/{name}/extract"); + res.setCharacterEncoding("UTF-8"); + volumeService.start(entity); + req.setStatus(200); + } + + + @RequestMapping(value = "/volume/{name}/stop", method = RequestMethod.POST) + @ResponseBody + public void volumeStop(HttpServletRequest res, HttpServletResponse req, + @RequestBody VolumeInitEntity entity) throws Exception { + Configs.CONSOLE_LOGGER.error("/oracle/{name}/extract"); + res.setCharacterEncoding("UTF-8"); + volumeService.stop(entity); + req.setStatus(200); + } + +} diff --git a/src/com/platform/dao/DataInfoDao.java b/src/com/platform/dao/DataInfoDao.java index 5b9419b0..d1c3fba8 100644 --- a/src/com/platform/dao/DataInfoDao.java +++ b/src/com/platform/dao/DataInfoDao.java @@ -20,8 +20,12 @@ public interface DataInfoDao { List<String> getIdIsExist(List<Integer> list)throws Exception; + List<DataInfoEntity> findAll()throws Exception; + int removes(List<Integer> list)throws Exception; int save(DataInfoEntity data) throws Exception; + + int updateExtract(DataInfoEntity data) throws Exception; } diff --git a/src/com/platform/dao/VolumeDao.java b/src/com/platform/dao/VolumeDao.java new file mode 100644 index 00000000..1d1d0232 --- /dev/null +++ b/src/com/platform/dao/VolumeDao.java @@ -0,0 +1,27 @@ +package com.platform.dao; + +import java.util.List; + +import org.springframework.stereotype.Repository; + +import com.platform.entities.VolumeInitEntity; + +/** + * @author chen + * 数据迁移状态 临时 存放 , + */ +@Repository(value = "volumeDao") +public interface VolumeDao { + + /** 查 + * @return + * @throws Exception + */ + List<VolumeInitEntity> findAll() throws Exception; + + int update(VolumeInitEntity data) throws Exception; + + int save(VolumeInitEntity data) throws Exception; + + int remove(String name) throws Exception; +} diff --git a/src/com/platform/entities/DataInfoEntity.java b/src/com/platform/entities/DataInfoEntity.java index 062db3ce..45a64a36 100644 --- a/src/com/platform/entities/DataInfoEntity.java +++ b/src/com/platform/entities/DataInfoEntity.java @@ -35,6 +35,10 @@ public class DataInfoEntity { /** volume的path */ private String volumePath; + private String volumeType; + + private String mark; + public DataInfoEntity() { } @@ -251,6 +255,34 @@ public class DataInfoEntity { this.volumePath = volumePath; } + /** + * @return the volumeType + */ + public String getVolumeType() { + return volumeType; + } + + /** + * @param volumeType the volumeType to set + */ + public void setVolumeType(String volumeType) { + this.volumeType = volumeType; + } + + /** + * @return the mark + */ + public String getMark() { + return mark; + } + + /** + * @param mark the mark to set + */ + public void setMark(String mark) { + this.mark = mark; + } + @Override public String toString() { return "id=" + this.id + " ,regionalismCode=" + this.regionalismCode diff --git a/src/com/platform/entities/OracleConnectorParams.java b/src/com/platform/entities/OracleConnectorParams.java index 8391a84a..7fcefd5e 100644 --- a/src/com/platform/entities/OracleConnectorParams.java +++ b/src/com/platform/entities/OracleConnectorParams.java @@ -6,6 +6,8 @@ import com.platform.utils.ConfigPropertyReader; import com.platform.utils.Configs; public class OracleConnectorParams { + + private String dataId; private String port; private String ip; private String name; @@ -43,6 +45,20 @@ public class OracleConnectorParams { this.databaseName = properties.getProperty("collect-service-name"); } + /** + * @return the dataId + */ + public String getDataId() { + return dataId; + } + + /** + * @param dataId the dataId to set + */ + public void setDataId(String dataId) { + this.dataId = dataId; + } + public String getPort() { return port; } diff --git a/src/com/platform/entities/PagerOptions.java b/src/com/platform/entities/PagerOptions.java index e69e560a..39a68d35 100644 --- a/src/com/platform/entities/PagerOptions.java +++ b/src/com/platform/entities/PagerOptions.java @@ -1,9 +1,8 @@ package com.platform.entities; -import java.util.List; public class PagerOptions { - private Integer currentPageNum; //当前页码 + private Integer currentPageNum = 1; //当前页码 private String dataType; //数据类型 @@ -28,9 +27,13 @@ public class PagerOptions { private Integer priorTableSize; //前一次操作一页显示的数据条数 private String keyQuery; - + //模糊查询字段 private String[] array; + private String volumeType; + //冷热区字段 + private String mark; + public Integer getCurrentPageNum() { return currentPageNum; } @@ -154,5 +157,33 @@ public class PagerOptions { public void setArray(String[] array) { this.array = array; } + + /** + * @return the volumeType + */ + public String getVolumeType() { + return volumeType; + } + + /** + * @param volumeType the volumeType to set + */ + public void setVolumeType(String volumeType) { + this.volumeType = volumeType; + } + + /** + * @return the mark + */ + public String getMark() { + return mark; + } + + /** + * @param mark the mark to set + */ + public void setMark(String mark) { + this.mark = mark; + } } diff --git a/src/com/platform/entities/VolumeInitEntity.java b/src/com/platform/entities/VolumeInitEntity.java new file mode 100644 index 00000000..fef17763 --- /dev/null +++ b/src/com/platform/entities/VolumeInitEntity.java @@ -0,0 +1,120 @@ +package com.platform.entities; + +import java.util.List; + +public class VolumeInitEntity { + + private int id; + + private String name; + + private String ip; + + private String path; + + private String mark; + + private List<String> bricks; + + private String mountPoint; + + /** + * @return the id + */ + public int getId() { + return id; + } + + /** + * @param id the id to set + */ + public void setId(int id) { + this.id = id; + } + + /** + * @return the name + */ + public String getName() { + return name; + } + + /** + * @param name the name to set + */ + public void setName(String name) { + this.name = name; + } + + /** + * @return the ip + */ + public String getIp() { + return ip; + } + + /** + * @param ip the ip to set + */ + public void setIp(String ip) { + this.ip = ip; + } + + /** + * @return the path + */ + public String getPath() { + return path; + } + + /** + * @param path the path to set + */ + public void setPath(String path) { + this.path = path; + } + + /** + * @return the mark + */ + public String getMark() { + return mark; + } + + /** + * @param mark the mark to set + */ + public void setMark(String mark) { + this.mark = mark; + } + + /** + * @return the bricks + */ + public List<String> getBricks() { + return bricks; + } + + /** + * @param bricks the bricks to set + */ + public void setBricks(List<String> bricks) { + this.bricks = bricks; + } + + /** + * @return the mountPoint + */ + public String getMountPoint() { + return mountPoint; + } + + /** + * @param mountPoint the mountPoint to set + */ + public void setMountPoint(String mountPoint) { + this.mountPoint = mountPoint; + } + + +} diff --git a/src/com/platform/entities/oracleForm.java b/src/com/platform/entities/oracleForm.java new file mode 100644 index 00000000..1ea62bd4 --- /dev/null +++ b/src/com/platform/entities/oracleForm.java @@ -0,0 +1,55 @@ +package com.platform.entities; + +import java.util.List; + +public class oracleForm { + + private GatherOracleInfo target; + + private List<OracleConnectorParams> inneed; + + private String name; + + /** + * @return the totalOracle + */ + public GatherOracleInfo getTarget() { + return target; + } + + /** + * @param totalOracle the totalOracle to set + */ + public void setTarget(GatherOracleInfo target) { + this.target = target; + } + + /** + * @return the collOracle + */ + public List<OracleConnectorParams> getInneed() { + return inneed; + } + + /** + * @param collOracle the collOracle to set + */ + public void setInneed(List<OracleConnectorParams> inneed) { + this.inneed = inneed; + } + + /** + * @return the totalOracleName + */ + public String getName() { + return name; + } + + /** + * @param totalOracleName the totalOracleName to set + */ + public void setName(String name) { + this.name = name; + } + +} diff --git a/src/com/platform/glusterfs/ShowData.java b/src/com/platform/glusterfs/ShowData.java index 0ca8b438..8eb694c2 100644 --- a/src/com/platform/glusterfs/ShowData.java +++ b/src/com/platform/glusterfs/ShowData.java @@ -26,7 +26,7 @@ public class ShowData { * @see [类、类#方法、类#成员] */ public Map<String,String> showVolumeFiles(String volumeName){ - log.info("start show the data"); +// log.info("start show the data"); Map<String,String> data_type=new HashMap<String, String>(); /** * get mount point of volumeName @@ -45,14 +45,13 @@ public class ShowData { * @return */ public Map<String,String> showFolderData(String folderName){ - log.info(" start get "+folderName+" data"); +// log.info(" start get "+folderName+" data"); Map<String,String> data_type=new HashMap<String, String>(); String command="ls -l "+folderName; /* -<<<<<<< HEAD * RunCommand runCommand=new RunCommand(); List<String> * reStrings=runCommand.runCommandWait(command); */ @@ -86,7 +85,7 @@ public class ShowData { data_type.put(keyValue[8], keyValue[1]); } - log.info(" get "+folderName+" data successed"); +// log.info(" get "+folderName+" data successed"); return data_type; } @@ -98,7 +97,7 @@ public class ShowData { * @see [类、类#方法、类#成员] */ public long getFolderSize(String folderPath) { - log.info("get " + folderPath + " Size "); +// log.info("get " + folderPath + " Size "); String command = "du -k -d 0 "+folderPath+" | grep " + folderPath + "|awk \'{print $1}\'"; List<String> reStrings = Constant.ganymedSSH.execCmdWaitAcquiescent(command); @@ -111,8 +110,6 @@ public class ShowData { return -1; } long size = Long.valueOf(reStrings.get(0)); - - return size; } diff --git a/src/com/platform/glusterfs/VolumeInfo.java b/src/com/platform/glusterfs/VolumeInfo.java index e2ece069..f3583102 100644 --- a/src/com/platform/glusterfs/VolumeInfo.java +++ b/src/com/platform/glusterfs/VolumeInfo.java @@ -37,7 +37,7 @@ public class VolumeInfo { * @see [类、类#方法、类#成员] */ public List<String> showAllVolumeName() { - log.info("get volume name"); +// log.info("get volume name"); List<String> volNames = new ArrayList<String>(); /* @@ -84,7 +84,7 @@ public class VolumeInfo { * @see [类、类#方法、类#成员] */ public String getVolumeType(String volumeName) { - log.info("get volume type"); +// log.info("get volume type"); String volType = ""; List<String> reStrings = Constant.ganymedSSH @@ -123,7 +123,7 @@ public class VolumeInfo { * @see [类、类#方法、类#成员] */ public String getVolumeStatus(String volumeName) { - log.info("get volume status"); +// log.info("get volume status"); String volStatus = ""; String cmd = Constant.glusterVolumeInfo + " " + volumeName + " |grep ^Status"; List<String> reStrings = Constant.ganymedSSH.execCmdWaitAcquiescent(cmd); @@ -162,7 +162,7 @@ public class VolumeInfo { * @see [类、类#方法、类#成员] */ public Long getVolumeAvailableSize(String volumeName) throws Exception{ - log.info("get volume availableSize"); +// log.info("get volume availableSize"); Long allSize = 0L; String cmd = Constant.df + " | grep " + volumeName + "|awk '{print $4}'"; @@ -188,7 +188,7 @@ public class VolumeInfo { * @see [类、类#方法、类#成员] */ public Long getVolumeUseSize(String volumeName) throws Exception{ - log.info("get volume used size"); +// log.info("get volume used size"); Long usedSize = 0L; if (volumeIsExists(volumeName) == false) { log.error("1901 " + volumeName + " is not exists!"); @@ -219,7 +219,7 @@ public class VolumeInfo { * @see [类、类#方法、类#成员] */ public List<String> getVolumeBricks(String volumeName) { - log.info("get volume bricks"); +// log.info("get volume bricks"); String cmd = "gluster volume info " + volumeName + " |grep ^Brick'[0-9]\\+' |awk '{print $2}'"; List<String> reStrings = Constant.ganymedSSH.execCmdWaitAcquiescent(cmd); @@ -243,7 +243,7 @@ public class VolumeInfo { * @see [类、类#方法、类#成员] */ public List<String> getVolumeMountPoint(String volumeName) { - log.info("get volume MountPoint"); +// log.info("get volume MountPoint"); List<String> mountPoints = new ArrayList<>(); String cmd=Constant.df + "|grep " + volumeName + "|awk '{print $6}'"; List<String> reStrings = Constant.ganymedSSH.execCmdWaitAcquiescent(cmd); @@ -265,7 +265,7 @@ public class VolumeInfo { } public String getOneVolumeMountPoint(String volumeName) { - log.info("get one volume MountPoint"); +// log.info("get one volume MountPoint"); String mountPoint=null; diff --git a/src/com/platform/kubernetes/SimpleKubeClient.java b/src/com/platform/kubernetes/SimpleKubeClient.java index ab1ab367..28c0da14 100644 --- a/src/com/platform/kubernetes/SimpleKubeClient.java +++ b/src/com/platform/kubernetes/SimpleKubeClient.java @@ -4,6 +4,7 @@ import io.fabric8.kubernetes.api.model.Container; import io.fabric8.kubernetes.api.model.ContainerPort; import io.fabric8.kubernetes.api.model.Pod; import io.fabric8.kubernetes.api.model.ReplicationController; +import io.fabric8.kubernetes.client.Client; import io.fabric8.kubernetes.client.Config; import io.fabric8.kubernetes.client.ConfigBuilder; import io.fabric8.kubernetes.client.DefaultKubernetesClient; @@ -19,7 +20,7 @@ import com.platform.utils.UtilsHelper; public class SimpleKubeClient { private KubernetesClient client; - private final static String DEFAULT_NAMESPACE = "default"; + private final static String DEFAULT_NAMESPACE = "default"; public SimpleKubeClient() { this.client = new DefaultKubernetesClient(Configs.KUBE_MASTER_URL); @@ -32,18 +33,22 @@ public class SimpleKubeClient { public SimpleKubeClient(Config config) { Config cf = config; if (null == config) { - cf = new ConfigBuilder().withMasterUrl(Configs.KUBE_MASTER_URL).build(); + cf = new ConfigBuilder().withMasterUrl(Configs.KUBE_MASTER_URL) + .build(); } + this.client = new DefaultKubernetesClient(cf); } + // RollingUpdatercline + public void updateOrAddReplicasLabelById(String namespace, String resourceId, String key, String value) { KubernetesClient kubeClient = client; if (checkClientNull()) kubeClient = new DefaultKubernetesClient(Configs.KUBE_MASTER_URL); kubeClient.replicationControllers().inNamespace(namespace) - .withName(resourceId).edit().editMetadata() + .withName(resourceId).rolling().edit().editMetadata() .addToLabels(key, value).endMetadata().done(); } diff --git a/src/com/platform/oracle/OracleConnector.java b/src/com/platform/oracle/OracleConnector.java index c7749648..923d578b 100644 --- a/src/com/platform/oracle/OracleConnector.java +++ b/src/com/platform/oracle/OracleConnector.java @@ -1,76 +1,112 @@ -package com.platform.oracle; - -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; - -import com.platform.utils.Configs; - -public class OracleConnector { - static { - try { - Class.forName("oracle.jdbc.driver.OracleDriver"); - Configs.CONSOLE_LOGGER.info("Oracle驱动加载成功"); - } catch (ClassNotFoundException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - - public static Connection ConnectionBuilder(String url, String user, - String password) { - Connection conn=null; - try { - conn = DriverManager.getConnection(url, user, password); - } catch (SQLException e) { - Configs.CONSOLE_LOGGER.info("创建oracle连接失败: [" + e.getMessage() + "]"); - } - return conn; - } - - public static boolean canConnect(String url, String user, String password) { - return (null != ConnectionBuilder(url, user, password)); - } - - public ResultSet getSQLExecResultSet(Connection conn, String sql) { - ResultSet resultSet = null; - try { - Statement statement = conn - .createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, - ResultSet.CONCUR_UPDATABLE); - resultSet = statement.executeQuery(sql); - } catch (SQLException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - return resultSet; - } - - public ResultSet getSQLExecResultSet(String url, String user, - String password, String sql) { - return getSQLExecResultSet(ConnectionBuilder(url, user, password), sql); - } - - /** - * 执行对oracle数据库的增、删 - * @param conn - * @param sql - * @return 是否执行成功 - */ - public boolean execOracleSQL(Connection conn, String sql) { - boolean flag = false; - try { - Statement statement = conn.createStatement(); - if (statement.executeUpdate(sql) > 0) - flag = true; - } catch (SQLException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - return flag; - } +package com.platform.oracle; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; + +import com.base.Custom4exception; +import com.base.CustomException; +import com.platform.utils.Configs; +import com.platform.utils.FileOperateHelper; + +public class OracleConnector { + static { + try { + Class.forName("oracle.jdbc.driver.OracleDriver"); + Configs.CONSOLE_LOGGER.info("Oracle驱动加载成功"); + } catch (ClassNotFoundException e) { + // TODO Auto-generated catch block + new CustomException(Custom4exception.OracleSQL_Except, e); + e.printStackTrace(); + } + } + + + public synchronized static Connection ConnectionBuilder(String url, String user, + String password) { + Connection conn=null; + try { + conn = DriverManager.getConnection(url, user, password); + } catch (SQLException e) { + new CustomException(Custom4exception.OracleSQL_Except, e); + Configs.CONSOLE_LOGGER.info("创建oracle连接失败: [" + e.getMessage() + "]"); + } + return conn; + } + + public synchronized static boolean canConnect(String url, String user, String password) { + return (null != ConnectionBuilder(url, user, password)); + } + + public synchronized static ResultSet getSQLExecResultSet(Connection conn, String sql, String filePath) { + ResultSet resultSet = null; + try { + Statement statement = conn + .createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, + ResultSet.CONCUR_UPDATABLE); + resultSet = statement.executeQuery(sql); + FileOperateHelper + .fileWrite(filePath, sql+ "\r\n"+"OK \r\n"); + } catch (SQLException e) { + FileOperateHelper + .fileWrite(filePath, sql+ "\r\n"+e.getMessage()+"\r\n"); + new CustomException(Custom4exception.OracleSQL_Except, e); + } + + return resultSet; + } + + public synchronized static ResultSet getSQLExecResultSet(String url, String user, + String password, String sql, String filePath) { + return getSQLExecResultSet(ConnectionBuilder(url, user, password), sql, filePath); + } + + /** + * 执行对oracle数据库的增、删 + * @param conn + * @param sql + * @return true:执行的不返回集合数据的sql成功, 是否执行成功 + */ + public synchronized static boolean execOracleSQL(Connection conn, String sql, String filePath) { + boolean flag = false; + try { + Statement statement = conn.createStatement(); + statement.execute(sql); + flag = true; + FileOperateHelper + .fileWrite(filePath, sql+ "\r\n"+"OK \r\n"); + } catch (SQLException e) { + flag = false; + FileOperateHelper + .fileWrite(filePath, sql+ "\r\n"+e.getMessage()+"\r\n"); + new CustomException(Custom4exception.OracleSQL_Except, e); + } + return flag; + } + /** + * 执行对oracle数据库的增、删 + * @param conn + * @param sql + * @return true:执行结果大于1,即有数据 是否执行成功 + */ + public synchronized static boolean execUpdateOracleSQL(Connection conn, String sql, String filePath) { + boolean flag = false; + try { + Statement statement = conn.createStatement(); + if(statement.executeUpdate(sql) > 0) + { + flag = true; + FileOperateHelper + .fileWrite(filePath, sql+ "\r\n"+"OK \r\n"); + } + } catch (SQLException e) { + flag = false; + FileOperateHelper + .fileWrite(filePath, sql+ "\r\n"+e.getMessage()+"\r\n"); + new CustomException(Custom4exception.OracleSQL_Except, e, sql); + } + return flag; + } } \ No newline at end of file diff --git a/src/com/platform/service/DataInfoServiceImp.java b/src/com/platform/service/DataInfoServiceImp.java index 95f79c0f..4baf7db0 100644 --- a/src/com/platform/service/DataInfoServiceImp.java +++ b/src/com/platform/service/DataInfoServiceImp.java @@ -46,6 +46,11 @@ public class DataInfoServiceImp implements DataInfoService { pagerOptions.setOffset(offset + 1); List<DataInfoEntity> result = dfdDao .getLimitedDataInfoEntities(pagerOptions); + if (null != result) { + for (DataInfoEntity dataInfoEntity : result) { + dataInfoEntity.setVolumeType(dataInfoEntity.getMark()); + } + } modelMap.addAttribute("data", result); modelMap.addAttribute("length", count); } catch (Exception e) { diff --git a/src/com/platform/service/ILogRead.java b/src/com/platform/service/ILogRead.java new file mode 100644 index 00000000..3b42fca3 --- /dev/null +++ b/src/com/platform/service/ILogRead.java @@ -0,0 +1,7 @@ +package com.platform.service; + +public interface ILogRead { + + public String readLog(String filename) throws Exception; + +} diff --git a/src/com/platform/service/IOracleExtractService.java b/src/com/platform/service/IOracleExtractService.java index 87386f82..77cabccd 100644 --- a/src/com/platform/service/IOracleExtractService.java +++ b/src/com/platform/service/IOracleExtractService.java @@ -18,5 +18,5 @@ public interface IOracleExtractService { */ // public boolean extractOracle(String name, List<OracleConnectorParams> dataInfos, GatherOracleInfo oracleConnect) throws Exception; // public boolean extractOracle(String name, List<DataInfoEntity> dataInfos, Map<String, String> oracleConnect) throws Exception; - public boolean extractOracle(String name, List<Map<String, String>> dataInfo, Map<String, String> oracleConnect) throws Exception; + public boolean extractOracle(String name, List<OracleConnectorParams> dataInfo, GatherOracleInfo oracleConnect) throws Exception; } diff --git a/src/com/platform/service/IVolumeService.java b/src/com/platform/service/IVolumeService.java new file mode 100644 index 00000000..15e211a7 --- /dev/null +++ b/src/com/platform/service/IVolumeService.java @@ -0,0 +1,15 @@ +package com.platform.service; + +import com.platform.entities.VolumeInitEntity; + +public interface IVolumeService { + + public int save(VolumeInitEntity entity) throws Exception; + + public int delete(VolumeInitEntity entity) throws Exception; + + public int start(VolumeInitEntity entity) throws Exception; + + public int stop(VolumeInitEntity entity) throws Exception; + +} diff --git a/src/com/platform/service/OracleExtractHelper.java b/src/com/platform/service/OracleExtractHelper.java index b8c919ad..26d5643d 100644 --- a/src/com/platform/service/OracleExtractHelper.java +++ b/src/com/platform/service/OracleExtractHelper.java @@ -1,180 +1,186 @@ -package com.platform.service; - -import java.sql.Connection; -import java.sql.ResultSet; -import java.sql.SQLException; - -import com.base.Custom4exception; -import com.base.CustomException; -import com.platform.entities.GatherOracleInfo; -import com.platform.entities.OracleConnectorParams; -import com.platform.oracle.OracleConnector; -import com.platform.utils.Configs; -import com.platform.utils.FileOperateHelper; - -public class OracleExtractHelper { - - private OracleConnector oConnector; - - /** - * 判断dblink是否已经存在 - * - * @param conn - * @param linkName - * dblink的名称 - * @return - */ - private boolean hasSameNameDBLink(Connection conn, String linkName) { - boolean flag = false; - String sql = "SELECT * FROM ALL_DB_LINKS WHERE DB_LINK=" + linkName; - ResultSet rSet = oConnector.getSQLExecResultSet(conn, sql); - try { - rSet.last(); - if (rSet.getRow() > 0) - flag = true; - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - return flag; - } - - /** - * 创建dblink - * - * @param conn 汇总库的连接 - * @param oc 采集库 - * dblink连接参数实体 - */ - public void createDBLink(Connection conn, OracleConnectorParams oc) { - String linkName = "LinkTo" + oc.getName(); - String sql = "CREATE PUBLIC DATABASE LINK " - + linkName - + " CONNECT TO " - + oc.getUser() - + " IDENTIFIED BY " - + oc.getPassword() - + " USING '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = " - + oc.getIp() + ")(PORT = " + oc.getPort() - + ")))(CONNECT_DATA =(SERVICE_NAME =" + oc.getDatabaseName() - + ")))';"; - if (null != oc) { - if (hasSameNameDBLink(conn, linkName)) { // 如果dblink已经存在,先删除dblink,在创建dblink - String deleteSql = "DROP PUBLIC DATABASE LINK LinkTo" - + linkName; - FileOperateHelper - .fileWrite( - Configs.EXTRACT_LOG_LOCALTION + oc.getName(), - deleteSql+"\r\n"); - if (oConnector.execOracleSQL(conn, deleteSql)) { - FileOperateHelper.fileWrite(Configs.EXTRACT_LOG_LOCALTION - + oc.getName(), sql+"\r\n"); - oConnector.execOracleSQL(conn, sql); - } else { - Configs.CONSOLE_LOGGER.error("删除已有的DBLink失败,无法创建新的DBLink!"); - FileOperateHelper.fileWrite(Configs.EXTRACT_LOG_LOCALTION - + oc.getName(), "删除已有的DBLink失败,无法创建新的DBLink!"+"\r\n"); - } - - } else { - // 否则,创建dblink - oConnector.execOracleSQL(conn, sql); - FileOperateHelper.fileWrite( - Configs.EXTRACT_LOG_LOCALTION + oc.getName(), sql); - } - } - } - - /** - * 创建表空间 - * - * @param conn 汇总库连接 - * @param oc 汇总库信息 - * @return - */ - public boolean createTableSpace(Connection conn, GatherOracleInfo oc) { - String tmpSql = "select TABLESPACE_NAME from dba_tablespaces where TABLESPACE_NAME = '" - + Configs.GATHER_TABLESPACE_NAME + "'"; - if (oConnector.execOracleSQL(conn, tmpSql)) { - FileOperateHelper - .fileWrite( - Configs.EXTRACT_LOG_LOCALTION + oc.getName(), - tmpSql+"\r\n"); - return true; - } else { - String sql = "create tablespace " + Configs.GATHER_TABLESPACE_NAME - + " datafile '" + Configs.GATHER_TABLESPACE_PATH - + Configs.GATHER_TABLESPACE_NAME + ".dbf" - + "' size 512M autoextend on next 512M maxsize unlimited"; - FileOperateHelper - .fileWrite( - Configs.EXTRACT_LOG_LOCALTION + oc.getName(), - sql+"\r\n"); - return oConnector.execOracleSQL(conn, sql); - } - } - - /** - * 创建用户并授权 - * - * @param conn 汇总库连接 - * @param oc 汇总库信息 - */ - public void createUser(Connection conn, GatherOracleInfo oc) { - String strTUser = oc.getName() + Configs.TABLE_SUFFIX; - String sql = "Create user " + strTUser + " default tablespace " - + Configs.GATHER_TABLESPACE_NAME + " identified by " - + Configs.GATHER_TABLE_PASSWORD; - String grantSql = "grant connect, resource, dba to " + strTUser; - - oConnector.execOracleSQL(conn, sql); - FileOperateHelper - .fileWrite( - Configs.EXTRACT_LOG_LOCALTION + oc.getName(), - sql+"\r\n"); - - oConnector.execOracleSQL(conn, grantSql); - FileOperateHelper - .fileWrite( - Configs.EXTRACT_LOG_LOCALTION + oc.getName(), - grantSql+"\r\n"); - } - - /** - * 执行汇总操作 - * - * @param conn 汇总库连接 - * @param oc 采集库 - */ - public void extractColleDB(Connection conn, OracleConnectorParams oc) { - String strTUser = oc.getName() + Configs.TABLE_SUFFIX; - String sql = "SELECT 'create table " - + strTUser - + ".J'|| substr(t.OWNER||'_'||t.TABLE_NAME,0,29)||' as select * from '||t.OWNER||'.'||t.TABLE_NAME||" - + "'@linkTo" - + oc.getName() - + ";' FROM dba_tables@linkTo" - + oc.getName() - + " t WHERE t.TABLESPACE_NAME NOT IN ('SYSTEM','SYSAUX')" - + " and t.owner||t.table_name not in (select owner||table_name from dba_tables@linkTo" - + oc.getName() + " where 'data_type'='CLOB')"; - ResultSet rsSet = oConnector.getSQLExecResultSet(conn, sql); - FileOperateHelper - .fileWrite( - Configs.EXTRACT_LOG_LOCALTION + oc.getName(), - sql+"\r\n"); - try { - while (rsSet.next()) { - String resultSql = rsSet.getString(0); - oConnector.execOracleSQL(conn, resultSql); - FileOperateHelper - .fileWrite( - Configs.EXTRACT_LOG_LOCALTION + oc.getName(), - resultSql+"\r\n"); - } - } catch (SQLException e) { - new CustomException(Custom4exception.threadVolume_Oracle_Except, e); - } - - } -} +package com.platform.service; + +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; + +import com.base.Custom4exception; +import com.base.CustomException; +import com.platform.entities.GatherOracleInfo; +import com.platform.entities.OracleConnectorParams; +import com.platform.oracle.OracleConnector; +import com.platform.utils.Configs; +import com.platform.utils.FileOperateHelper; + +public class OracleExtractHelper { + + /** + * 判断dblink是否已经存在 + * + * @param conn + * @param linkName + * dblink的名称 + * @return + */ + private boolean hasSameNameDBLink(Connection conn, String linkName, String filePath) { + boolean flag = false; + String sql = "SELECT * FROM ALL_DB_LINKS WHERE DB_LINK='" + linkName+"'"; + ResultSet rSet = null; + try { + rSet = OracleConnector.getSQLExecResultSet(conn, sql, null); + rSet.last(); + if (rSet.getRow() > 0) + flag = true; + FileOperateHelper + .fileWrite(filePath, sql+ "\r\n"+"OK \r\n"); + } catch (Exception e) { + FileOperateHelper + .fileWrite(filePath, sql+ "\r\n"+ e.getMessage() + " \r\n"); + new CustomException(Custom4exception.threadVolume_Oracle_Except, e, rSet); + } + return flag; + } + + /** + * 创建dblink + * + * @param conn 汇总库的连接 + * @param oc 采集库 + * dblink连接参数实体 + */ + public void createDBLink(Connection conn, OracleConnectorParams oc) { + String linkName = "LINKTO" + oc.getName(); + String sql = "CREATE PUBLIC DATABASE LINK " + + linkName + + " CONNECT TO " + + oc.getUser() + + " IDENTIFIED BY " + + oc.getPassword() + + " USING \'(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = " + + oc.getIp() + ")(PORT = " + oc.getPort() + + ")))(CONNECT_DATA =(SERVICE_NAME =" + oc.getDatabaseName() + + ")))\'"; + if (null != oc) { + if (hasSameNameDBLink(conn, linkName, Configs.EXTRACT_LOG_LOCALTION + oc.getName())) { // 如果dblink已经存在,先删除dblink,在创建dblink + String deleteSql = "DROP PUBLIC DATABASE LINK " + + linkName; +// FileOperateHelper +// .fileWrite( +// Configs.EXTRACT_LOG_LOCALTION + oc.getName(), +// deleteSql+"\r\n"); + if (OracleConnector.execOracleSQL(conn, deleteSql, Configs.EXTRACT_LOG_LOCALTION + oc.getName())) { +// FileOperateHelper.fileWrite(Configs.EXTRACT_LOG_LOCALTION +// + oc.getName(), sql+"\r\n"); + OracleConnector.execOracleSQL(conn, sql, Configs.EXTRACT_LOG_LOCALTION + oc.getName()); + } else { + Configs.CONSOLE_LOGGER.error("删除已有的DBLink失败,无法创建新的DBLink!"); + FileOperateHelper.fileWrite(Configs.EXTRACT_LOG_LOCALTION + + oc.getName(), "删除已有的DBLink失败,无法创建新的DBLink!"+"\r\n"); + } + + } else { + // 否则,创建dblink + OracleConnector.execOracleSQL(conn, sql, Configs.EXTRACT_LOG_LOCALTION + oc.getName()); +// FileOperateHelper.fileWrite( +// Configs.EXTRACT_LOG_LOCALTION + oc.getName(), sql); + } + } + } + + /** + * 创建表空间 + * + * @param conn 汇总库连接 + * @param collectOracle + * @param oc 汇总库信息 + * @return + */ + public boolean createTableSpace(Connection conn, OracleConnectorParams collectOracle, GatherOracleInfo oc) { + String tmpSql = "select TABLESPACE_NAME from dba_tablespaces where TABLESPACE_NAME = '" + + oc.getTableName() + "'"; + if (OracleConnector.execUpdateOracleSQL(conn, tmpSql, Configs.EXTRACT_LOG_LOCALTION + collectOracle.getName())) { +// FileOperateHelper +// .fileWrite( +// Configs.EXTRACT_LOG_LOCALTION + oc.getName(), +// tmpSql+"\r\n"); + return true; + } else { + String sql = "create tablespace " + oc.getTableName() + + " datafile '" + Configs.GATHER_TABLESPACE_PATH + + oc.getTableName() + ".dbf" + + "' size 512M autoextend on next 512M maxsize unlimited"; +// FileOperateHelper +// .fileWrite( +// Configs.EXTRACT_LOG_LOCALTION + oc.getName(), +// sql+"\r\n"); + return OracleConnector.execOracleSQL(conn, sql, Configs.EXTRACT_LOG_LOCALTION + collectOracle.getName()); + } + } + + /** + * 创建用户并授权 + * + * @param conn 汇总库连接 + * @param oc 汇总库信息 + */ + public void createUser(Connection conn, OracleConnectorParams oc, GatherOracleInfo totalOracle) { + String strTUser = oc.getName() + totalOracle.getSuffix(); + + String sql = "Create user " + strTUser + " default tablespace " + + totalOracle.getTableName() + " identified by " + + Configs.GATHER_TABLE_PASSWORD; + String grantSql = "grant connect, resource, dba to " + strTUser; + + OracleConnector.execOracleSQL(conn, sql, Configs.EXTRACT_LOG_LOCALTION + oc.getName()); +// FileOperateHelper +// .fileWrite( +// Configs.EXTRACT_LOG_LOCALTION + oc.getName(), +// sql+"\r\n"); + + OracleConnector.execOracleSQL(conn, grantSql, Configs.EXTRACT_LOG_LOCALTION + oc.getName()); +// FileOperateHelper +// .fileWrite( +// Configs.EXTRACT_LOG_LOCALTION + oc.getName(), +// grantSql+"\r\n"); + } + + /** + * 执行汇总操作 + * + * @param conn 汇总库连接 + * @param oc 采集库 + */ + public void extractColleDB(Connection conn, OracleConnectorParams oc) { + String strTUser = oc.getName() + Configs.TABLE_SUFFIX; + String sql = "SELECT 'create table " + + strTUser + + ".J'|| substr(t.OWNER||'_'||t.TABLE_NAME,0,29)||' as select * from '||t.OWNER||'.'||t.TABLE_NAME||" + + "'@LINKTO" + + oc.getName() + + ";' FROM dba_tables@LINKTO" + + oc.getName() + + " t WHERE t.TABLESPACE_NAME NOT IN ('SYSTEM','SYSAUX')" + + " and t.owner||t.table_name not in (select owner||table_name from dba_tables@LINKTO" + + oc.getName() + " where 'data_type'='CLOB')"; + ResultSet rsSet = OracleConnector.getSQLExecResultSet(conn, sql, Configs.EXTRACT_LOG_LOCALTION + oc.getName()); +// FileOperateHelper +// .fileWrite( +// Configs.EXTRACT_LOG_LOCALTION + oc.getName(), +// sql+"\r\n"); + try { + while (rsSet.next()) { + try { + rsSet.getRow(); + String resultSql = rsSet.getString(1).replace(";", ""); + OracleConnector.execUpdateOracleSQL(conn, resultSql, Configs.EXTRACT_LOG_LOCALTION + oc.getName()); + } catch (SQLException e) { + new CustomException(Custom4exception.threadVolume_Oracle_Except, e, rsSet.getString(1)); + } + } + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } +} diff --git a/src/com/platform/service/OracleStatusService.java b/src/com/platform/service/OracleStatusService.java index d9b006e7..c1265c90 100644 --- a/src/com/platform/service/OracleStatusService.java +++ b/src/com/platform/service/OracleStatusService.java @@ -10,10 +10,13 @@ import java.util.Map; import java.util.Timer; import java.util.TimerTask; +import org.apache.commons.lang.text.StrBuilder; + import com.platform.entities.OracleConnectorParams; import com.platform.kubernetes.SimpleKubeClient; import com.platform.oracle.OracleConnector; import com.platform.utils.Configs; +import com.platform.utils.Constant; public class OracleStatusService { private static Map<String, Timer> alliveTask = new Hashtable<String, Timer>(); @@ -29,16 +32,24 @@ public class OracleStatusService { OracleConnectorParams orp = new OracleConnectorParams(); Timer timer = new Timer(); alliveTask.put(replicasName, timer); - timer.schedule(new connectTask(replicasName, orp, sKubeClient), DELAY_TIME, - INTERVAL_TIME); + timer.schedule(new connectTask(replicasName, orp, sKubeClient), + DELAY_TIME, INTERVAL_TIME); } public void cancelToOracle(String replicasName, String operate) { if (operate.equals("stop")) { - SimpleKubeClient sKubeClient = new SimpleKubeClient(); - sKubeClient.updateOrAddReplicasLabelById(replicasName, "status", - "0"); + String cmd = "kubectl label --overwrite rc " + replicasName + + " status=0"; + List<String> rList = Constant.ganymedSSH + .execCmdWaitAcquiescent(cmd); + StringBuffer sb = new StringBuffer(); + for (String str : rList) + sb.append(str).append("\n"); + Configs.CONSOLE_LOGGER.info(sb.toString()); + // SimpleKubeClient sKubeClient = new SimpleKubeClient(); + // sKubeClient.updateOrAddReplicasLabelById(replicasName, + // "status","0"); } killAlliveTask(replicasName); } @@ -85,8 +96,9 @@ public class OracleStatusService { private int count; private OracleConnectorParams ocp; private SimpleKubeClient client; - - public connectTask(String taskName, OracleConnectorParams ocp, SimpleKubeClient client){ + + public connectTask(String taskName, OracleConnectorParams ocp, + SimpleKubeClient client) { this.taskName = taskName; this.ocp = ocp; this.count = 0; @@ -102,12 +114,20 @@ public class OracleStatusService { @Override public void run() { - if (count == EXEC_TIME && alliveTask.containsKey(taskName)) { //如果任务已经执行10次,则任务oracle启动失败,并取消oracle连接 + if (count == EXEC_TIME && alliveTask.containsKey(taskName)) { // 如果任务已经执行10次,则任务oracle启动失败,并取消oracle连接 killAlliveTask(taskName); - client.updateOrAddReplicasLabelById(taskName, "status", "1"); //更新ReplicationController标签,将oracle状态标示未1(0:启动中,1:失败,2:成功) + // client.updateOrAddReplicasLabelById(taskName, "status", "1"); + // //更新ReplicationController标签,将oracle状态标示未1(0:启动中,1:失败,2:成功) + String cmd = "kubectl label --overwrite rc " + taskName + + " status=1"; + List<String> rList = Constant.ganymedSSH + .execCmdWaitAcquiescent(cmd); + StringBuffer sb = new StringBuffer(); + for (String str : rList) + sb.append(str).append("\n"); Configs.CONSOLE_LOGGER.info("更新replicationController标签: " + taskName + "\t[标签更新为: 失败]"); - } else { //否则,执行连接oracle任务,判断oracle是否启动成功 + } else { // 否则,执行连接oracle任务,判断oracle是否启动成功 Pod pod = filterPod(); if (pod != null) { String ip = client.getPodHostIp(pod); @@ -115,15 +135,23 @@ public class OracleStatusService { if (ip != null && port != 0) { String url = "jdbc:oracle:thin:@" + ip + ":" + port + ":" + ocp.getDatabaseName(); - boolean flag = OracleConnector.canConnect(url, //连接结果返回参数,true标示连接成功,false标示连接失败 + boolean flag = OracleConnector.canConnect(url, // 连接结果返回参数,true标示连接成功,false标示连接失败 ocp.getUser(), ocp.getPassword()); Configs.CONSOLE_LOGGER.info("url:" + url + ",user:" + ocp.getUser() + ",password:" + ocp.getPassword()); String message = "失败"; if (flag && alliveTask.containsKey(taskName)) { - client.updateOrAddReplicasLabelById(taskName, - "status", "2"); + String cmd = "kubectl label --overwrite rc " + + taskName + " status=2"; + // client.updateOrAddReplicasLabelById(taskNSyame, + // "status", "2"); + List<String> rList = Constant.ganymedSSH + .execCmdWaitAcquiescent(cmd); + StringBuffer sb = new StringBuffer(); + for (String str : rList) + sb.append(str).append("\n"); + Configs.CONSOLE_LOGGER.info(sb.toString()); message = "成功"; killAlliveTask(taskName); // 连接成功,取消连接 Configs.CONSOLE_LOGGER @@ -140,6 +168,7 @@ public class OracleStatusService { /** * 获取oracle的连接ip地址和端口号 + * * @return */ private Pod filterPod() { diff --git a/src/com/platform/service/impl/LogReadServiceImpl.java b/src/com/platform/service/impl/LogReadServiceImpl.java new file mode 100644 index 00000000..2d9dff31 --- /dev/null +++ b/src/com/platform/service/impl/LogReadServiceImpl.java @@ -0,0 +1,19 @@ +package com.platform.service.impl; + +import org.springframework.stereotype.Service; + +import com.platform.service.ILogRead; +import com.platform.utils.Configs; +import com.platform.utils.FileOperateHelper; + +@Service(value = "logReadService") +public class LogReadServiceImpl implements ILogRead { + + + @Override + public String readLog(String filename) throws Exception { + String result = FileOperateHelper.fileReader(Configs.EXTRACT_LOG_LOCALTION + "J" + filename.replace("-", "_")+".log"); + return result; + } + +} \ No newline at end of file diff --git a/src/com/platform/service/impl/MoveDataServiceImpl.java b/src/com/platform/service/impl/MoveDataServiceImpl.java index 163d86b3..b3aca0e8 100644 --- a/src/com/platform/service/impl/MoveDataServiceImpl.java +++ b/src/com/platform/service/impl/MoveDataServiceImpl.java @@ -14,9 +14,11 @@ import org.springframework.stereotype.Service; import com.platform.dao.DataInfoDao; import com.platform.dao.DataInfoMoveTmpDao; +import com.platform.dao.VolumeDao; import com.platform.entities.DataInfoEntity; import com.platform.entities.DataInfoEntityMoveTmp; import com.platform.entities.FolderNode; +import com.platform.entities.VolumeInitEntity; import com.platform.glusterfs.CheckoutMD5; import com.platform.glusterfs.CopyData; import com.platform.glusterfs.RemoveData; @@ -32,6 +34,9 @@ public class MoveDataServiceImpl implements IMoveDataService { @Resource(name = "dataInfoDao") private DataInfoDao dataInfoDao; + + @Resource(name = "volumeDao") + private VolumeDao volumeDao; private RemoveData removeservice = new RemoveData(); @@ -57,12 +62,23 @@ public class MoveDataServiceImpl implements IMoveDataService { public boolean moveData(List<DataInfoEntity> data, FolderNode node) throws Exception { boolean isSuccess = false; + if (null ==node.getName() ||"".equals(node.getName())) { + return false; + } + if (null ==node.getPath() ||"".equals(node.getPath())) { + return false; + } + List<VolumeInitEntity> listVolume = volumeDao.findAll(); + if (null == listVolume || listVolume.size() == 0) { + return false; + } String tailPath = ""; if (null != data) { // XXX/320198_16/1,or XXX/320122KFQ_15/1 ---> /320198_16/1, or // /320122KFQ_15/1 List<DataInfoEntityMoveTmp> exist = dataInfoMoveTmpDao.findAll(); List<String> existIds = new ArrayList<String>(); + List<Integer> fkIds = new ArrayList<Integer>(); if (null != exist) { for (DataInfoEntityMoveTmp dataInfoEntityMoveTmp : exist) { if ("0".equals(dataInfoEntityMoveTmp.getCompleteStatus()) @@ -71,6 +87,7 @@ public class MoveDataServiceImpl implements IMoveDataService { if (null != dataInfoEntityMoveTmp.getDataPath()) { existIds.add(dataInfoEntityMoveTmp.getDataPath()); } + fkIds.add(dataInfoEntityMoveTmp.getFkid()); } } } @@ -89,6 +106,12 @@ public class MoveDataServiceImpl implements IMoveDataService { if (existIds.contains(dataInfoEntity.getDataPath())) { continue; } + if (dataInfoEntity.getId() == 0) { + continue; + } + if (fkIds.contains(dataInfoEntity.getId())) { + continue; + } // TODO 正则:取出 data 的后面 的 路径,eg: XXX/320198_16/1,or // XXX/320122KFQ_15/1) Matcher matcher = pattern.matcher(dataInfoEntity.getDataPath()); @@ -108,11 +131,30 @@ public class MoveDataServiceImpl implements IMoveDataService { dataMove.setDstPath(finalDestPath); dataMove.setLastTime(DateForm.date2StringBysecond(new Date())); dataMove.setFkid(dataInfoEntity.getId()); - dataMove.setVolumePath(node.getName()); + // 末尾 含有 / + Matcher matcher3 = pattern2.matcher(node.getPath()); + // 去掉 最后 的 / 符合 + String volumePath = ""; + if (!matcher3.find()) { + volumePath = node.getPath()+"/"; + } + else { + volumePath = node.getPath(); + } + for ( VolumeInitEntity ve : listVolume) { + if (volumePath.contains(ve.getPath())) { + dataMove.setDstVolumePath(ve.getPath()); + dataMove.setDstVolumeIp(ve.getIp()); + break; + } + } moveList.add(dataMove); } if (moveList.size() > 0) { dataInfoMoveTmpDao.insertBatch(moveList); +// for (DataInfoEntityMoveTmp dataInfoEntityMoveTmp2 : moveList) { +// dataInfoMoveTmpDao.save(dataInfoEntityMoveTmp2); +// } isSuccess = true; } } diff --git a/src/com/platform/service/impl/OracleExtractServiceImpl.java b/src/com/platform/service/impl/OracleExtractServiceImpl.java index 053001e9..908dc4c9 100644 --- a/src/com/platform/service/impl/OracleExtractServiceImpl.java +++ b/src/com/platform/service/impl/OracleExtractServiceImpl.java @@ -1,22 +1,30 @@ package com.platform.service.impl; import java.sql.Connection; -import java.util.ArrayList; import java.util.List; -import java.util.Map; + +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.Bean2MapUtils; +import com.platform.utils.Configs; +import com.platform.utils.Constant; @Service(value = "OracleExtract") public class OracleExtractServiceImpl implements IOracleExtractService { + + @Resource(name = "dataInfoDao") + private DataInfoDao dataInfoDao; /** * kubernetes client */ @@ -32,35 +40,55 @@ public class OracleExtractServiceImpl implements IOracleExtractService { private OracleConnector connect = new OracleConnector(); @Override - public boolean extractOracle(String name, List<Map<String, String>> dataInfoMap, - Map<String, String> oracleConnect) throws Exception { + public boolean extractOracle(String name, List<OracleConnectorParams> dataInfolist, + GatherOracleInfo oracleConnect) throws Exception { boolean isSuccess = false; try{ //map转 bean(汇总库信息-带tableName的) - GatherOracleInfo oracleModel = (GatherOracleInfo) Bean2MapUtils.convertMap(GatherOracleInfo.class, oracleConnect); - + GatherOracleInfo oracleModel = oracleConnect; //采集库连接参数 - List<OracleConnectorParams> datainfos = new ArrayList<OracleConnectorParams>(); - for (Map<String, String> map : dataInfoMap) { - OracleConnectorParams dataInfoEntity = (OracleConnectorParams) Bean2MapUtils.convertMap(OracleConnectorParams.class, oracleConnect); - datainfos.add(dataInfoEntity); - } - - Connection conn = OracleConnector.ConnectionBuilder("jdbc:oracle:thin:@" + oracleModel.getIp() + ":" + oracleModel.getPort() + "/" + List<OracleConnectorParams> datainfos = dataInfolist; + Connection conn = OracleConnector.ConnectionBuilder("jdbc:oracle:thin:@" + oracleModel.getIp() + ":" + oracleModel.getPort() + ":" + oracleModel.getDatabaseName(), oracleModel.getUser(), oracleModel.getPassword()); for (OracleConnectorParams collectOracle : datainfos) { - client.updateOrAddReplicasLabelById(collectOracle.getName(), "isExtract", "1"); //更新oracle汇总状态,0标示为未汇总,1标示汇总中,2标示汇总完成 - oracleExtract.createDBLink(conn, collectOracle); //创建dblink - oracleExtract.createTableSpace(conn, oracleModel); //创建表空间 - oracleExtract.createUser(conn, oracleModel);//创建用户并授权 - oracleExtract.extractColleDB(conn, collectOracle);//执行抽取 - client.updateOrAddReplicasLabelById(collectOracle.getName(), "isExtract", "2"); //更新oracle汇总状态,0标示为未汇总,1标示汇总中,2标示汇总完成 + + 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<String> 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);//执行抽取 + // 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 false; + return isSuccess; } // @Override diff --git a/src/com/platform/service/impl/VolumeServiceImpl.java b/src/com/platform/service/impl/VolumeServiceImpl.java new file mode 100644 index 00000000..c674f4db --- /dev/null +++ b/src/com/platform/service/impl/VolumeServiceImpl.java @@ -0,0 +1,59 @@ +package com.platform.service.impl; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + +import com.platform.dao.VolumeDao; +import com.platform.entities.VolumeInitEntity; +import com.platform.glusterfs.SetVolume; +import com.platform.service.IVolumeService; + +@Service(value = "volumeService") +public class VolumeServiceImpl implements IVolumeService { + + /** gfs的api */ + SetVolume volumeService = new SetVolume(); + + @Resource(name = "volumeDao") + private VolumeDao volumeDao; + + + @Override + public int save(VolumeInitEntity entity) throws Exception { + //createVolume("lili_test1", 0, "distributed", bricksToCreate, "/home/lili_test1_point") + if (null == entity.getBricks()) { + return -1; + } + volumeService.createVolume(entity.getName(), 0, "distributed", entity.getBricks(), entity.getMountPoint()); + volumeDao.save(entity); + return 0; + } + + @Override + public int delete(VolumeInitEntity entity) throws Exception { + if (null == entity.getName() || "".equals(entity.getName())) { + return -1; + } + volumeService.deleteVolume(entity.getName()); + volumeDao.remove(entity.getName()); + return 0; + } + + @Override + public int start(VolumeInitEntity entity) throws Exception { + if (null == entity.getName() || "".equals(entity.getName())) { + return -1; + } + return volumeService.startVolume(entity.getName()); + } + + @Override + public int stop(VolumeInitEntity entity) throws Exception { + if (null == entity.getName() || "".equals(entity.getName())) { + return -1; + } + return volumeService.stopVolume(entity.getName()); + } + +} diff --git a/src/com/platform/service/thread/ThreadMoveData.java b/src/com/platform/service/thread/ThreadMoveData.java index 4096107d..9967e056 100644 --- a/src/com/platform/service/thread/ThreadMoveData.java +++ b/src/com/platform/service/thread/ThreadMoveData.java @@ -83,6 +83,8 @@ public class ThreadMoveData{ DataInfoEntityMoveTmp dataMove = result.get(i); //如果拷贝进度超过20分钟未进行-- 判断为 迁移失败。 // "1" :正在上传,0:等待 迁移, 2:成功 3:失败 + long srcSizeTemp = 0; + long dstSize = 0; if ("1".equals(dataMove.getCompleteStatus())) { long nowTime = new Date().getTime(); long timelong = nowTime - DateForm.string2DateBysecond(dataMove.getLastTime()).getTime(); @@ -96,8 +98,9 @@ public class ThreadMoveData{ isNoMove = false; } // 查询大小:。//gfs 获取size, - long srcSize = show.getFolderSize(dataMove.getDataPath()); - long dstSize = show.getFolderSize(dataMove.getDstPath()); + srcSizeTemp = show.getFolderSize(dataMove.getDataPath()); + long srcSize = (long) (srcSizeTemp * 0.998); + dstSize = show.getFolderSize(dataMove.getDstPath()); if (srcSize < 0) { log.error(dataMove.getDataPath() + " : 路径不存在! "); continue; @@ -118,6 +121,9 @@ public class ThreadMoveData{ if("1".equals(dataMove.getCompleteStatus()) && dataMove.getRate() > 0){ //传输完毕:进行校验 if (realRate == 100) { + int difSize = (int) (srcSizeTemp-dstSize); + Thread.sleep(10*difSize); + //TODO 查看当前拷贝目录进程是否结束? //TODO 进行MD5校验 int resl = check.checkoutMD5Folder(dataMove.getDataPath(), dataMove.getDstPath()); //TODO 校验成功--则删除数据库记录 @@ -133,10 +139,13 @@ public class ThreadMoveData{ data.setVolumeIp(dataMove.getDstVolumeIp()); data.setVolumePath(dataMove.getDstVolumePath()); data.setYear(DateForm.date2StringByMin(new Date())); + data.setVolumeIp(dataMove.getVolumeIp()); + data.setId(0); dataInfoDao.save(data); } else { // 3:表示 迁移失败 + dataMove.setLastTime(DateForm.date2StringBysecond(new Date())); dataMove.setCompleteStatus("3"); } } diff --git a/src/com/platform/utils/Configs.java b/src/com/platform/utils/Configs.java index 2160662d..c3754d5c 100644 --- a/src/com/platform/utils/Configs.java +++ b/src/com/platform/utils/Configs.java @@ -21,7 +21,7 @@ public class Configs { public static final Logger LOGGER = Logger.getLogger(Configs.class); - public static String KUBE_MASTER_URL = "http://192.168.0.113:8080/"; // kubernetes集群的maser + public static String KUBE_MASTER_URL = "http://192.168.0.110:8080/"; // kubernetes集群的maser // URl public static int ORACLE_DEFAULT_PORT = 1521; // oracle的默认端口号 @@ -42,11 +42,11 @@ public class Configs { public static String TABLE_SUFFIX = "_20152016"; //汇总库汇总表的后缀名 - public static String EXTRACT_LOG_LOCALTION = "/home/log"; //数据汇总日志保存位置 + public static String EXTRACT_LOG_LOCALTION = "D:\\log"; //数据汇总日志保存位置 public static String GATHER_TABLESPACE_NAME=""; //表空间名 public static String GATHER_TABLESPACE_PATH=""; //表空间路径 - public static String GATHER_TABLE_PASSWORD=""; //登入密码 + public static String GATHER_TABLE_PASSWORD="1"; //登入密码 } diff --git a/src/com/platform/utils/ConfigsLoader.java b/src/com/platform/utils/ConfigsLoader.java index 56745ce0..868198ac 100644 --- a/src/com/platform/utils/ConfigsLoader.java +++ b/src/com/platform/utils/ConfigsLoader.java @@ -60,6 +60,8 @@ public class ConfigsLoader implements ServletContextListener { .getProperty("gather-tablespace-path"); Configs.GATHER_TABLE_PASSWORD=properties.getProperty("gather-table-user-password"); + + Constant.hostIp=properties.getProperty("gfs_control_ip"); } public ConfigPropertyReader getcReader() { diff --git a/src/com/platform/utils/Constant.java b/src/com/platform/utils/Constant.java index 438285bc..4d230460 100644 --- a/src/com/platform/utils/Constant.java +++ b/src/com/platform/utils/Constant.java @@ -5,8 +5,8 @@ package com.platform.utils; public class Constant { public static String rootUser = "root"; public static String rootPasswd = "root"; - public static String hostIp = "192.168.191.23"; -// public static String hostIp = "127.0.0.1"; +// public static String hostIp = "192.168.191.23"; + public static String hostIp = ""; public static int port = 22; public static String glusterPeerStatus = "gluster peer status"; public static String glusterVolumeInfo = "gluster volume info "; @@ -44,6 +44,6 @@ public class Constant { /** * volume 获取的线程休眠时间 */ - public final static int update_dataInfo_sleep_time = 30000; + public final static int update_dataInfo_sleep_time = 1500; } diff --git a/src/com/platform/utils/FileOperateHelper.java b/src/com/platform/utils/FileOperateHelper.java index 6773436c..e3dc4830 100644 --- a/src/com/platform/utils/FileOperateHelper.java +++ b/src/com/platform/utils/FileOperateHelper.java @@ -25,13 +25,17 @@ public class FileOperateHelper { */ @SuppressWarnings("resource") public static void fileWrite(String path, String message) { + if (null == path || "".equals(path)) { + return; + } try { + path = path+".log"; File file = new File(path); if (file.exists()) file.createNewFile(); FileOutputStream out = new FileOutputStream(file, true); // 如果追加方式用true StringBuffer sb = new StringBuffer(); - sb.append(message).append("\n"); + sb.append(message); out.write(sb.toString().getBytes("utf-8")); } catch (IOException e) { // TODO: handle exception @@ -44,20 +48,20 @@ public class FileOperateHelper { * @return */ @SuppressWarnings("resource") - public static String fileReader(String path) { + public static String fileReader(String path) { StringBuffer sb = new StringBuffer(); String tempString = ""; try { - File file = new File(path); + File file = new File(path); if (!file.exists()) - return ""; + return "当前没有日志信息!"; FileInputStream fis = new FileInputStream(file); - BufferedReader br = new BufferedReader(new InputStreamReader(fis)); + BufferedReader br = new BufferedReader(new InputStreamReader(fis,"UTF-8")); while ((tempString = br.readLine()) != null) { - sb.append(tempString); + sb.append(tempString).append("\r\n"); } } catch (Exception e) { - // TODO: handle exception + Configs.CONSOLE_LOGGER.info(e.getMessage()); } return sb.toString(); } diff --git a/test/com/platform/test/TestWriteFile.java b/test/com/platform/test/TestWriteFile.java new file mode 100644 index 00000000..e232da75 --- /dev/null +++ b/test/com/platform/test/TestWriteFile.java @@ -0,0 +1,16 @@ +package com.platform.test; + +import com.platform.utils.Configs; +import com.platform.utils.FileOperateHelper; + +public class TestWriteFile { + + public static void main(String[] args) { + FileOperateHelper + .fileWrite( + Configs.EXTRACT_LOG_LOCALTION +"\\test.log", + "Hello! \r\n"); + System.out.println("Hello!"); + } + +}