zhubaomin
2025-04-07 e67870fff62635cd14beb0d5988f08aeef4b22fa
pipIrr-platform/pipIrr-web/pipIrr-web-file/src/main/java/com/dy/pipIrrWebFile/fm/DyFileSvConf.java
New file
@@ -0,0 +1,155 @@
package com.dy.pipIrrWebFile.fm;
import java.util.ArrayList;
import java.util.List;
public class DyFileSvConf {
   public static class Group{
      public List<Vo> list ;
      public Group(){
         this.list = new ArrayList<Vo>() ;
      }
      public void add(Vo vo)throws Exception{
         if(vo == null){
            throw new Exception("出错,预加入集合Vo为空了!") ;
         }
         if(list.size() > 0){
            for(Vo lvo : list){
               lvo.checkEqual(vo) ;
            }
            this.list.add(vo) ;
         }else{
            this.list.add(vo) ;
         }
      }
      public void check() throws Exception{
         Integer startV = 0 ;
         doCheck(startV) ;
      }
      private void doCheck(Integer startV) throws Exception{
         boolean find = false ;
         for(Vo vo : list){
            if(vo.hashStart.intValue() == startV.intValue()){
               startV = vo.hashEnd + 1;
               find = true ;
               break ;
            }
         }
         if(!find){
            throw new Exception("严重错误,未发现哈希值为" + startV + "文件服务器!") ;
         }
         if(startV.intValue() <= 65535){
            doCheck(startV) ;
         }
      }
   }
   public static class Vo{
      public String id ;//id或名称
      public String fileSysAbsolutePath; //文件名称的哈希值对应的文件最终存储绝对路径中的根目录,在配置文件中配置
      public String fileSysRelativePath; //文件名称的哈希值对应的文件最终存储相对路径的目录,在配置文件中配置
      public String restUrl;//文件系统路径
      public String webUrl ;//下载文档的web路径
      public String webDownloadPath ;//下载文档的Controller的相对路径
      public Integer hashStart ;//哈希值启始值(包含)
      public Integer hashEnd ;//哈希值截止值(包含)
      public Vo(){}
      public Vo(String id,
            String fileSysAbsolutePath,
            String fileSysBasePath,
            String restUrl,
            String webUrl,
            String webDownloadPath,
            Integer hashStart,
            Integer hashEnd)throws Exception{
         this.id = id ;
         this.fileSysAbsolutePath = fileSysAbsolutePath ;
         this.fileSysRelativePath = fileSysBasePath ;
         this.restUrl = restUrl ;
         this.webUrl = webUrl ;
         this.webDownloadPath = webDownloadPath ;
         this.hashStart = hashStart ;
         this.hashEnd = hashEnd ;
         if(this.id == null || this.id.trim().equals("")){
            throw new Exception("出错,id为空了!") ;
         }else{
            this.id = this.id.trim() ;
         }
         if(this.fileSysAbsolutePath == null || this.fileSysAbsolutePath.trim().equals("")){
            throw new Exception("出错,fileSysAbsolutePath为空了!") ;
         }else{
            this.fileSysAbsolutePath = this.fileSysAbsolutePath.trim() ;
            this.fileSysAbsolutePath = this.fileSysAbsolutePath.replaceAll("\\\\", "/") ;
            if(!this.fileSysAbsolutePath.endsWith("/")){
               this.fileSysAbsolutePath = this.fileSysAbsolutePath + "/" ;
            }
         }
         if(this.fileSysRelativePath == null || this.fileSysRelativePath.trim().equals("")){
            throw new Exception("出错,fileSysBasePath为空了!") ;
         }else{
            this.fileSysRelativePath = this.fileSysRelativePath.trim() ;
         }
         if(this.webUrl == null || this.webUrl.trim().equals("")){
            throw new Exception("出错,webUrl为空了!") ;
         }else{
            this.webUrl = this.webUrl.trim() ;
            if(!this.webUrl.endsWith("/") && !this.webUrl.endsWith("\\")){
               this.webUrl += "/" ;
            }
         }
         if(this.webDownloadPath == null || this.webDownloadPath.trim().equals("")){
            throw new Exception("出错,webDownloadPath!") ;
         }
         if(this.hashStart == null){
            throw new Exception("出错,hashStart为空了!") ;
         }else if(this.hashStart.intValue() < 0){
            throw new Exception("出错,hashStart小于0了!") ;
         }else if(this.hashStart.intValue() > 65535){
            throw new Exception("出错,hashStart大于65535了!") ;
         }
         if(this.hashEnd == null){
            throw new Exception("出错,hashEnd为空了!") ;
         }else if(this.hashEnd.intValue() < 0){
            throw new Exception("出错,hashEnd小于0了!") ;
         }else if(this.hashEnd.intValue() > 65535){
            throw new Exception("出错,hashEnd大于65535了!") ;
         }
         if(this.hashEnd < this.hashStart){
            throw new Exception("出错,hashEnd小于hashStart了!") ;
         }
      }
      public String toString(){
         return "id=" + id + "\n"
               + "fileSysAbsolutePath=" + fileSysAbsolutePath + "\n"
               + "fileSysBasePath=" + fileSysRelativePath + "\n"
               + "restUrl=" + restUrl + "\n"
               + "webUrl=" + webUrl + "\n"
               + "webDownloadPath=" + webDownloadPath + "\n"
               + "hashStart=" + hashStart + "\n"
               + "hashEnd=" + hashEnd ;
      }
      private boolean checkEqual(Vo vo)throws Exception{
         if(this.id.equalsIgnoreCase(vo.id)){
            throw new Exception("出错,id有重复!") ;
         }
         if(this.hashStart.intValue() == vo.hashStart.intValue()){
            throw new Exception("出错,hashStart有重复!") ;
         }
         if(this.hashEnd.intValue() == vo.hashEnd.intValue()){
            throw new Exception("出错,hashEnd有重复!") ;
         }
         if(this.hashStart.intValue() == vo.hashEnd.intValue()){
            throw new Exception("出错,hashStart与hashEnd有重复!") ;
         }
         if(this.hashEnd.intValue() == vo.hashStart.intValue()){
            throw new Exception("出错,hashEnd与hashStart有重复!") ;
         }
         return true ;
      }
   }
}