Пример #1
0
 // ============================================================
 // <T>从监视器中移除一个监视文件。</T>
 //
 // @param fileName 文件名称
 // ============================================================
 public boolean remove(String fileName) {
   FFileInfo info = _files.get(fileName);
   if (null != info) {
     _files.remove(fileName);
     return true;
   }
   return false;
 }
Пример #2
0
 // ============================================================
 // <T>已经存储文件。</T>
 //
 // @param fileName 文件名称
 // ============================================================
 public synchronized void stored(String fileName) {
   if (null != fileName) {
     int count = _files.count();
     for (int n = 0; n < count; n++) {
       if (fileName.equals(_files.value(n).fileName())) {
         _files.value(n).stored();
         break;
       }
     }
   }
 }
Пример #3
0
 // ============================================================
 // <T>从监视器中移除一个监视文件。</T>
 //
 // @param info 文件信息
 // ============================================================
 public boolean remove(FFileInfo info) {
   if (null != info) {
     _files.remove(info.fileName());
     return true;
   }
   return false;
 }
Пример #4
0
 // ============================================================
 // <T>存储文件。</T>
 //
 // @param fileName 文件名称
 // ============================================================
 public synchronized void store(String fileName) {
   if (null != fileName) {
     int count = _files.count();
     for (int n = 0; n < count; n++) {
       if (fileName.equals(_files.value(n).fileName())) {
         _files.value(n).store();
         return;
       }
     }
     if (!RFile.isFile(fileName)) {
       RFile.saveToFile(fileName, RString.EMPTY);
     }
     FFileInfo info = new FFileInfo(fileName);
     _files.push(info);
     info.store();
   }
 }
Пример #5
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);
   }
 }
Пример #6
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();
         }
       }
     }
   }
 }
Пример #7
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;
 }
Пример #8
0
 // ============================================================
 // <T>清除监视的文件列表。</T>
 // ============================================================
 public synchronized void clear() {
   _files.clear();
 }
Пример #9
0
 // ============================================================
 // <T>增加文件信息。</T>
 //
 // @param info 文件信息
 // ============================================================
 public void push(FFileInfo info) {
   if (null != info) {
     _files.push(info);
   }
 }