迁移数据

web_backend_develope
chenlw 9 years ago
parent c95d62d690
commit 6e2cd66eb6

@ -1,9 +1,7 @@
package com.platform.service.impl;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;

@ -89,8 +89,7 @@ public class ThreadMoveData{
long nowTime = new Date().getTime();
long timelong = nowTime - DateForm.string2DateBysecond(dataMove.getLastTime()).getTime();
if (timelong > 1000*60*20) {
dataMove.setCompleteStatus("3");
dataInfoMoveTmpDao.update(dataMove);
doMd5(srcSizeTemp, dstSize, dataMove);
}
//正在上传的个数。
moveFileCurrNum++;
@ -129,36 +128,8 @@ public class ThreadMoveData{
if("1".equals(dataMove.getCompleteStatus()) && dataMove.getRate() > 0){
//传输完毕:进行校验
if (realRate >= 100) {
int difSize = (int) (srcSizeTemp-dstSize);
Thread.sleep(10*difSize);
//TODO 查看当前拷贝目录进程是否结束?
// 进行MD5校验
int resl = check.checkoutMD5Folder(dataMove.getDataPath(), dataMove.getDstPath());
// 校验成功--则增加数据库记录
if(resl == 1){
// 判断 迁移数据的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:表示 迁移失败
dataMove.setLastTime(DateForm.date2StringBysecond(new Date()));
dataMove.setCompleteStatus("3");
}
//TODO
doMd5(srcSizeTemp, dstSize, dataMove);
}
dataMove.setLastTime(DateForm.date2StringBysecond(new Date()));
dataInfoMoveTmpDao.update(dataMove);
@ -178,15 +149,16 @@ public class ThreadMoveData{
if ("0".equals(next2move.getCompleteStatus())) {
//待迁移的数据 -- 开始迁移
// 末尾 含有 /
Pattern pattern2 = Pattern.compile("\\/$");
String dstPath = next2move.getDataPath();
Pattern pattern2 = Pattern.compile("\\d+\\/$");
String dstPath = next2move.getDstPath();
Matcher matcher2 = pattern2.matcher(dstPath);
//去掉 最后 的 / 符合
//去掉 最后 的 数字 +/ 符合
if (matcher2.find()) {
dstPath = dstPath.substring(0, dstPath.length()-1);
String removeStr = matcher2.group();
dstPath = dstPath.replace(removeStr, "");
}
//数据迁移。
copy.copyFolder(dstPath+"/app", next2move.getDstPath());
copy.copyFolder(next2move.getDataPath(), dstPath);
// "1" :正在上传0等待 迁移, 2成功 3失败
next2move.setCompleteStatus("1");
next2move.setLastTime(DateForm.date2StringBysecond(new Date()));
@ -205,5 +177,44 @@ public class ThreadMoveData{
}
}
private void doMd5(long srcSizeTemp, long dstSize, DataInfoEntityMoveTmp dataMove) throws Exception {
int difSize = (int) (srcSizeTemp-dstSize);
if (difSize < 1) {
difSize = 1;
}
Thread.sleep(10*difSize);
//TODO 查看当前拷贝目录进程是否结束?
// 进行MD5校验
int resl = check.checkoutMD5Folder(dataMove.getDataPath(), dataMove.getDstPath());
// 校验成功--则增加数据库记录
if(resl == 1){
// 判断 迁移数据的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:表示 迁移失败
dataMove.setLastTime(DateForm.date2StringBysecond(new Date()));
dataMove.setCompleteStatus("3");
}
}
}

Loading…
Cancel
Save