コード例 #1
0
  private void collectCountFromImexService(
      ServiceType service,
      String query,
      PsicquicCountResults results,
      PsicquicSimpleClient client) {
    final String imexQuery = createImexQuery(query);
    results.setImex(true);

    try {

      long count = client.countByQuery(imexQuery);

      results.setImexCount((int) count);
      results.setImexResponding(true);

    } catch (IOException e) {
      log.error(
          "Problem connecting to PSICQUIC service '"
              + service.getName()
              + "': / proxy "
              + intactViewConfiguration.getProxyHost()
              + ":"
              + intactViewConfiguration.getProxyPort(),
          e);

      results.setImexResponding(false);
    }
  }
コード例 #2
0
  public void countResultsInOtherDatabases(String query) {
    resetPsicquicCounts();

    if (query == null || query.length() == 0) {
      query = UserQuery.STAR_QUERY;
    }
    runningTasks.clear();

    try {
      if (services == null) {
        initializeServices();
      }
      final String psicquicQuery = query;

      for (final ServiceType service : services) {
        final PsicquicSimpleClient client =
            intactViewConfiguration.getPsicquicClient(service.getRestUrl());

        if (intactViewConfiguration.getWebappName().contains(service.getName())
            || intactViewConfiguration
                .getDatabaseNamesUsingSameSolr()
                .contains(service.getName())) {
          continue;
        }

        Callable<PsicquicCountResults> runnable =
            new Callable<PsicquicCountResults>() {
              public PsicquicCountResults call() {

                return processPsicquicQueries(service, psicquicQuery, client);
              }
            };

        Future<PsicquicCountResults> f = executorService.submit(runnable);
        runningTasks.add(f);
      }
    } catch (PsicquicRegistryClientException e) {
      FacesContext context = FacesContext.getCurrentInstance();
      if (context != null) {
        FacesMessage facesMessage =
            new FacesMessage(
                FacesMessage.SEVERITY_ERROR,
                "Problem counting results in other databases",
                "Registry not available");
        context.addMessage(null, facesMessage);
      }

      e.printStackTrace();
    }
  }
コード例 #3
0
  public void initializeServices() throws PsicquicRegistryClientException {

    final String psicquicRegistryUrl = intactViewConfiguration.getPsicquicRegistryUrl();

    if (psicquicRegistryUrl == null || psicquicRegistryUrl.length() == 0) {
      return;
    }

    if (services == null || services.isEmpty()) {
      try {
        PsicquicRegistryClient registryClient =
            new DefaultPsicquicRegistryClient(psicquicRegistryUrl);
        services = registryClient.listActiveServices();
      } catch (Throwable e) {
        log.error("PSICQUIC registry not available", e);
        services = new ArrayList<ServiceType>();
      }
    }

    if (imexServices == null || imexServices.isEmpty()) {
      imexServices = new ArrayList<ServiceType>(services.size());

      for (final ServiceType service : services) {
        if (isImexService(service)) {
          imexServices.add(service);
        }

        // initialise psicquic services
        if (!intactViewConfiguration.getPsicquicClientMap().containsKey(service.getRestUrl())) {
          intactViewConfiguration.getPsicquicClient(service.getRestUrl());
        }
      }
    }

    if (runningTasks == null) {
      runningTasks = new ArrayList<Future>();
    }
  }