// ============================================================ // <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; }
// ============================================================ // <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(); } } } } }