public SyncWatchEventProcessor(long syncAccountId) {
    _syncAccountId = syncAccountId;

    SyncFileModelListener syncFileModelListener =
        new SyncFileModelListener() {

          @Override
          public void onRemove(SyncFile syncFile) {
            _dependentSyncWatchEventsMaps.remove(syncFile.getFilePathName());

            _pendingTypePKSyncFileIds.remove(syncFile.getTypePK());
          }

          @Override
          public void onUpdate(SyncFile syncFile, Map<String, Object> originalValues) {

            if ((syncFile.getSyncAccountId() != _syncAccountId)
                || (syncFile.getTypePK() == 0)
                || (!originalValues.containsKey("state")
                    && !originalValues.containsKey("typePK"))) {

              return;
            }

            List<SyncWatchEvent> syncWatchEvents =
                _dependentSyncWatchEventsMaps.remove(syncFile.getFilePathName());

            if (syncWatchEvents == null) {
              return;
            }

            if (syncFile.getTypePK() > 0) {
              _pendingTypePKSyncFileIds.remove(syncFile.getSyncFileId());
            }

            for (SyncWatchEvent syncWatchEvent : syncWatchEvents) {
              try {
                if (_logger.isDebugEnabled()) {
                  _logger.debug(
                      "Processing queued event {} {}",
                      syncWatchEvent.getFilePathName(),
                      syncWatchEvent.getEventType());
                }

                processSyncWatchEvent(syncWatchEvent);
              } catch (Exception e) {
                _logger.error(e.getMessage(), e);
              }
            }
          }
        };

    SyncFileService.registerModelListener(syncFileModelListener);
  }
예제 #2
0
  public static SyncFilePersistence getSyncFilePersistence() {
    if (_syncFilePersistence != null) {
      return _syncFilePersistence;
    }

    try {
      _syncFilePersistence = new SyncFilePersistence();

      registerModelListener(new SyncFileModelListener());

      return _syncFilePersistence;
    } catch (SQLException sqle) {
      if (_logger.isDebugEnabled()) {
        _logger.debug(sqle.getMessage(), sqle);
      }

      return null;
    }
  }