Пример #1
0
 // ============================================================
 // <T>执行监视器的逻辑。</T>
 //
 // @return 处理结果
 // ============================================================
 @Override
 public boolean onExecute() {
   // 检查文件集合
   if (_files.isEmpty()) {
     return false;
   }
   // 检查变更的文件
   FFileInfos removes = null;
   int count = _files.count();
   for (int n = 0; n < count; n++) {
     FFileInfo info = _files.value(n);
     if (onFilter(info)) {
       if (info.exists()) {
         if (info.storeTest(_storeInterval)) {
           // 响应存储的文件
           try {
             doFileSave(info);
           } catch (Exception e) {
             _logger.error(e, "File save event error (file={1})", info.fileName());
           }
           info.stored();
         } else if (info.isModified()) {
           // 响应变更的文件
           try {
             doFileChange(info);
           } catch (Exception e) {
             _logger.error(e, "File change event error (file={1})", info.fileName());
           }
           info.refresh();
         }
       } else {
         // 响应被删除的文件
         try {
           doFileRemove(info);
         } catch (Exception e) {
           _logger.error(e, "File remove event error (file={1})", info.fileName());
         }
         if (null == removes) {
           removes = new FFileInfos();
         }
         removes.push(info);
       }
     }
   }
   // 移除文件集合
   if (null != removes) {
     for (FFileInfo info : removes.values()) {
       _files.remove(info.fileName());
     }
   }
   return true;
 }
Пример #2
0
 protected void innerBuildCodeList(FXmlNodes config, String name, ISqlConnect connect) {
   // 去数据库去CodeList
   if (_logger.debugAble()) {
     _logger.debug(this, "buildItemNodes", "Find item nodes. (codelist={0})", name);
   }
   FSqlQuery sql = new FSqlQuery(connect, getClass(), SQL_CODE_LIST);
   sql.bindString("name", name);
   FDataset dataset = sql.fetchDataset();
   for (FRow row : dataset) {
     FXmlNode itemNode = config.create(XListItem.NAME);
     itemNode.set(XListItem.PTY_VALUE, row.get(XListItem.PTY_VALUE));
     itemNode.set(XListItem.PTY_LABEL, row.get(XListItem.PTY_LABEL));
   }
 }
Пример #3
0
 // ============================================================
 // <T>解包处理。</T>
 //
 // @param pack 打包字符串
 // ============================================================
 public void unpack(String pack) {
   if (!RString.isEmpty(pack)) {
     try {
       // 解压数据
       FAttributes map = new FAttributes();
       map.unpack(pack);
       // 获得内容
       _catalog = map.get("catalog", null);
       _date = map.get("date", null);
       _code = map.get("code", null);
       _name = map.get("name", null);
       _origin = map.get("origin", null);
       _mime = map.get("mime", null);
       _size = map.getInt("size");
     } catch (Throwable throwable) {
       _catalog = null;
       _date = null;
       _code = null;
       _name = null;
       _origin = null;
       _mime = null;
       _size = 0;
       _logger.error(this, "unpack", throwable);
     }
   }
 }
Пример #4
0
 // ============================================================
 // <T>向监视器中增加一个监视文件。</T>
 //
 // @param fileName 文件名称
 // ============================================================
 public void push(String filename) {
   File file = new File(filename);
   if (file.isFile()) {
     _files.push(new FFileInfo(file));
   } else {
     _logger.warn(this, "push", "File is not exists (file={1})", filename);
   }
 }
Пример #5
0
 // ============================================================
 // <T>存储所有变更的文件。</T>
 // ============================================================
 public synchronized void storeAll() {
   // 检查变更的文件
   if (!_files.isEmpty()) {
     int count = _files.count();
     for (int n = 0; n < count; n++) {
       FFileInfo info = _files.value(n);
       if (onFilter(info)) {
         if (info.exists() && info.storeTest(0)) {
           // 响应存储的文件
           try {
             doFileSave(info);
           } catch (Exception e) {
             _logger.error(e, "File save event error (file={1})", info.fileName());
           }
           info.stored();
         }
       }
     }
   }
 }
Пример #6
0
 // ============================================================
 // <T>设置网络地址。</T>
 //
 // @param url 网络地址
 // ============================================================
 public void loadFile(String fileName) {
   // 检查文件存在性
   if (!RFile.exists(fileName)) {
     throw new FFatalError("File is not exists. (file_name={1})", fileName);
   }
   // 设置名称
   if (RString.isEmpty(_name)) {
     _name = RFile.name(fileName);
   }
   // 设置扩展
   if (RString.isEmpty(_extension)) {
     _extension = RFile.extension(fileName);
   }
   // 加载文件
   try (FByteFile file = new FByteFile(fileName)) {
     _data = file.toArray();
     _size = _data.length;
   } catch (Exception exception) {
     _logger.error(this, "loadFile", exception);
   }
 }
Пример #7
0
 // ============================================================
 // <T>响应被保存的文档。</T>
 //
 // @param info 文件信息
 // ============================================================
 public void doFileSave(FFileInfo info) {
   if (_logger.debugAble()) {
     _logger.debug(this, "doFileSave", "File save (file={1})", info.fileName());
   }
 }
Пример #8
0
 // ============================================================
 // <T>响应初始化文档。</T>
 //
 // @param filename 文件名称
 // ============================================================
 public void doInitializeFile(FFileInfo info) {
   if (_logger.debugAble()) {
     _logger.debug(this, "doInitializeFile", "File initialize (file={1})", info.fileName());
   }
 }