diff --git a/WebContent/WEB-INF/config/config.properties b/WebContent/WEB-INF/config/config.properties
index b288b318..f0ab0063 100644
--- a/WebContent/WEB-INF/config/config.properties
+++ b/WebContent/WEB-INF/config/config.properties
@@ -1,56 +1,72 @@
-#=============================================================================================================
-# MySQL
-#=============================================================================================================
-# 驱动程序
-jdbc.mysql.driver=com.mysql.jdbc.Driver
-# 连接url
-jdbc.mysql.url=jdbc:mysql://192.168.0.101:3306/test?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
-# 用户名
-jdbc.mysql.username=root
-# 密码
-jdbc.mysql.password=root
-
-#=============================================================================================================
-# Oracle 连接配置
-#=============================================================================================================
-# hui用户名
-gather-user-name=system
-# 密码
-gather-user-password=oracle
-
-#
-gather-port=1521
-#
-gather-service-name=orcl
-#=============================================================================================================
-# 数据库公共配置
-#=============================================================================================================
-jdbc.initialSize=5
-jdbc.minIdle=5
-jdbc.maxIdle=20
-jdbc.maxActive=100
-jdbc.maxWait=100000
-jdbc.defaultAutoCommit=false
-jdbc.removeAbandoned=true
-jdbc.removeAbandonedTimeout=600
-jdbc.testWhileIdle=true
-jdbc.timeBetweenEvictionRunsMillis=60000
-jdbc.numTestsPerEvictionRun=20
-jdbc.minEvictableIdleTimeMillis=300000
-#==============================================================================================================
-#
-#==============================================================================================================
-table-suffix=_20152016
-extract-log-localtion=/home/web_manage/log/
-gather-tablespace-name=TS_TTSSS
-
-gather-tablespace-path=
-gather-table-user-password=
-kubeMasterUrl=http://192.168.0.110:8080/
-
-collect-user-name=system
-collect-password=oracle
-collect-service-name=orcl
-
-gfs_control_ip=192.168.0.110
+#=============================================================================================================
+# MySQL
+#=============================================================================================================
+# 驱动程序
+jdbc.mysql.driver=com.mysql.jdbc.Driver
+# 连接url
+
+jdbc.mysql.url=jdbc:mysql://192.168.0.110:3306/ftpdata?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&autoReconnect=true&failOverReadOnly=false
+
+# 用户名
+jdbc.mysql.username=root
+# 密码
+jdbc.mysql.password=root
+
+#=============================================================================================================
+# Oracle 连接配置
+#=============================================================================================================
+# hui用户名
+gather-user-name=system
+# 密码
+gather-user-password=oracle
+
+#
+gather-port=1521
+#
+gather-service-name=orcl
+#=============================================================================================================
+# 数据库公共配置
+#=============================================================================================================
+jdbc.initialSize=5
+jdbc.minIdle=5
+jdbc.maxIdle=20
+jdbc.maxActive=100
+jdbc.maxWait=100000
+jdbc.defaultAutoCommit=false
+jdbc.removeAbandoned=true
+jdbc.removeAbandonedTimeout=600
+jdbc.testWhileIdle=true
+jdbc.timeBetweenEvictionRunsMillis=60000
+jdbc.numTestsPerEvictionRun=20
+jdbc.minEvictableIdleTimeMillis=300000
+#==============================================================================================================
+#
+#==============================================================================================================
+table-suffix=_20152016
+extract-log-localtion=/home/web_manage/log/
+gather-tablespace-name=TS_TTSSS
+
+#dbf file's path must exist
+gather-tablespace-path=/opt/oracle/app/oradata/orcl/
+# user's password must exist
+gather-table-user-password=user
+
+#kuber's url must exist
+kubeMasterUrl=http://192.168.0.110:8080/
+
+collect-user-name=system
+collect-password=oracle
+collect-service-name=orcl
+
+gfs_control_ip=192.168.0.110
+
gfs_control_rootPassWd=root
+
+HttpClientConstant_URL_IP_PORT=http://192.168.0.110:8088/jfinal/
+
+#=============================================================================================================
+# 文件上传下载
+#=============================================================================================================
+file_upload_path=D:\\
+
+file_download_path=D:\\uuu.xls
diff --git a/WebContent/WEB-INF/config/spring-applicationContext.xml b/WebContent/WEB-INF/config/spring-applicationContext.xml
index 024e203f..dcfba49b 100644
--- a/WebContent/WEB-INF/config/spring-applicationContext.xml
+++ b/WebContent/WEB-INF/config/spring-applicationContext.xml
@@ -90,4 +90,13 @@
+
+
+
+ 104857600
+
+
+ 4096
+
+
\ No newline at end of file
diff --git a/WebContent/WEB-INF/lib/commons-codec-1.10.jar b/WebContent/WEB-INF/lib/commons-codec-1.10.jar
new file mode 100644
index 00000000..1d7417c4
Binary files /dev/null and b/WebContent/WEB-INF/lib/commons-codec-1.10.jar differ
diff --git a/WebContent/WEB-INF/lib/commons-fileupload-1.3.1.jar b/WebContent/WEB-INF/lib/commons-fileupload-1.3.1.jar
new file mode 100644
index 00000000..af0cda22
Binary files /dev/null and b/WebContent/WEB-INF/lib/commons-fileupload-1.3.1.jar differ
diff --git a/WebContent/WEB-INF/lib/commons-io-2.4.jar b/WebContent/WEB-INF/lib/commons-io-2.4.jar
new file mode 100644
index 00000000..90035a4f
Binary files /dev/null and b/WebContent/WEB-INF/lib/commons-io-2.4.jar differ
diff --git a/WebContent/WEB-INF/lib/curvesapi-1.03.jar b/WebContent/WEB-INF/lib/curvesapi-1.03.jar
new file mode 100644
index 00000000..35a19ca9
Binary files /dev/null and b/WebContent/WEB-INF/lib/curvesapi-1.03.jar differ
diff --git a/WebContent/WEB-INF/lib/dom4j-1.6.1.jar b/WebContent/WEB-INF/lib/dom4j-1.6.1.jar
new file mode 100644
index 00000000..c8c4dbb9
Binary files /dev/null and b/WebContent/WEB-INF/lib/dom4j-1.6.1.jar differ
diff --git a/WebContent/WEB-INF/lib/httpclient-4.2.2.jar b/WebContent/WEB-INF/lib/httpclient-4.2.2.jar
new file mode 100644
index 00000000..d12a624a
Binary files /dev/null and b/WebContent/WEB-INF/lib/httpclient-4.2.2.jar differ
diff --git a/WebContent/WEB-INF/lib/httpcore-4.2.2.jar b/WebContent/WEB-INF/lib/httpcore-4.2.2.jar
new file mode 100644
index 00000000..a64cd2f5
Binary files /dev/null and b/WebContent/WEB-INF/lib/httpcore-4.2.2.jar differ
diff --git a/WebContent/WEB-INF/lib/jxl-2.6.12.jar b/WebContent/WEB-INF/lib/jxl-2.6.12.jar
new file mode 100644
index 00000000..4a1fc64f
Binary files /dev/null and b/WebContent/WEB-INF/lib/jxl-2.6.12.jar differ
diff --git a/WebContent/WEB-INF/lib/poi-3.15-beta1.jar b/WebContent/WEB-INF/lib/poi-3.15-beta1.jar
new file mode 100644
index 00000000..a828bc9b
Binary files /dev/null and b/WebContent/WEB-INF/lib/poi-3.15-beta1.jar differ
diff --git a/WebContent/WEB-INF/lib/poi-examples-3.15-beta1.jar b/WebContent/WEB-INF/lib/poi-examples-3.15-beta1.jar
new file mode 100644
index 00000000..c31f0520
Binary files /dev/null and b/WebContent/WEB-INF/lib/poi-examples-3.15-beta1.jar differ
diff --git a/WebContent/WEB-INF/lib/poi-excelant-3.15.jar b/WebContent/WEB-INF/lib/poi-excelant-3.15.jar
new file mode 100644
index 00000000..65a5ad02
Binary files /dev/null and b/WebContent/WEB-INF/lib/poi-excelant-3.15.jar differ
diff --git a/WebContent/WEB-INF/lib/poi-ooxml-3.15-beta1.jar b/WebContent/WEB-INF/lib/poi-ooxml-3.15-beta1.jar
new file mode 100644
index 00000000..e0509340
Binary files /dev/null and b/WebContent/WEB-INF/lib/poi-ooxml-3.15-beta1.jar differ
diff --git a/WebContent/WEB-INF/lib/poi-ooxml-schemas-3.15-beta1.jar b/WebContent/WEB-INF/lib/poi-ooxml-schemas-3.15-beta1.jar
new file mode 100644
index 00000000..64b635cc
Binary files /dev/null and b/WebContent/WEB-INF/lib/poi-ooxml-schemas-3.15-beta1.jar differ
diff --git a/WebContent/WEB-INF/lib/poi-scratchpad-3.15-beta1.jar b/WebContent/WEB-INF/lib/poi-scratchpad-3.15-beta1.jar
new file mode 100644
index 00000000..3e394def
Binary files /dev/null and b/WebContent/WEB-INF/lib/poi-scratchpad-3.15-beta1.jar differ
diff --git a/WebContent/WEB-INF/lib/xmlbeans-2.6.0.jar b/WebContent/WEB-INF/lib/xmlbeans-2.6.0.jar
new file mode 100644
index 00000000..d1b66271
Binary files /dev/null and b/WebContent/WEB-INF/lib/xmlbeans-2.6.0.jar differ
diff --git a/WebContent/WEB-INF/template/system_templates.xlsx b/WebContent/WEB-INF/template/system_templates.xlsx
new file mode 100644
index 00000000..f92be336
Binary files /dev/null and b/WebContent/WEB-INF/template/system_templates.xlsx differ
diff --git a/src/com/base/Constant.java b/src/com/base/Constant.java
index 3b1dcc59..ab1b3daa 100644
--- a/src/com/base/Constant.java
+++ b/src/com/base/Constant.java
@@ -11,7 +11,10 @@ package com.base;
public class Constant {
/** 国际话配置文件文件-i18n.properties */
- public static String I18N_PROPERTIES_FIEL_PATH = "/com/base/i18n.properties";
+ public final static String I18N_PROPERTIES_FIEL_PATH = "/com/base/i18n.properties";
+
+ /** 信息系统excel导出模板 */
+ public final static String SYSTEM_INFO_EXCEL_TEMPLATE_FIEL_PATH = "/com/base/system_templates.xlsx";
/** WritefileThread-线程睡眠时间--3000 */
public final static long THREAD_SLEEP_WRITEFILETHREAD = 3000;
@@ -19,5 +22,6 @@ public class Constant {
/** CustomException记录报异常的对象的对象个数--10 */
public final static int CustomException_log_object_size = 10;
-
+ /** excel模板真实数据的起始行数 */
+ public final static int EXCEL_TEMPLATE_INIT_ROW = 8;
}
diff --git a/src/com/base/Custom4exception.java b/src/com/base/Custom4exception.java
index 959a5f87..a5d596a2 100644
--- a/src/com/base/Custom4exception.java
+++ b/src/com/base/Custom4exception.java
@@ -16,6 +16,7 @@ public class Custom4exception {
* 001:软件依赖虚拟机资源类别
* 001:启动异常
*/
+//3001001
/**
* ThreadVolume类查询 volume异常
*/
@@ -26,6 +27,7 @@ public class Custom4exception {
*/
public final static String threadVolume_Thread_Except = "3001001002";
+//3002001
/**
* 抽取汇总--的-获取抽取动作异常
*/
@@ -34,7 +36,10 @@ public class Custom4exception {
/** * SQL执行错误 */
public final static String OracleSQL_Except = "3002001002";
+ /** * 连接汇总-创建oracle连接失败 */
+ public final static String connect_Oracle_Except = "3002001003";
+
/** * MySQL错误 */
- public final static String MySQL_Except = "3002002003";
+ public final static String MySQL_Except = "3002002001";
}
diff --git a/src/com/base/CustomException.java b/src/com/base/CustomException.java
index e59bb6bd..d9b8ab73 100644
--- a/src/com/base/CustomException.java
+++ b/src/com/base/CustomException.java
@@ -2,9 +2,13 @@
package com.base;
+import java.beans.IntrospectionException;
+import java.lang.reflect.InvocationTargetException;
+
import org.apache.log4j.Logger;
import com.platform.controller.DataModelController;
+import com.platform.utils.Bean2MapUtils;
import com.platform.utils.Configs;
/**
@@ -83,9 +87,17 @@ public class CustomException extends Exception {
for (int i = 0; i < forSize; i++) {
sbuf.append(array[i]);
sbuf.append("\r\n");
+ try {
+ sbuf.append(Bean2MapUtils.convertBean(array[i]));
+ sbuf.append("\r\n");
+ } catch (IllegalAccessException | InvocationTargetException
+ | IntrospectionException e1) {
+ }
+ }
+ if (forSize == Constant.CustomException_log_object_size) {
+ sbuf.append("......");
+ sbuf.append("\r\n");
}
- sbuf.append("......");
- sbuf.append("\r\n");
}
else {
sbuf.append("null");
diff --git a/src/com/base/i18n.properties b/src/com/base/i18n.properties
index eee66963..5fe556df 100644
--- a/src/com/base/i18n.properties
+++ b/src/com/base/i18n.properties
@@ -1,4 +1,11 @@
+#3001001
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
+
+#3002001
+3002001001= \u62BD\u53D6\u6C47\u603B--\u7684-\u83B7\u53D6\u62BD\u53D6\u52A8\u4F5C\u5F02\u5E38
+3002001002=SQL\u6267\u884C\u9519\u8BEF
+3002001003=\u8FDE\u63A5\u6C47\u603B-\u521B\u5EFAoracle\u8FDE\u63A5\u5931\u8D25
+
+#3002002
+3002002001=MySQL\u9519\u8BEF
\ No newline at end of file
diff --git a/src/com/base/system_templates.xlsx b/src/com/base/system_templates.xlsx
new file mode 100644
index 00000000..f92be336
Binary files /dev/null and b/src/com/base/system_templates.xlsx differ
diff --git a/src/com/dao/mapper/dataInfoMoveTmpmapper.xml b/src/com/dao/mapper/dataInfoMoveTmpmapper.xml
index 6d7b843d..2668ebbd 100644
--- a/src/com/dao/mapper/dataInfoMoveTmpmapper.xml
+++ b/src/com/dao/mapper/dataInfoMoveTmpmapper.xml
@@ -68,6 +68,18 @@ PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
ORDER BY a.id
+
+
+
UPDATE
move_data_tmp
diff --git a/src/com/platform/controller/DataModelController.java b/src/com/platform/controller/DataModelController.java
index 528aa89a..d943d0aa 100644
--- a/src/com/platform/controller/DataModelController.java
+++ b/src/com/platform/controller/DataModelController.java
@@ -1,6 +1,8 @@
package com.platform.controller;
+import java.beans.IntrospectionException;
import java.io.UnsupportedEncodingException;
+import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -11,6 +13,8 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import net.sf.json.JSONArray;
+
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
@@ -30,6 +34,7 @@ import com.platform.entities.PagerOptions;
import com.platform.entities.VolumeEntity;
import com.platform.entities.oracleForm;
import com.platform.entities.volumeMoveForm;
+import com.platform.http.gfs.HttpUtils;
import com.platform.service.DataInfoService;
import com.platform.service.ICodeService;
import com.platform.service.IGfsService;
@@ -38,7 +43,11 @@ import com.platform.service.IMoveDataService;
import com.platform.service.IMySqlService;
import com.platform.service.IOracleExtractService;
import com.platform.service.OracleStatusService;
+import com.platform.service.thread.ThreadExtractOracle;
+import com.platform.service.thread.ThreadGainOracleConnect;
+import com.platform.utils.Bean2MapUtils;
import com.platform.utils.Configs;
+import com.platform.utils.Constant;
import com.platform.utils.UtilsHelper;
@Controller
@@ -66,7 +75,7 @@ public class DataModelController extends BaseController {
@Resource(name = "logReadService")
private ILogRead logReadService;
-
+
public void setDfsImp(DataInfoService dfs) {
this.dfs = dfs;
}
@@ -117,6 +126,13 @@ public class DataModelController extends BaseController {
if (oraclesName != null)
for (String rcName : oraclesName) {
Configs.CONSOLE_LOGGER.info("执行连接\t" + rcName);
+ String cmd = "kubectl label --overwrite rc " + rcName
+ + " status=0";
+ 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());
new OracleStatusService().connectToOracle(rcName);
}
req.setStatus(200);
@@ -142,12 +158,37 @@ public class DataModelController extends BaseController {
public void oracleExtract(HttpServletRequest res, HttpServletResponse req,
@RequestBody oracleForm form) throws Exception {
Configs.CONSOLE_LOGGER.error("/oracle/{name}/extract");
- res.setCharacterEncoding("UTF-8");
- if (null != form.getInneed() && form.getInneed().size() > 0) {
- OracleExtract.extractOracle(form.getName(), form.getInneed(),
- form.getTarget());
+// res.setCharacterEncoding("UTF-8");
+ boolean isConnect = false;
+ //5秒内是否能获得oracle连接,否则认为超时。
+ if (null != form.getTarget()) {
+ ThreadGainOracleConnect thOrcl = new ThreadGainOracleConnect(form, OracleExtract);
+ thOrcl.start();
+ for (int i = 0; i < 10; i++) {
+ Thread.sleep(400);
+ isConnect = thOrcl.isConnect();
+ if (isConnect) {
+ break;
+ }
+ else {
+ if (thOrcl.isExcept()) {
+ break;
+ }
+ Thread.sleep(100);
+ }
+ }
+ }
+ if (isConnect)
+ req.setStatus(200);
+ else
+ req.setStatus(500);
+ // 开始抽取数据到汇总库
+ if (isConnect && null != form.getInneed() && form.getInneed().size() > 0) {
+ ThreadExtractOracle thExtra = new ThreadExtractOracle(form, OracleExtract);
+ thExtra.start();
+// OracleExtract.extractOracle(form.getName(), form.getInneed(),
+// form.getTarget());
}
- req.setStatus(200);
}
// public void oracleExtract(HttpServletRequest res,
@@ -181,10 +222,18 @@ public class DataModelController extends BaseController {
@RequestMapping(value = "/volume/list", method = RequestMethod.POST)
@ResponseBody
- public List volumeList() throws Exception {
+ public String volumeList() throws Exception {
+ HttpUtils ht = new HttpUtils();
log.debug("-----/volume/list------");
- List result = gfsService.getAllVolumes();
- return result;
+ //List result = gfsService.getAllVolumes();
+ String rest = ht.sendPost("gfs/getAllvolume", null);
+// List result = null;
+// if (null != rest) {
+// System.out.println(rest);
+// JSONArray jsondata = JSONArray.fromObject(rest);
+// result = (ArrayList) JSONArray.toCollection(jsondata, VolumeEntity.class);
+// }
+ return rest;
}
@RequestMapping(value = "/volume/{name}/move", method = RequestMethod.POST)
@@ -199,7 +248,7 @@ public class DataModelController extends BaseController {
}
datas.addAll(selectItems);
- System.out.println("------/volume/{name}/move--------");
+ log.debug("------/volume/{name}/move--------");
if (datas.size() > 0) {
moveDataService.moveData(datas, form.getSelectNode());
}
diff --git a/src/com/platform/controller/ExcelController.java b/src/com/platform/controller/ExcelController.java
new file mode 100644
index 00000000..d52c4c16
--- /dev/null
+++ b/src/com/platform/controller/ExcelController.java
@@ -0,0 +1,140 @@
+package com.platform.controller;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.RandomAccessFile;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.io.FileUtils;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import com.base.BaseController;
+import com.platform.entities.ResumableInfo;
+import com.platform.entities.ResumableInfoStorage;
+import com.platform.utils.Configs;
+import com.platform.utils.HttpUtils;
+
+@Controller
+@RequestMapping("/fileOperation")
+public class ExcelController extends BaseController {
+
+ // 文件上传处理函数
+ @RequestMapping(value = "/file/upload", method = RequestMethod.POST)
+ public void upload(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+
+ int resumableChunkNumber = HttpUtils.toInt(
+ request.getParameter("resumableChunkNumber"), -1);
+ ResumableInfo info = getResumableInfo(request);
+
+ String requestMethod = request.getMethod();
+ // 处理GET请求
+ if ("GET".equals(requestMethod)) {
+ if (info.uploadedChunks
+ .contains(new ResumableInfo.ResumableChunkNumber(
+ resumableChunkNumber))) {
+ response.getWriter().print("Uploaded."); // This Chunk has been
+ // Uploaded.
+ } else {
+ response.setStatus(HttpServletResponse.SC_NOT_FOUND);
+ }
+ } else if ("POST".equals(requestMethod)) { // 处理POST请求
+ RandomAccessFile raf = new RandomAccessFile(info.resumableFilePath,
+ "rw");
+ // Seek to position
+ raf.seek((resumableChunkNumber - 1)
+ * (long) info.resumableChunkSize);
+
+ // Save to file
+ InputStream is = request.getInputStream();
+ long readed = 0;
+ long content_length = request.getContentLength();
+ byte[] bytes = new byte[1024 * 100];
+ while (readed < content_length) {
+ int r = is.read(bytes);
+ if (r < 0) {
+ break;
+ }
+ raf.write(bytes, 0, r);
+ readed += r;
+ }
+ raf.close();
+
+ // Mark as uploaded.
+ info.uploadedChunks.add(new ResumableInfo.ResumableChunkNumber(
+ resumableChunkNumber));
+ if (info.checkIfUploadFinished()) { // Check if all chunks uploaded,
+ // and change filename
+ ResumableInfoStorage.getInstance().remove(info);
+ response.getWriter().print("All finished.");
+ } else {
+ response.getWriter().print("Upload");
+ }
+ } else { // 不处理非GET/POST请求
+ throw new IllegalStateException("只接受 POST或GET请求");
+ }
+ }
+
+ // 文件下载处理函数
+ @RequestMapping(value = "/file/download")
+ public ResponseEntity download(HttpServletRequest request,
+ HttpServletResponse response) throws IOException {
+ File file = new File(Configs.FILE_DOWNLOAD_PATH);
+ System.out.println(Configs.FILE_DOWNLOAD_PATH);
+ if (file.exists()) {
+ HttpHeaders headers = new HttpHeaders();
+ String fileName = new String(file.getName().getBytes("UTF-8"),
+ "iso-8859-1");// 为了解决中文名称乱码问题
+ headers.setContentDispositionFormData("attachment", fileName);
+ headers.setContentDispositionFormData("attachment", fileName);
+ headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
+ return new ResponseEntity(
+ FileUtils.readFileToByteArray(file), headers,
+ HttpStatus.CREATED);
+ } else {
+ response.setStatus(500);
+ return null;
+ }
+ }
+
+ // 文件上传处理函数
+ private ResumableInfo getResumableInfo(HttpServletRequest request)
+ throws ServletException {
+ String base_dir = Configs.FILE_UPLOAD_PATH;
+
+ int resumableChunkSize = HttpUtils.toInt(
+ request.getParameter("resumableChunkSize"), -1);
+ long resumableTotalSize = HttpUtils.toLong(
+ request.getParameter("resumableTotalSize"), -1);
+ String resumableIdentifier = request
+ .getParameter("resumableIdentifier");
+ String resumableFilename = request.getParameter("resumableFilename");
+ String resumableRelativePath = request
+ .getParameter("resumableRelativePath");
+ // Here we add a ".temp" to every upload file to indicate NON-FINISHED
+ new File(base_dir).mkdir();
+ String resumableFilePath = new File(base_dir, resumableFilename)
+ .getAbsolutePath() + ".temp";
+
+ ResumableInfoStorage storage = ResumableInfoStorage.getInstance();
+
+ ResumableInfo info = storage.get(resumableChunkSize,
+ resumableTotalSize, resumableIdentifier, resumableFilename,
+ resumableRelativePath, resumableFilePath);
+ if (!info.vaild()) {
+ storage.remove(info);
+ throw new ServletException("Invalid request params.");
+ }
+ return info;
+ }
+}
diff --git a/src/com/platform/controller/VolumeController.java b/src/com/platform/controller/VolumeController.java
index a486e2d8..b3f348a7 100644
--- a/src/com/platform/controller/VolumeController.java
+++ b/src/com/platform/controller/VolumeController.java
@@ -15,6 +15,7 @@ import com.base.BaseController;
import com.platform.entities.VolumeEntity;
import com.platform.entities.VolumeForm;
import com.platform.entities.VolumeInitEntity;
+import com.platform.http.gfs.HttpUtils;
import com.platform.service.IVolumeService;
import com.platform.utils.Configs;
import com.platform.utils.ThreadVolume;
@@ -28,26 +29,40 @@ public class VolumeController extends BaseController{
@Resource(name = "volumeService")
private IVolumeService volumeService;
+ HttpUtils ht = new HttpUtils();
@RequestMapping(value = "/volume/update", method = RequestMethod.POST)
@ResponseBody
- public void volumeUpdate(HttpServletRequest res, HttpServletResponse req,
+ public String volumeUpdate(HttpServletRequest res, HttpServletResponse req,
@RequestBody VolumeEntity form) throws Exception {
Configs.CONSOLE_LOGGER.error("/oracle/update");
- volumeService.save(form);
- req.setStatus(200);
+ int rest = volumeService.save(form);
+ if (rest == 1) {
+ req.setStatus(200);
+ }
+ else {
+ req.setStatus(500);
+ }
+ String result = ht.sendPost("gfs/getAllvolume", null);
new ThreadVolumeImm("ThreadVolumeImm-in-VolumeController-update").start();
+ return result;
}
@RequestMapping(value = "/volume/delete", method = RequestMethod.POST)
@ResponseBody
- public void volumeDelete(HttpServletRequest res, HttpServletResponse req,
+ public String volumeDelete(HttpServletRequest res, HttpServletResponse req,
@RequestBody VolumeEntity entity) throws Exception {
- Configs.CONSOLE_LOGGER.error("/oracle/delete");
- volumeService.delete(entity);
- req.setStatus(200);
+ Configs.CONSOLE_LOGGER.error("/volume/delete");
+ int rest = volumeService.delete(entity);
+ if (rest == 1) {
+ req.setStatus(200);
+ }
+ else {
+ req.setStatus(500);
+ }
+ String result = ht.sendPost("gfs/getAllvolume", null);
new ThreadVolumeImm("ThreadVolumeImm-in-VolumeController-delete").start();
+ return result;
}
-
}
diff --git a/src/com/platform/dao/DataInfoMoveTmpDao.java b/src/com/platform/dao/DataInfoMoveTmpDao.java
index 3891c117..fa850933 100644
--- a/src/com/platform/dao/DataInfoMoveTmpDao.java
+++ b/src/com/platform/dao/DataInfoMoveTmpDao.java
@@ -19,6 +19,8 @@ public interface DataInfoMoveTmpDao {
*/
List findAll() throws Exception;
+ DataInfoEntityMoveTmp findById(int id) throws Exception;
+
int update(DataInfoEntityMoveTmp data) throws Exception;
int save(DataInfoEntityMoveTmp data) throws Exception;
diff --git a/src/com/platform/entities/PreDataInfo.java b/src/com/platform/entities/PreDataInfo.java
new file mode 100644
index 00000000..b55f151e
--- /dev/null
+++ b/src/com/platform/entities/PreDataInfo.java
@@ -0,0 +1,431 @@
+package com.platform.entities;
+
+public class PreDataInfo {
+
+ /** 是否更新 */
+ private String isupdate = "-";
+
+ /** 是否采集 */
+ private String iscollect = "否";
+
+ /** 市名称 */
+ private String cityName;
+
+ /** 县区名称 */
+ private String districtName;
+
+ /** 地区编码 */
+ private String areaCode;
+
+ /** 地区级别 */
+ private String areaLevel;
+
+ /** 系统名称 */
+ private String sysName;
+
+ /** 系统版本信息 */
+ private String dataVersion;
+
+ /** 投入使用时间 */
+ private String beginUseTime;
+
+ /** 系统数据功能描述 */
+ private String functionDetails;
+
+ /** 管理部门联系人 */
+ private String departmentConcactor;
+
+ /** 联系方式 */
+ private String concacts;
+
+ /** 信息系统开发商全称 */
+ private String developerFullName;
+
+ /** 数据库类型 */
+ private String dataBaseType;
+
+ /** 数据库版本 */
+ private String dataBaseVersion;
+
+ /** 部门预算管理 */
+ private String departmentBudgetManage;
+
+ /** 预算指标管理 */
+ private String budgetQuotaManage;
+
+ /** 预算执行管理 */
+ private String budgetExecManage;
+
+ /** 总预算会计 */
+ private String totalBudgetAccount;
+
+ /** 决算管理 */
+ private String finalAccountManage;
+
+ /** 报表管理 */
+ private String reportFormManage;
+
+ /** 非税收入管理 */
+ private String nonTaxManage;
+
+ /** 工作统发系统 */
+ private String wageSystem;
+
+ /** 财政经济景气预测与分析 */
+ private String analysisOfFinancialEconomicProsperity;
+
+ /** 政府性债务管理 */
+ private String governmentDebtManage;
+
+ /**
+ * @return the isupdate
+ */
+ public String getIsupdate() {
+ return isupdate;
+ }
+
+ /**
+ * @param isupdate the isupdate to set
+ */
+ public void setIsupdate(String isupdate) {
+ this.isupdate = isupdate;
+ }
+
+ /**
+ * @return the iscollect
+ */
+ public String getIscollect() {
+ return iscollect;
+ }
+
+ /**
+ * @param iscollect the iscollect to set
+ */
+ public void setIscollect(String iscollect) {
+ this.iscollect = iscollect;
+ }
+
+ /**
+ * @return the cityName
+ */
+ public String getCityName() {
+ return cityName;
+ }
+
+ /**
+ * @param cityName the cityName to set
+ */
+ public void setCityName(String cityName) {
+ this.cityName = cityName;
+ }
+
+ /**
+ * @return the districtName
+ */
+ public String getDistrictName() {
+ return districtName;
+ }
+
+ /**
+ * @param districtName the districtName to set
+ */
+ public void setDistrictName(String districtName) {
+ this.districtName = districtName;
+ }
+
+ /**
+ * @return the areaCode
+ */
+ public String getAreaCode() {
+ return areaCode;
+ }
+
+ /**
+ * @param areaCode the areaCode to set
+ */
+ public void setAreaCode(String areaCode) {
+ this.areaCode = areaCode;
+ }
+
+ /**
+ * @return the areaLevel
+ */
+ public String getAreaLevel() {
+ return areaLevel;
+ }
+
+ /**
+ * @param areaLevel the areaLevel to set
+ */
+ public void setAreaLevel(String areaLevel) {
+ this.areaLevel = areaLevel;
+ }
+
+ /**
+ * @return the sysName
+ */
+ public String getSysName() {
+ return sysName;
+ }
+
+ /**
+ * @param sysName the sysName to set
+ */
+ public void setSysName(String sysName) {
+ this.sysName = sysName;
+ }
+
+ /**
+ * @return the dataVersion
+ */
+ public String getDataVersion() {
+ return dataVersion;
+ }
+
+ /**
+ * @param dataVersion the dataVersion to set
+ */
+ public void setDataVersion(String dataVersion) {
+ this.dataVersion = dataVersion;
+ }
+
+ /**
+ * @return the beginUseTime
+ */
+ public String getBeginUseTime() {
+ return beginUseTime;
+ }
+
+ /**
+ * @param beginUseTime the beginUseTime to set
+ */
+ public void setBeginUseTime(String beginUseTime) {
+ this.beginUseTime = beginUseTime;
+ }
+
+ /**
+ * @return the functionDetails
+ */
+ public String getFunctionDetails() {
+ return functionDetails;
+ }
+
+ /**
+ * @param functionDetails the functionDetails to set
+ */
+ public void setFunctionDetails(String functionDetails) {
+ this.functionDetails = functionDetails;
+ }
+
+ /**
+ * @return the departmentConcactor
+ */
+ public String getDepartmentConcactor() {
+ return departmentConcactor;
+ }
+
+ /**
+ * @param departmentConcactor the departmentConcactor to set
+ */
+ public void setDepartmentConcactor(String departmentConcactor) {
+ this.departmentConcactor = departmentConcactor;
+ }
+
+ /**
+ * @return the concacts
+ */
+ public String getConcacts() {
+ return concacts;
+ }
+
+ /**
+ * @param concacts the concacts to set
+ */
+ public void setConcacts(String concacts) {
+ this.concacts = concacts;
+ }
+
+ /**
+ * @return the developerFullName
+ */
+ public String getDeveloperFullName() {
+ return developerFullName;
+ }
+
+ /**
+ * @param developerFullName the developerFullName to set
+ */
+ public void setDeveloperFullName(String developerFullName) {
+ this.developerFullName = developerFullName;
+ }
+
+ /**
+ * @return the dataBaseType
+ */
+ public String getDataBaseType() {
+ return dataBaseType;
+ }
+
+ /**
+ * @param dataBaseType the dataBaseType to set
+ */
+ public void setDataBaseType(String dataBaseType) {
+ this.dataBaseType = dataBaseType;
+ }
+
+ /**
+ * @return the dataBaseVersion
+ */
+ public String getDataBaseVersion() {
+ return dataBaseVersion;
+ }
+
+ /**
+ * @param dataBaseVersion the dataBaseVersion to set
+ */
+ public void setDataBaseVersion(String dataBaseVersion) {
+ this.dataBaseVersion = dataBaseVersion;
+ }
+
+ /**
+ * @return the departmentBudgetManage
+ */
+ public String getDepartmentBudgetManage() {
+ return departmentBudgetManage;
+ }
+
+ /**
+ * @param departmentBudgetManage the departmentBudgetManage to set
+ */
+ public void setDepartmentBudgetManage(String departmentBudgetManage) {
+ this.departmentBudgetManage = departmentBudgetManage;
+ }
+
+ /**
+ * @return the budgetQuotaManage
+ */
+ public String getBudgetQuotaManage() {
+ return budgetQuotaManage;
+ }
+
+ /**
+ * @param budgetQuotaManage the budgetQuotaManage to set
+ */
+ public void setBudgetQuotaManage(String budgetQuotaManage) {
+ this.budgetQuotaManage = budgetQuotaManage;
+ }
+
+ /**
+ * @return the budgetExecManage
+ */
+ public String getBudgetExecManage() {
+ return budgetExecManage;
+ }
+
+ /**
+ * @param budgetExecManage the budgetExecManage to set
+ */
+ public void setBudgetExecManage(String budgetExecManage) {
+ this.budgetExecManage = budgetExecManage;
+ }
+
+ /**
+ * @return the totalBudgetAccount
+ */
+ public String getTotalBudgetAccount() {
+ return totalBudgetAccount;
+ }
+
+ /**
+ * @param totalBudgetAccount the totalBudgetAccount to set
+ */
+ public void setTotalBudgetAccount(String totalBudgetAccount) {
+ this.totalBudgetAccount = totalBudgetAccount;
+ }
+
+ /**
+ * @return the finalAccountManage
+ */
+ public String getFinalAccountManage() {
+ return finalAccountManage;
+ }
+
+ /**
+ * @param finalAccountManage the finalAccountManage to set
+ */
+ public void setFinalAccountManage(String finalAccountManage) {
+ this.finalAccountManage = finalAccountManage;
+ }
+
+ /**
+ * @return the reportFormManage
+ */
+ public String getReportFormManage() {
+ return reportFormManage;
+ }
+
+ /**
+ * @param reportFormManage the reportFormManage to set
+ */
+ public void setReportFormManage(String reportFormManage) {
+ this.reportFormManage = reportFormManage;
+ }
+
+ /**
+ * @return the nonTaxManage
+ */
+ public String getNonTaxManage() {
+ return nonTaxManage;
+ }
+
+ /**
+ * @param nonTaxManage the nonTaxManage to set
+ */
+ public void setNonTaxManage(String nonTaxManage) {
+ this.nonTaxManage = nonTaxManage;
+ }
+
+ /**
+ * @return the wageSystem
+ */
+ public String getWageSystem() {
+ return wageSystem;
+ }
+
+ /**
+ * @param wageSystem the wageSystem to set
+ */
+ public void setWageSystem(String wageSystem) {
+ this.wageSystem = wageSystem;
+ }
+
+ /**
+ * @return the analysisOfFinancialEconomicProsperity
+ */
+ public String getAnalysisOfFinancialEconomicProsperity() {
+ return analysisOfFinancialEconomicProsperity;
+ }
+
+ /**
+ * @param analysisOfFinancialEconomicProsperity the analysisOfFinancialEconomicProsperity to set
+ */
+ public void setAnalysisOfFinancialEconomicProsperity(
+ String analysisOfFinancialEconomicProsperity) {
+ this.analysisOfFinancialEconomicProsperity = analysisOfFinancialEconomicProsperity;
+ }
+
+ /**
+ * @return the governmentDebtManage
+ */
+ public String getGovernmentDebtManage() {
+ return governmentDebtManage;
+ }
+
+ /**
+ * @param governmentDebtManage the governmentDebtManage to set
+ */
+ public void setGovernmentDebtManage(String governmentDebtManage) {
+ this.governmentDebtManage = governmentDebtManage;
+ }
+
+}
diff --git a/src/com/platform/entities/ResumableInfo.java b/src/com/platform/entities/ResumableInfo.java
new file mode 100644
index 00000000..69fb9fbe
--- /dev/null
+++ b/src/com/platform/entities/ResumableInfo.java
@@ -0,0 +1,68 @@
+package com.platform.entities;
+
+import java.io.File;
+import java.util.HashSet;
+
+import com.platform.utils.HttpUtils;
+
+public class ResumableInfo {
+
+ public int resumableChunkSize;
+ public long resumableTotalSize;
+ public String resumableIdentifier;
+ public String resumableFilename;
+ public String resumableRelativePath;
+
+ public static class ResumableChunkNumber {
+ public ResumableChunkNumber(int number) {
+ this.number = number;
+ }
+
+ public int number;
+
+ @Override
+ public boolean equals(Object obj) {
+ return obj instanceof ResumableChunkNumber ? ((ResumableChunkNumber) obj).number == this.number
+ : false;
+ }
+
+ @Override
+ public int hashCode() {
+ return number;
+ }
+ }
+
+ // Chunks uploaded
+ public HashSet uploadedChunks = new HashSet();
+
+ public String resumableFilePath;
+
+ public boolean vaild() {
+ if (resumableChunkSize < 0 || resumableTotalSize < 0
+ || HttpUtils.isEmpty(resumableIdentifier)
+ || HttpUtils.isEmpty(resumableFilename)
+ || HttpUtils.isEmpty(resumableRelativePath)) {
+ return false;
+ } else {
+ return true;
+ }
+ }
+
+ public boolean checkIfUploadFinished() {
+ // check if upload finished
+ int count = (int) Math.ceil(((double) resumableTotalSize)
+ / ((double) resumableChunkSize));
+ for (int i = 1; i < count; i++) {
+ if (!uploadedChunks.contains(new ResumableChunkNumber(i))) {
+ return false;
+ }
+ }
+
+ // Upload finished, change filename.
+ File file = new File(resumableFilePath);
+ String new_path = file.getAbsolutePath().substring(0,
+ file.getAbsolutePath().length() - ".temp".length());
+ file.renameTo(new File(new_path));
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/src/com/platform/entities/ResumableInfoStorage.java b/src/com/platform/entities/ResumableInfoStorage.java
new file mode 100644
index 00000000..d91b95a9
--- /dev/null
+++ b/src/com/platform/entities/ResumableInfoStorage.java
@@ -0,0 +1,64 @@
+package com.platform.entities;
+
+import java.util.HashMap;
+
+public class ResumableInfoStorage {
+
+ // Single instance
+ private ResumableInfoStorage() {
+ }
+
+ private static ResumableInfoStorage sInstance;
+
+ public static synchronized ResumableInfoStorage getInstance() {
+ if (sInstance == null) {
+ sInstance = new ResumableInfoStorage();
+ }
+ return sInstance;
+ }
+
+ // resumableIdentifier -- ResumableInfo
+ private HashMap mMap = new HashMap();
+
+ /**
+ * Get ResumableInfo from mMap or Create a new one.
+ *
+ * @param resumableChunkSize
+ * @param resumableTotalSize
+ * @param resumableIdentifier
+ * @param resumableFilename
+ * @param resumableRelativePath
+ * @param resumableFilePath
+ * @return
+ */
+ public synchronized ResumableInfo get(int resumableChunkSize,
+ long resumableTotalSize, String resumableIdentifier,
+ String resumableFilename, String resumableRelativePath,
+ String resumableFilePath) {
+
+ ResumableInfo info = mMap.get(resumableIdentifier);
+
+ if (info == null) {
+ info = new ResumableInfo();
+
+ info.resumableChunkSize = resumableChunkSize;
+ info.resumableTotalSize = resumableTotalSize;
+ info.resumableIdentifier = resumableIdentifier;
+ info.resumableFilename = resumableFilename;
+ info.resumableRelativePath = resumableRelativePath;
+ info.resumableFilePath = resumableFilePath;
+
+ mMap.put(resumableIdentifier, info);
+ }
+ return info;
+ }
+
+ /**
+ * ɾ³ýResumableInfo
+ *
+ * @param info
+ */
+ public void remove(ResumableInfo info) {
+ mMap.remove(info.resumableIdentifier);
+ }
+}
\ No newline at end of file
diff --git a/src/com/platform/entities/VolumeEntity.java b/src/com/platform/entities/VolumeEntity.java
index b562e9c1..2bac8a04 100644
--- a/src/com/platform/entities/VolumeEntity.java
+++ b/src/com/platform/entities/VolumeEntity.java
@@ -25,10 +25,10 @@ import java.util.List;
public class VolumeEntity {
/** volume总大小 */
- private double allSize;
+ private Double allSize;
/** volume已使用大小 */
- private double usedSize;
+ private Double usedSize;
/** volume名称 */
private String name;
@@ -37,7 +37,7 @@ public class VolumeEntity {
private String path;
/** * exist,正常返回状态Started,Stopped,Created */
- private boolean status;
+ private Boolean status;
private String type;
@@ -50,28 +50,28 @@ public class VolumeEntity {
/**
* @return the allSize
*/
- public double getAllSize() {
+ public Double getAllSize() {
return allSize;
}
/**
* @param allSize the allSize to set
*/
- public void setAllSize(double allSize) {
+ public void setAllSize(Double allSize) {
this.allSize = allSize;
}
/**
* @return the usedSize
*/
- public double getUsedSize() {
+ public Double getUsedSize() {
return usedSize;
}
/**
* @param usedSize the usedSize to set
*/
- public void setUsedSize(double usedSize) {
+ public void setUsedSize(Double usedSize) {
this.usedSize = usedSize;
}
@@ -107,14 +107,14 @@ public class VolumeEntity {
/**
* @return the status
*/
- public boolean isStatus() {
+ public Boolean isStatus() {
return status;
}
/**
* @param status the status to set
*/
- public void setStatus(boolean status) {
+ public void setStatus(Boolean status) {
this.status = status;
}
diff --git a/src/com/platform/entities/VolumeForm.java b/src/com/platform/entities/VolumeForm.java
index 5baab4fe..96002795 100644
--- a/src/com/platform/entities/VolumeForm.java
+++ b/src/com/platform/entities/VolumeForm.java
@@ -1,23 +1,124 @@
package com.platform.entities;
+import java.util.ArrayList;
import java.util.List;
public class VolumeForm {
+//
+// List volumes;
+//
+// /**
+// * @return the volumes
+// */
+// public List getVolumes() {
+// return volumes;
+// }
+//
+// /**
+// * @param volumes the volumes to set
+// */
+// public void setVolumes(List volumes) {
+// this.volumes = volumes;
+// }
+ /** volume名称 */
+ private String name;
- List volumes;
+ /** 挂载点 */
+ private String path;
+
+ /** * exist,正常返回状态Started,Stopped,Created */
+ private boolean status;
+
+ private String type;
+
+ /** volume树形目录 */
+ private List folder = new ArrayList();
+
+ /** volume的 块 */
+ private List brick = new ArrayList();
+
+ /**
+ * @return the name
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * @param name the name to set
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /**
+ * @return the path
+ */
+ public String getPath() {
+ return path;
+ }
+
+ /**
+ * @param path the path to set
+ */
+ public void setPath(String path) {
+ this.path = path;
+ }
+
+ /**
+ * @return the status
+ */
+ public boolean isStatus() {
+ return status;
+ }
+
+ /**
+ * @param status the status to set
+ */
+ public void setStatus(boolean status) {
+ this.status = status;
+ }
+
+ /**
+ * @return the type
+ */
+ public String getType() {
+ return type;
+ }
+
+ /**
+ * @param type the type to set
+ */
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ /**
+ * @return the folder
+ */
+ public List getFolder() {
+ return folder;
+ }
+
+ /**
+ * @param folder the folder to set
+ */
+ public void setFolder(List folder) {
+ this.folder = folder;
+ }
/**
- * @return the volumes
+ * @return the brick
*/
- public List getVolumes() {
- return volumes;
+ public List getBrick() {
+ return brick;
}
/**
- * @param volumes the volumes to set
+ * @param brick the brick to set
*/
- public void setVolumes(List volumes) {
- this.volumes = volumes;
+ public void setBrick(List brick) {
+ this.brick = brick;
}
}
diff --git a/src/com/platform/glusterfs/CheckoutMD5.java b/src/com/platform/glusterfs/CheckoutMD5.java
index 810ec443..33b5d3ad 100644
--- a/src/com/platform/glusterfs/CheckoutMD5.java
+++ b/src/com/platform/glusterfs/CheckoutMD5.java
@@ -6,9 +6,6 @@ import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;
-import org.aspectj.weaver.ast.And;
-
-import com.mysql.jdbc.log.Log;
import com.platform.utils.Constant;
public class CheckoutMD5 {
diff --git a/src/com/platform/glusterfs/SetVolume.java b/src/com/platform/glusterfs/SetVolume.java
index 6d9fc1e2..6d3fb809 100644
--- a/src/com/platform/glusterfs/SetVolume.java
+++ b/src/com/platform/glusterfs/SetVolume.java
@@ -239,14 +239,13 @@ public class SetVolume {
log.info("删除命令执行完毕");
// 删除成功的返回信息是“volume remove-brick: success”
- if (reStrings.get(0).contains("volume remove-brick: success")) {
+ if (reStrings.get(0).contains("success")) {
{
log.info("删除brick成功");
return 1;
}
} else {
log.error("3305 remove brick failed,please check the system");
-
return -5;
}
diff --git a/src/com/platform/http/gfs/HttpClientConstant.java b/src/com/platform/http/gfs/HttpClientConstant.java
new file mode 100644
index 00000000..d5f9cfd4
--- /dev/null
+++ b/src/com/platform/http/gfs/HttpClientConstant.java
@@ -0,0 +1,7 @@
+package com.platform.http.gfs;
+
+public class HttpClientConstant {
+
+ public static String URL_IP_PORT = "http://192.168.0.110:8088/jfinal/";
+
+}
diff --git a/src/com/platform/http/gfs/HttpUtils.java b/src/com/platform/http/gfs/HttpUtils.java
new file mode 100644
index 00000000..070337e1
--- /dev/null
+++ b/src/com/platform/http/gfs/HttpUtils.java
@@ -0,0 +1,85 @@
+package com.platform.http.gfs;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import net.sf.json.JSONObject;
+
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.NameValuePair;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.message.BasicNameValuePair;
+import org.apache.http.util.EntityUtils;
+
+import com.platform.utils.Bean2MapUtils;
+
+public class HttpUtils {
+
+ public String sendPost(String subUrl, Object data) {
+ String resultStr = null;
+ HttpClient client = new DefaultHttpClient();
+ HttpPost post = new HttpPost(HttpClientConstant.URL_IP_PORT + subUrl);
+ try {
+ // 传参
+ List parameters = new ArrayList();
+
+ if (null != data) {
+ // 转 map
+ Map map = Bean2MapUtils.convertBean(data);
+ // 转json
+ JSONObject jsondata = JSONObject.fromObject(map);
+ // 封装数据
+ parameters.add(new BasicNameValuePair("jsondata", jsondata
+ .toString()));
+ parameters.add(new BasicNameValuePair("type", data.getClass()
+ .getName()));
+ // 传参 放入 url的 form中
+ UrlEncodedFormEntity entity = new UrlEncodedFormEntity(parameters,
+ "UTF-8");
+ post.setEntity(entity);
+ }
+
+ // 发送
+ HttpResponse respone = client.execute(post);
+ HttpEntity result = respone.getEntity();
+ if (null != result) {
+ resultStr = EntityUtils.toString(result);
+ }
+// resultMap = Bean2MapUtils.convertBean(result);
+ } catch (Exception e) {
+ System.out.println(e);
+ }
+ return resultStr;
+ }
+
+// public static void main(String[] args) {
+// Date d = new Date();
+// HttpUtils ht = new HttpUtils();
+// BaseForm1 bas = new BaseForm1();
+// bas.setId("12");
+// bas.setName("n12");
+// String rest = ht.sendPost("gfs/getAllvolume", null);
+// if (null != rest) {
+// System.out.println(rest);
+// JSONArray jsondata = JSONArray.fromObject(rest);
+// ArrayList fo = (ArrayList) JSONArray.toCollection(jsondata, VolumeEntity.class);
+// System.err.println(fo);
+// try {
+// System.err.println(Bean2MapUtils.convertBean(fo));
+// } catch (IllegalAccessException | InvocationTargetException
+// | IntrospectionException e) {
+// // TODO Auto-generated catch block
+// e.printStackTrace();
+// }
+// }
+//
+// Date r = new Date();
+// System.err.println(r.getTime() - d.getTime());
+// }
+
+}
diff --git a/src/com/platform/oracle/OracleConnector.java b/src/com/platform/oracle/OracleConnector.java
index 16f9d09a..236f5a66 100644
--- a/src/com/platform/oracle/OracleConnector.java
+++ b/src/com/platform/oracle/OracleConnector.java
@@ -26,23 +26,30 @@ public class OracleConnector {
public synchronized static Connection ConnectionBuilder(String url, String user,
- String password, OracleConnectorParams oc) {
+ String password, OracleConnectorParams oc) throws CustomException {
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() + "]");
if (null != oc) {
FileOperateHelper.fileWrite(Configs.EXTRACT_LOG_LOCALTION
+ oc.getName(), "创建oracle连接失败: [" + e.getMessage() + "]\r\n");
}
+ throw new CustomException(Custom4exception.OracleSQL_Except, e);
}
return conn;
}
public synchronized static boolean canConnect(String url, String user, String password) {
- return (null != ConnectionBuilder(url, user, password, null));
+ Connection result = null;
+ try {
+ result = ConnectionBuilder(url, user, password, null);
+ } catch (CustomException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ return (null != result);
}
public synchronized static ResultSet getSQLExecResultSet(Connection conn, String sql, String filePath) {
@@ -65,7 +72,13 @@ public class OracleConnector {
public synchronized static ResultSet getSQLExecResultSet(String url, String user,
String password, String sql, String filePath) {
- return getSQLExecResultSet(ConnectionBuilder(url, user, password, null), sql, filePath);
+ ResultSet result = null;
+ try {
+ result = getSQLExecResultSet(ConnectionBuilder(url, user, password, null), sql, filePath);
+ } catch (CustomException e) {
+ new CustomException(Custom4exception.OracleSQL_Except, e);
+ }
+ return result;
}
/**
@@ -91,7 +104,7 @@ public class OracleConnector {
return flag;
}
/**
- * 执行对oracle数据库的增、删
+ * 执行对oracle数据库的返回集合数据的sql
* @param conn
* @param sql
* @return true:执行结果大于1,即有数据 是否执行成功
diff --git a/src/com/platform/service/DataInfoServiceImp.java b/src/com/platform/service/DataInfoServiceImp.java
index b6613af1..17a0a2b8 100644
--- a/src/com/platform/service/DataInfoServiceImp.java
+++ b/src/com/platform/service/DataInfoServiceImp.java
@@ -53,7 +53,7 @@ public class DataInfoServiceImp implements DataInfoService {
list = Arrays.asList(querys);
}
//遍历 list
- for (String ss : alllist) {
+ for (String ss : list) {
ss = ss.trim();
alllist.add(ss);
}
diff --git a/src/com/platform/service/IOracleExtractService.java b/src/com/platform/service/IOracleExtractService.java
index 77cabccd..0bdcef29 100644
--- a/src/com/platform/service/IOracleExtractService.java
+++ b/src/com/platform/service/IOracleExtractService.java
@@ -9,6 +9,8 @@ import com.platform.entities.OracleConnectorParams;
public interface IOracleExtractService {
+// public boolean extractOracle(String name, List dataInfos, GatherOracleInfo oracleConnect) throws Exception;
+// public boolean extractOracle(String name, List dataInfos, Map oracleConnect) throws Exception;
/** 抽取数据库
* @param name
* @param dataInfo //采集库连接参数
@@ -16,7 +18,13 @@ public interface IOracleExtractService {
* @return
* @throws Exception
*/
-// public boolean extractOracle(String name, List dataInfos, GatherOracleInfo oracleConnect) throws Exception;
-// public boolean extractOracle(String name, List dataInfos, Map oracleConnect) throws Exception;
public boolean extractOracle(String name, List dataInfo, GatherOracleInfo oracleConnect) throws Exception;
+
+ /** 测试链接汇总数据库
+ * @param oracleConnect
+ * @return true:能连接
+ * @throws Exception
+ */
+ public boolean isConnectTotalOracle(GatherOracleInfo oracleConnect) throws Exception;
+
}
diff --git a/src/com/platform/service/OracleExtractHelper.java b/src/com/platform/service/OracleExtractHelper.java
index d2e688a9..6082873e 100644
--- a/src/com/platform/service/OracleExtractHelper.java
+++ b/src/com/platform/service/OracleExtractHelper.java
@@ -3,6 +3,7 @@ package com.platform.service;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
+import java.sql.Statement;
import com.base.Custom4exception;
import com.base.CustomException;
@@ -150,8 +151,8 @@ public class OracleExtractHelper {
* @param conn 汇总库连接
* @param oc 采集库
*/
- public void extractColleDB(Connection conn, OracleConnectorParams oc) {
- String strTUser = oc.getName() + Configs.TABLE_SUFFIX;
+ public void extractColleDB(Connection conn, OracleConnectorParams oc, GatherOracleInfo totalOracle) {
+ String strTUser = oc.getName() + totalOracle.getSuffix();
String sql = "SELECT 'create table "
+ strTUser
+ ".J'|| substr(t.OWNER||'_'||t.TABLE_NAME,0,29)||' as select * from '||t.OWNER||'.'||t.TABLE_NAME||"
@@ -183,4 +184,21 @@ public class OracleExtractHelper {
}
}
+
+ /** 测试是否能否连接上?
+ * @return true:能连接上
+ */
+ public boolean testConnect(Connection conn) {
+ String testSql = "select count(*) from user_tables";
+ boolean flag = false;
+ try {
+ Statement statement = conn.createStatement();
+ if(statement.executeUpdate(testSql) > 0)
+ flag = true;
+ } catch (SQLException e) {
+ flag = false;
+ new CustomException(Custom4exception.OracleSQL_Except, e, testSql);
+ }
+ return flag;
+ }
}
diff --git a/src/com/platform/service/OracleExtractService.java b/src/com/platform/service/OracleExtractService.java
index 23df97ce..d6745b6e 100644
--- a/src/com/platform/service/OracleExtractService.java
+++ b/src/com/platform/service/OracleExtractService.java
@@ -2,6 +2,7 @@ package com.platform.service;
+import com.base.CustomException;
import com.platform.entities.OracleConnectorParams;
import com.platform.oracle.OracleConnector;
import com.platform.utils.Configs;
@@ -13,7 +14,11 @@ public class OracleExtractService extends Thread implements Runnable {
public OracleExtractService(OracleConnectorParams ocp){
this.ocp=ocp;
String url = "";
- this.conn=OracleConnector.ConnectionBuilder(url, Configs.GATHER_USER_NAME, Configs.GATHER_USER_PASSWORD, null);
+ try {
+ this.conn=OracleConnector.ConnectionBuilder(url, Configs.GATHER_USER_NAME, Configs.GATHER_USER_PASSWORD, null);
+ } catch (CustomException e) {
+ this.conn = null;
+ }
}
@Override
public void run() {
diff --git a/src/com/platform/service/impl/GfsServiceImpl.java b/src/com/platform/service/impl/GfsServiceImpl.java
index b4088827..670d756a 100644
--- a/src/com/platform/service/impl/GfsServiceImpl.java
+++ b/src/com/platform/service/impl/GfsServiceImpl.java
@@ -128,8 +128,8 @@ public class GfsServiceImpl implements IGfsService {
if (null != path && path.size() > 0) {
volume.setPath(path.get(0));
}
- volume.setAllSize(volumeInfo.getVolumeAvailableSize(volumeName));
- volume.setUsedSize(volumeInfo.getVolumeUseSize(volumeName));
+ volume.setAllSize((double) volumeInfo.getVolumeAvailableSize(volumeName));
+ volume.setUsedSize((double) volumeInfo.getVolumeUseSize(volumeName));
// volume.setBrick(brick);
if (null != volume.getPath()) {
List list = new ArrayList();
diff --git a/src/com/platform/service/impl/MoveDataServiceImpl.java b/src/com/platform/service/impl/MoveDataServiceImpl.java
index b3aca0e8..bd0facdb 100644
--- a/src/com/platform/service/impl/MoveDataServiceImpl.java
+++ b/src/com/platform/service/impl/MoveDataServiceImpl.java
@@ -103,15 +103,22 @@ public class MoveDataServiceImpl implements IMoveDataService {
}
List moveList = new ArrayList();
for (DataInfoEntity dataInfoEntity : data) {
+ //(根据迁移路径判断)存在迁移过的数据,不允许迁移,先必须删除记录
if (existIds.contains(dataInfoEntity.getDataPath())) {
continue;
}
+ // 数据的id不存在的数据不允许迁移
if (dataInfoEntity.getId() == 0) {
continue;
}
+ // (根据数据的id判断)存在迁移过的数据,不允许迁移,先必须删除记录
if (fkIds.contains(dataInfoEntity.getId())) {
continue;
}
+ // 迁移数据的位置在原数据路径或者原数据父目录及其上,不允许迁移
+ if (dataInfoEntity.getDataPath().contains(node.getPath())) {
+ continue;
+ }
// TODO 正则:取出 data 的后面 的 路径,eg: XXX/320198_16/1,or
// XXX/320122KFQ_15/1)
Matcher matcher = pattern.matcher(dataInfoEntity.getDataPath());
diff --git a/src/com/platform/service/impl/OracleExtractServiceImpl.java b/src/com/platform/service/impl/OracleExtractServiceImpl.java
index a53bef9b..8b83f442 100644
--- a/src/com/platform/service/impl/OracleExtractServiceImpl.java
+++ b/src/com/platform/service/impl/OracleExtractServiceImpl.java
@@ -80,7 +80,7 @@ public class OracleExtractServiceImpl implements IOracleExtractService {
oracleExtract.createDBLink(conn, collectOracle); //创建dblink
oracleExtract.createTableSpace(conn, collectOracle, oracleModel); //创建表空间
oracleExtract.createUser(conn, collectOracle, oracleModel);//创建用户并授权
- oracleExtract.extractColleDB(conn, collectOracle);//执行抽取
+ oracleExtract.extractColleDB(conn, collectOracle, oracleModel);//执行抽取
// client.updateOrAddReplicasLabelById(collectOracle.getName(), "isExtract", "2"); //更新oracle汇总状态,0标示为未汇总,1标示汇总中,2标示汇总完成
cmd = "kubectl label --overwrite rc "
+ replicasName + " isExtract=2";
@@ -100,6 +100,22 @@ public class OracleExtractServiceImpl implements IOracleExtractService {
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;
diff --git a/src/com/platform/service/impl/VolumeServiceImpl.java b/src/com/platform/service/impl/VolumeServiceImpl.java
index 1884d8c9..4527f603 100644
--- a/src/com/platform/service/impl/VolumeServiceImpl.java
+++ b/src/com/platform/service/impl/VolumeServiceImpl.java
@@ -33,6 +33,7 @@ public class VolumeServiceImpl implements IVolumeService {
@Override
public int save(VolumeEntity entity) throws Exception {
+ int rest = 1;
//createVolume("lili_test1", 0, "distributed", bricksToCreate, "/home/lili_test1_point")
List result = gfsService.getAllVolumes();
List addVolumes = new ArrayList();
@@ -76,7 +77,10 @@ public class VolumeServiceImpl implements IVolumeService {
//创建volume
if (bristr.size() > 0) {
- volumeService.createVolume(add.getName(), 0, "distributed", bristr, add.getPath());
+ int createreslt = volumeService.createVolume(add.getName(), 0, "distributed", bristr, add.getPath());
+ if (createreslt != 1) {
+ rest = createreslt;
+ }
}
//记录volume信息,
VolumeInitEntity volInSql = new VolumeInitEntity();
@@ -107,7 +111,10 @@ public class VolumeServiceImpl implements IVolumeService {
newKeys.addAll(newBrickKeys);
// 新增brick s,
if (newKeys.size() > 0) {
- volumeService.addBrickVolume(entity.getName(), newKeys, 0, "distributed");
+ int createreslt = volumeService.addBrickVolume(entity.getName(), newKeys, 0, "distributed");
+ if (createreslt != 1) {
+ rest = createreslt;
+ }
}
//待删除的Brick的 Keys
for (Brick brick : newBricks) {
@@ -120,7 +127,10 @@ public class VolumeServiceImpl implements IVolumeService {
deleteKeys.addAll(serverBrickKeys);
// 删除brick s,
if (deleteKeys.size() > 0) {
- volumeService.deleteBrickVolume(entity.getName(), deleteKeys, 0, "distributed");
+ int createreslt = volumeService.deleteBrickVolume(entity.getName(), deleteKeys, 0, "distributed");
+ if (createreslt != 1) {
+ rest = createreslt;
+ }
}
// ---对比volume信息--原数据有该volume,则对比brick信息,确认那几个brick是新增的,那几个brick是待删除的----- end
@@ -134,7 +144,7 @@ public class VolumeServiceImpl implements IVolumeService {
}
}
}
- return 0;
+ return rest;
}
@Override
@@ -142,9 +152,9 @@ public class VolumeServiceImpl implements IVolumeService {
if (null == entity.getName() || "".equals(entity.getName())) {
return -1;
}
- volumeService.deleteVolume(entity.getName());
+ int rest = volumeService.deleteVolume(entity.getName());
volumeDao.remove(entity.getName());
- return 0;
+ return rest;
}
@Override
diff --git a/src/com/platform/service/thread/ThreadExtractOracle.java b/src/com/platform/service/thread/ThreadExtractOracle.java
new file mode 100644
index 00000000..17f10014
--- /dev/null
+++ b/src/com/platform/service/thread/ThreadExtractOracle.java
@@ -0,0 +1,36 @@
+package com.platform.service.thread;
+
+import com.base.Custom4exception;
+import com.base.CustomException;
+import com.platform.entities.oracleForm;
+import com.platform.service.IOracleExtractService;
+
+/** oracle汇总库抽取
+ * @author chen
+ *
+ */
+public class ThreadExtractOracle extends Thread {
+
+ private IOracleExtractService OracleExtract;
+
+ private oracleForm form;
+
+ /** oracle汇总库抽取
+ * @param form
+ * @param OracleExtract
+ */
+ public ThreadExtractOracle(oracleForm form, IOracleExtractService OracleExtract) {
+ this.OracleExtract = OracleExtract;
+ this.form = form;
+ }
+
+ @Override
+ public void run() {
+ try {
+ OracleExtract.extractOracle(form.getName(), form.getInneed(),form.getTarget());
+ } catch (Exception e) {
+ new CustomException(Custom4exception.threadVolume_Oracle_Except,e,form,OracleExtract);
+ }
+ }
+
+}
diff --git a/src/com/platform/service/thread/ThreadGainOracleConnect.java b/src/com/platform/service/thread/ThreadGainOracleConnect.java
new file mode 100644
index 00000000..1485801a
--- /dev/null
+++ b/src/com/platform/service/thread/ThreadGainOracleConnect.java
@@ -0,0 +1,55 @@
+package com.platform.service.thread;
+
+import com.base.Custom4exception;
+import com.base.CustomException;
+import com.platform.entities.oracleForm;
+import com.platform.service.IOracleExtractService;
+
+/** 测试是否能获得oracle连接
+ * @author chen
+ *
+ */
+public class ThreadGainOracleConnect extends Thread {
+
+ private boolean isConnect = false;
+
+ private boolean isExcept = false;
+
+ private IOracleExtractService OracleExtract;
+
+ private oracleForm form;
+
+ /** 测试是否能获得oracle连接
+ * @param form
+ * @param OracleExtract
+ */
+ public ThreadGainOracleConnect(oracleForm form, IOracleExtractService OracleExtract) {
+ this.form = form;
+ this.OracleExtract= OracleExtract;
+ }
+
+ @Override
+ public void run() {
+ try {
+ this.isConnect = OracleExtract.isConnectTotalOracle(form.getTarget());
+ } catch (Exception e) {
+ isExcept = true;
+ new CustomException(Custom4exception.connect_Oracle_Except,e,form,OracleExtract);
+ }
+ }
+
+ /**
+ * @return the isConnect true:能连接
+ */
+ public boolean isConnect() {
+ return isConnect;
+ }
+
+ /**
+ * @return the isExcept
+ */
+ public boolean isExcept() {
+ return isExcept;
+ }
+
+}
diff --git a/src/com/platform/service/thread/ThreadMoveData.java b/src/com/platform/service/thread/ThreadMoveData.java
index 569a62b0..9a0e580c 100644
--- a/src/com/platform/service/thread/ThreadMoveData.java
+++ b/src/com/platform/service/thread/ThreadMoveData.java
@@ -121,34 +121,38 @@ public class ThreadMoveData{
realRate = (dstSize*100 / srcSize );
dataMove.setLastTime(DateForm.date2StringBysecond(new Date()));
}
- if (srcSize == dstSize) {
+ if (srcSize == dstSize || realRate > 100) {
realRate = 100;
}
dataMove.setRate((int) realRate);
}
if("1".equals(dataMove.getCompleteStatus()) && dataMove.getRate() > 0){
//传输完毕:进行校验
- if (realRate == 100) {
+ if (realRate >= 100) {
int difSize = (int) (srcSizeTemp-dstSize);
Thread.sleep(10*difSize);
//TODO 查看当前拷贝目录进程是否结束?
- //TODO 进行MD5校验
+ // 进行MD5校验
int resl = check.checkoutMD5Folder(dataMove.getDataPath(), dataMove.getDstPath());
- //TODO 校验成功--则删除数据库记录
+ // 校验成功--则增加数据库记录
if(resl == 1){
- //校验成功--修改 数据库记录--
- dataMove.setCompleteStatus("2");
- dataMove.setLastTime(DateForm.date2StringBysecond(new Date()));
- dataInfoMoveTmpDao.update(dataMove);
- //TODO 新增 一条数据-到-dataInfo
- DataInfoEntity data = (DataInfoEntity) Bean2MapUtils.convertMap(
- DataInfoEntity.class, Bean2MapUtils.convertBean(dataMove));
- data.setDataPath(dataMove.getDstPath());
- data.setVolumeIp(dataMove.getDstVolumeIp());
- data.setVolumePath(dataMove.getDstVolumePath());
- data.setVolumeIp(dataMove.getVolumeIp());
- data.setId(0);
- dataInfoDao.save(data);
+ // 判断 迁移数据的status是否改为 2
+ DataInfoEntityMoveTmp movetmp = dataInfoMoveTmpDao.findById(dataMove.getId());
+ if (null != movetmp && !"2".equals(movetmp.getCompleteStatus())) {
+ //校验成功--修改 数据库记录--
+ dataMove.setCompleteStatus("2");
+ dataMove.setLastTime(DateForm.date2StringBysecond(new Date()));
+ dataInfoMoveTmpDao.update(dataMove);
+ //TODO 新增 一条数据-到-dataInfo
+ DataInfoEntity data = (DataInfoEntity) Bean2MapUtils.convertMap(
+ DataInfoEntity.class, Bean2MapUtils.convertBean(dataMove));
+ data.setDataPath(dataMove.getDstPath());
+ data.setVolumeIp(dataMove.getDstVolumeIp());
+ data.setVolumePath(dataMove.getDstVolumePath());
+ data.setVolumeIp(dataMove.getVolumeIp());
+ data.setId(0);
+ dataInfoDao.save(data);
+ }
}
else {
// 3:表示 迁移失败
diff --git a/src/com/platform/utils/Configs.java b/src/com/platform/utils/Configs.java
index c3754d5c..e2b3a6a6 100644
--- a/src/com/platform/utils/Configs.java
+++ b/src/com/platform/utils/Configs.java
@@ -49,4 +49,8 @@ public class Configs {
public static String GATHER_TABLESPACE_PATH=""; //表空间路径
public static String GATHER_TABLE_PASSWORD="1"; //登入密码
+
+ public static String FILE_UPLOAD_PATH="";
+
+ public static String FILE_DOWNLOAD_PATH="";
}
diff --git a/src/com/platform/utils/ConfigsLoader.java b/src/com/platform/utils/ConfigsLoader.java
index 342f493d..802695d2 100644
--- a/src/com/platform/utils/ConfigsLoader.java
+++ b/src/com/platform/utils/ConfigsLoader.java
@@ -6,6 +6,8 @@ import java.util.Properties;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
+import com.platform.http.gfs.HttpClientConstant;
+
import ch.ethz.ssh2.Connection;
public class ConfigsLoader implements ServletContextListener {
@@ -64,11 +66,15 @@ public class ConfigsLoader implements ServletContextListener {
Configs.GATHER_TABLE_PASSWORD=properties.getProperty("gather-table-user-password");
+ Configs.FILE_UPLOAD_PATH = properties.getProperty("file_upload_path");
+
+ Configs.FILE_DOWNLOAD_PATH = properties.getProperty("file_download_path");
+
+ HttpClientConstant.URL_IP_PORT = properties.getProperty("HttpClientConstant_URL_IP_PORT").trim();
Constant.hostIp=properties.getProperty("gfs_control_ip").trim();
Constant.rootPasswd=properties.getProperty("gfs_control_rootPassWd").trim();
Constant.ganymedSSH = new GanymedSSH(Constant.hostIp, Constant.rootUser, Constant.rootPasswd, Constant.port);
-
}
public ConfigPropertyReader getcReader() {
diff --git a/src/com/platform/utils/Constant.java b/src/com/platform/utils/Constant.java
index 1f283d67..59149697 100644
--- a/src/com/platform/utils/Constant.java
+++ b/src/com/platform/utils/Constant.java
@@ -40,7 +40,7 @@ public class Constant {
/**
* volume 获取的线程休眠时间
*/
- public final static int get_volume_sleep_time = 10000;
+ public final static int get_volume_sleep_time = 5000;
/**
* volume 获取的线程休眠时间
diff --git a/src/com/platform/utils/HttpUtils.java b/src/com/platform/utils/HttpUtils.java
new file mode 100644
index 00000000..5ae31539
--- /dev/null
+++ b/src/com/platform/utils/HttpUtils.java
@@ -0,0 +1,44 @@
+package com.platform.utils;
+
+public class HttpUtils {
+
+ public static boolean isEmpty(String value) {
+ return value == null || "".equals(value);
+ }
+ /**
+ * Convert String to long
+ * @param value
+ * @param def default value
+ * @return
+ */
+ public static long toLong(String value, long def) {
+ if (isEmpty(value)) {
+ return def;
+ }
+
+ try {
+ return Long.valueOf(value);
+ } catch (NumberFormatException e) {
+ e.printStackTrace();
+ return def;
+ }
+ }
+
+ /**
+ * Convert String to int
+ * @param value
+ * @param def default value
+ * @return
+ */
+ public static int toInt(String value, int def) {
+ if (isEmpty(value)) {
+ return def;
+ }
+ try {
+ return Integer.valueOf(value);
+ } catch (NumberFormatException e) {
+ e.printStackTrace();
+ return def;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/com/platform/utils/ThreadVolume.java b/src/com/platform/utils/ThreadVolume.java
index 9023ad79..da84dca8 100644
--- a/src/com/platform/utils/ThreadVolume.java
+++ b/src/com/platform/utils/ThreadVolume.java
@@ -27,6 +27,9 @@ public class ThreadVolume extends Thread {
private ClusterInfo cluster = new ClusterInfo();
+ /** gfs目录树形展示 */
+ private GetTreeData gfsTree = new GetTreeData();
+
public ThreadVolume() {
// TODO Auto-generated constructor stub
}
@@ -41,9 +44,6 @@ public class ThreadVolume extends Thread {
}
}
- /** gfs目录树形展示 */
- private GetTreeData gfsTree = new GetTreeData();
-
@Override
public void run() {
super.run();
@@ -84,17 +84,19 @@ public class ThreadVolume extends Thread {
List path = volumeInfo
.getVolumeMountPoint(volumeName);
// 默认加载第一个路径
- for (String one : path) {
- if (!one.contains("df")) {
- volume.setPath(one);
+ if (null != path) {
+ for (String one : path) {
+ if (!one.contains("df")) {
+ volume.setPath(one);
+ }
}
}
if (null == volume.getPath()) {
volume.setPath("");
}
- volume.setAllSize(volumeInfo
+ volume.setAllSize((double) (volumeInfo
.getVolumeAvailableSize(volumeName)
- + volumeInfo.getVolumeUseSize(volumeName));
+ + volumeInfo.getVolumeUseSize(volumeName)));
// 状态Started,Stopped,Created
String status = volumeInfo.getVolumeStatus(volumeName);
if ("Started".equals(status)) {
@@ -102,7 +104,7 @@ public class ThreadVolume extends Thread {
} else {
volume.setStatus(false);
}
- volume.setUsedSize(volumeInfo.getVolumeUseSize(volumeName));
+ volume.setUsedSize((double) volumeInfo.getVolumeUseSize(volumeName));
volume.setType(volumeInfo.getVolumeType(volumeName));
// TODO 查询brick--
// 返回 ip:path
diff --git a/src/com/platform/utils/excelUtils/ExcelOperation.java b/src/com/platform/utils/excelUtils/ExcelOperation.java
new file mode 100644
index 00000000..f962c28b
--- /dev/null
+++ b/src/com/platform/utils/excelUtils/ExcelOperation.java
@@ -0,0 +1,126 @@
+package com.platform.utils.excelUtils;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.lang.reflect.Field;
+import java.util.Date;
+import java.util.List;
+
+import org.apache.poi.hssf.usermodel.HSSFCell;
+import org.apache.poi.hssf.usermodel.HSSFCellStyle;
+import org.apache.poi.hssf.util.HSSFColor;
+import org.apache.poi.xssf.usermodel.XSSFCell;
+import org.apache.poi.xssf.usermodel.XSSFCellStyle;
+import org.apache.poi.xssf.usermodel.XSSFFont;
+import org.apache.poi.xssf.usermodel.XSSFRow;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.core.io.ClassPathResource;
+
+import com.base.Constant;
+
+/**
+ * @author chen
+ * excel2007操作
+ */
+public class ExcelOperation {
+
+ /** 读取excel模板
+ * @param templateFilePath
+ * @param list list中对象的属性顺序和模板的列顺序一一对应
+ * @return HSSFWorkbook
+ * @throws FileNotFoundException
+ * @throws IOException
+ * @throws IllegalAccessException
+ * @throws IllegalArgumentException
+ */
+ public static XSSFWorkbook writeExcelTemplate(String templateFilePath, List list) throws FileNotFoundException, IOException, IllegalArgumentException, IllegalAccessException {
+// InputStreamReader in= new InputStreamReader(Resource.class.getResourceAsStream(templateFilePath), "UTF-8");
+ ClassPathResource res = new ClassPathResource(templateFilePath);
+ //此处 耗时太久:(原因:excel 2007 以后采用的方式不同造成的建议升级 到 poi 3.15以上)
+ Date date = new Date();
+ XSSFWorkbook workbook = new XSSFWorkbook(res.getInputStream());
+ Date date2 = new Date();
+ System.out.println(" new XSSFWorkbook: "+ (date2.getTime()-date.getTime()));
+
+ //从第几行 填充数据
+ int excelInitRow = Constant.EXCEL_TEMPLATE_INIT_ROW;
+ //读取工作表
+ XSSFSheet sheet = workbook.getSheetAt(0);//getSheet("Sheet1");
+ XSSFRow row;
+ XSSFCell cell = null;
+ int size = list.size();
+ int lengths = 0;
+ XSSFCellStyle style = getStyle(workbook);
+ for (int i = 0; i < size; i++) {
+ row = sheet.createRow(excelInitRow);
+ Object obj = list.get(i);
+ Field[] fields = obj.getClass().getDeclaredFields();
+ lengths = fields.length;
+ for (int j = 0; j < lengths; j++) {
+ fields[j].setAccessible(true);
+ cell = row.createCell((short) j,HSSFCellStyle.ALIGN_CENTER);
+ cell.setCellType(HSSFCell.CELL_TYPE_STRING);
+ Object value = fields[j].get(obj);
+ if (null != value) {
+ cell.setCellValue(value.toString());
+ }
+ else {
+ cell.setCellValue("");
+ }
+ cell.setCellStyle(style);
+ }
+ //下一行
+ excelInitRow++;
+ }
+ for (int k = 0; k < lengths; k++) {
+ sheet.autoSizeColumn(k);
+ int width = sheet.getColumnWidth(k);
+ if (width < 1600) {
+ sheet.setColumnWidth(k, 1600);
+ }else {
+ sheet.setColumnWidth(k, width + 1000);
+ }
+ }
+ return workbook;
+ }
+
+ private static XSSFCellStyle getStyle(XSSFWorkbook workbook) {
+// 设置字体;
+ XSSFFont font = workbook.createFont();
+ //设置字体大小;
+ font.setFontHeightInPoints((short)9);
+ //设置字体名字;
+ font.setFontName("Courier New");
+ //font.setItalic(true);
+ //font.setStrikeout(true);
+// 设置样式;
+ XSSFCellStyle style = workbook.createCellStyle();
+ //设置底边框;
+ style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
+ //设置底边框颜色;
+ style.setBottomBorderColor(HSSFColor.BLACK.index);
+ //设置左边框;
+ style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
+ //设置左边框颜色;
+ style.setLeftBorderColor(HSSFColor.BLACK.index);
+ //设置右边框;
+ style.setBorderRight(HSSFCellStyle.BORDER_THIN);
+ //设置右边框颜色;
+ style.setRightBorderColor(HSSFColor.BLACK.index);
+ //设置顶边框;
+ style.setBorderTop(HSSFCellStyle.BORDER_THIN);
+ //设置顶边框颜色;
+ style.setTopBorderColor(HSSFColor.BLACK.index);
+ //在样式用应用设置的字体;
+ style.setFont(font);
+ //设置自动换行;
+ style.setWrapText(false);
+ //设置水平对齐的样式为居中对齐;
+ style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
+ //设置垂直对齐的样式为居中对齐;
+ style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
+ return style;
+ }
+
+}
diff --git a/test/com/platform/test/ExcelTest.java b/test/com/platform/test/ExcelTest.java
new file mode 100644
index 00000000..8988970c
--- /dev/null
+++ b/test/com/platform/test/ExcelTest.java
@@ -0,0 +1,63 @@
+package com.platform.test;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.junit.Test;
+
+import com.base.Constant;
+import com.platform.entities.PreDataInfo;
+import com.platform.utils.excelUtils.ExcelOperation;
+
+public class ExcelTest {
+
+ @Test
+ public void writeData() {
+ Date date = new Date();
+ PreDataInfo info = new PreDataInfo();
+ info.setAnalysisOfFinancialEconomicProsperity("否");
+ info.setAreaCode("321167");
+ info.setBeginUseTime("201107");
+ info.setFunctionDetails("这是一个神奇的功能");
+ List list = new ArrayList();
+ for (int i = 0; i < 400; i++) {
+ list.add(info);
+ }
+
+ XSSFWorkbook result = null;
+ try {
+ result = ExcelOperation.writeExcelTemplate(Constant.SYSTEM_INFO_EXCEL_TEMPLATE_FIEL_PATH, list);
+ } catch (IllegalArgumentException
+ | IllegalAccessException | IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ System.out.println("----"+result);
+
+ try {
+ File f = new File("D:/test/4.xlsx");
+ FileOutputStream fileOut = null;
+ if (f.exists()) {
+ fileOut = new FileOutputStream(f);
+ result.write(fileOut);
+ fileOut.close();
+ }
+ else {
+ System.out.println("no file");
+ }
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ Date date2 = new Date();
+ System.out.println("complete: "+ (date2.getTime()-date.getTime()));
+ }
+
+}