Ejemplo n.º 1
0
 private List<DataProcessor> createDataProcessors(
     MessageBroker messageBroker, String baseContextPath, Harvester.Listener listener) {
   List<DataProcessor> processors = new ArrayList<DataProcessor>();
   for (DataProcessorFactory factory : cfg.getDataProcessorFactories()) {
     processors.add(factory.newProcessor(messageBroker, baseContextPath, listener));
   }
   return processors;
 }
Ejemplo n.º 2
0
  /** Initializes engine. */
  public void init() {
    if (cfg.getQueueEnabled()) {
      LOGGER.info("[SYNCHRONIZER] Initializing synchronizer queue.");
      this.taskQueue = new TaskQueue();
    }
    if (cfg.getActive()) {
      LOGGER.info("[SYNCHRONIZER] Initializing synchronizer engine.");
      this.taskQueue = new TaskQueue();
      this.pool =
          new Pool(
              new DataProcessorDispatcher(
                  createDataProcessors(messageBroker, cfg.getBaseContextPath(), listenerArray)),
              taskQueue,
              cfg.getPoolSize());

      if (cfg.getAutoSelectFrequency() > 0) {
        this.autoSelector =
            new AutoSelector(cfg.getAutoSelectFrequency()) {

              @Override
              protected void onSelect(HrRecord resource) {
                if (ProtocolInvoker.getUpdateContent(resource.getProtocol())) {
                  RequestContext context = RequestContext.extract(null);
                  try {
                    submit(
                        context,
                        resource,
                        null,
                        resource.getLastSyncDate() == null
                                || HarvestPolicy.getInstance().getForceFullHarvest(resource)
                            ? null
                            : resource.getLastSyncDate());
                  } finally {
                    context.onExecutionPhaseCompleted();
                  }
                }
              }
            };
        Thread thread = new Thread(autoSelector, "Auto-selector");
        thread.start();
      }

      if (cfg.getWatchDogFrequency() > 0) {
        this.watchDog =
            new WatchDog(cfg.getWatchDogFrequency()) {

              @Override
              protected String[] getCurrentlyHarvesterResourceUuids() {
                ArrayList<String> uuids = new ArrayList<String>();
                for (ExecutionUnit u : pool.getAllExecutedUnits()) {
                  uuids.add(u.getRepository().getUuid());
                }
                return uuids.toArray(new String[uuids.size()]);
              }

              @Override
              protected void cancelByResourceUuids(String[] uuids) {
                for (String uuid : uuids) {
                  pool.drop(uuid);
                }
              }
            };
        Thread thread = new Thread(watchDog, "Watch-dog");
        thread.start();
      }
    }

    // resetRunning from the last fail/shutdown
    resetRunning();
  }