From 278c3d3aae6e2c9f1f0814f492c4eb0820f36405 Mon Sep 17 00:00:00 2001 From: chenlw <874313221@qq.com> Date: Fri, 23 Sep 2016 19:49:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=BF=81=E7=A7=BB=E6=97=B6?= =?UTF-8?q?=EF=BC=8Cvolume=E7=9A=84path=E6=9C=AA=E5=86=99=E5=85=A5?= =?UTF-8?q?=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/dao/mapper/VolumeMapper.xml | 95 +++++++++++++++++++ src/com/dao/mapper/data-details-mapper.xml | 4 +- src/com/dao/mapper/dataInfoMoveTmpmapper.xml | 18 +++- src/com/platform/dao/VolumeDao.java | 27 ++++++ .../platform/entities/VolumeInitEntity.java | 86 +++++++++++++++++ .../service/impl/MoveDataServiceImpl.java | 38 +++++++- .../service/thread/ThreadMoveData.java | 3 + src/com/platform/utils/Constant.java | 2 +- 8 files changed, 266 insertions(+), 7 deletions(-) create mode 100644 src/com/dao/mapper/VolumeMapper.xml create mode 100644 src/com/platform/dao/VolumeDao.java create mode 100644 src/com/platform/entities/VolumeInitEntity.java diff --git a/src/com/dao/mapper/VolumeMapper.xml b/src/com/dao/mapper/VolumeMapper.xml new file mode 100644 index 00000000..146d83fd --- /dev/null +++ b/src/com/dao/mapper/VolumeMapper.xml @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + UPDATE + volume_info + + + + name= #{name}, + + + ip= #{ip}, + + + path= #{path}, + + + mark= #{mark}, + + + + + id = #{id} + + + + + INSERT INTO + volume_info( + + + name, + + + ip, + + + path, + + + mark, + + + ) + VALUES( + + + #{name}, + + + #{ip}, + + + #{path}, + + + #{mark}, + + + ) + + + + DELETE FROM + volume_info + WHERE + id = #{id} + + + \ 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 8aa8b58f..61071bd0 100644 --- a/src/com/dao/mapper/data-details-mapper.xml +++ b/src/com/dao/mapper/data-details-mapper.xml @@ -220,10 +220,10 @@ PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" #{year}, - #{start_year}, + #{startYear}, - #{end_year}, + #{endYear}, #{volumeIp}, 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" - regionalism_code,system_code,dst_path,lasttime,fkid + regionalism_code,system_code,dst_path,lasttime,fkid,dst_volume_ip,dst_volume_path @@ -120,6 +120,12 @@ PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" fkid, + + dst_volume_ip, + + + dst_volume_path, + ) VALUES( @@ -146,7 +152,13 @@ PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" #{lastTime}, - #{fkid), + #{fkid}, + + + #{dstVolumeIp}, + + + #{dstVolumePath}, ) @@ -156,7 +168,7 @@ PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" INSERT INTO move_data_tmp ( ) VALUES - (#{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}) diff --git a/src/com/platform/dao/VolumeDao.java b/src/com/platform/dao/VolumeDao.java new file mode 100644 index 00000000..db4e9c93 --- /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 findAll() throws Exception; + + int update(VolumeInitEntity data) throws Exception; + + int save(VolumeInitEntity data) throws Exception; + + int remove(int id) throws Exception; +} diff --git a/src/com/platform/entities/VolumeInitEntity.java b/src/com/platform/entities/VolumeInitEntity.java new file mode 100644 index 00000000..fa0a70d9 --- /dev/null +++ b/src/com/platform/entities/VolumeInitEntity.java @@ -0,0 +1,86 @@ +package com.platform.entities; + +public class VolumeInitEntity { + + private int id; + + private String name; + + private String ip; + + private String path; + + private String mark; + + /** + * @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; + } + + +} diff --git a/src/com/platform/service/impl/MoveDataServiceImpl.java b/src/com/platform/service/impl/MoveDataServiceImpl.java index 7adb04dd..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(); @@ -63,12 +68,17 @@ public class MoveDataServiceImpl implements IMoveDataService { if (null ==node.getPath() ||"".equals(node.getPath())) { return false; } + List 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 exist = dataInfoMoveTmpDao.findAll(); List existIds = new ArrayList(); + List fkIds = new ArrayList(); if (null != exist) { for (DataInfoEntityMoveTmp dataInfoEntityMoveTmp : exist) { if ("0".equals(dataInfoEntityMoveTmp.getCompleteStatus()) @@ -77,6 +87,7 @@ public class MoveDataServiceImpl implements IMoveDataService { if (null != dataInfoEntityMoveTmp.getDataPath()) { existIds.add(dataInfoEntityMoveTmp.getDataPath()); } + fkIds.add(dataInfoEntityMoveTmp.getFkid()); } } } @@ -95,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()); @@ -114,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/thread/ThreadMoveData.java b/src/com/platform/service/thread/ThreadMoveData.java index a178ff0a..9967e056 100644 --- a/src/com/platform/service/thread/ThreadMoveData.java +++ b/src/com/platform/service/thread/ThreadMoveData.java @@ -139,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/Constant.java b/src/com/platform/utils/Constant.java index d0eb303b..95035c6e 100644 --- a/src/com/platform/utils/Constant.java +++ b/src/com/platform/utils/Constant.java @@ -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; }