Administrator
2023-02-07 3b359b5a250b6383ce111980f28a719e16446e25
FBS9600ForFBO_Parse/src/com/fgkj/alm/Alarm_DataInfo.java
@@ -1,20 +1,91 @@
package com.fgkj.alm;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.fgkj.bres.FileDataParseInfo_Interface;
import com.fgkj.data.ComBase;
public class Alarm_DataInfo {
public class Alarm_DataInfo implements FileDataParseInfo_Interface{
   public AlarmDataHead   almDataHead;
   public List<AlarmData> almDatas;
   public int parse_result = PARSE_RESULT_NULL;         //文件解析结果
   public final int file_type = FILE_TYPE_ALM;            //文件类型
   
   public Alarm_DataInfo() {
      almDataHead = new AlarmDataHead();
      almDatas = new ArrayList<Alarm_DataInfo.AlarmData>();
   }
   @Override
   public void readFileData(String filePath) {
      FileInputStream fis = null;
       try {
          File f = new File(filePath);
          if(!filePath.endsWith(".alm") && !filePath.endsWith(".ALM")) {
             System.out.println("文件格式错误");
             parse_result = PARSE_RESULT_FILETYPEERR;
             return;
          }
          if(!f.exists()) {
             parse_result = PARSE_RESULT_NOTFOUNDFILE;
             System.out.println("文件不存在..........");
             return;
          }
         fis = new FileInputStream(f);
         byte[] buf = new byte[4];
           if(fis.read(buf, 0, buf.length) == AlarmDataHead.BYTE_LEN)
           {
              if(this.almDataHead.setHeadData(buf)) {
                 parse_result = PARSE_RESULT_SUCCESS;
              }else {
                 parse_result = PARSE_RESULT_FILEERROR;
              }
              while(true)
              {
                 if(almDataHead.checkDataHead(fis))
                 {
                    byte[] databuf = new byte[AlarmData.BYTE_LEN];
                    if(fis.read(databuf) == databuf.length)
                    {
                       AlarmData almData = new AlarmData();
                       if(almData.setData(databuf)) {
                          //System.out.println(resData);
                          almDatas.add(almData);
                       }
                    }
                 }
                 if(fis.available() <1) {
                    //System.out.println("解析完成");
                    break;
                 }
              }
           }else {
              parse_result = PARSE_RESULT_FILEERROR;
           }
      } catch (IOException e) {
         e.printStackTrace();
      } finally {
         if(null != fis)
         {
            try {
               fis.close();
            } catch (IOException e) {
               e.printStackTrace();
            }
         }
      }
   }
   
   //告警头部数据
@@ -39,6 +110,44 @@
          //System.out.println("行数:"+record_line);
          return true;
       }
      public boolean checkDataHead(FileInputStream fis)
      {
          boolean check_ok = false;
         boolean file_end = false;
         byte[] tag = new byte[1];
         try {
            while(true)
            {
               int n = 0;
               for(n=0; n<2; n++)
               {
                  if(1 != fis.read(tag, 0, 1))
                  {
                     file_end = true;
                     break;
                  }
                  if((0xAA != (tag[0]&0xFF)))
                  {
                     break;
                  }
               }
               if(n >= 2)
               {
                  check_ok = true;
                  break;
               }
               if(true == file_end)
               {
                  break;
               }
            }
         } catch (IOException e) {
            //e.printStackTrace();
         }
         return check_ok;
      }
   }
      
   //告警详情
@@ -104,4 +213,6 @@
       }
       
   }
}