コード例 #1
0
 /** @return */
 public SearchParameters getAsSearchParmeters() {
   SearchParameters searchParameters = new SearchParameters();
   searchParameters.setDefaultFieldName(this.getDefaultFieldName());
   searchParameters.setDefaultFTSFieldConnective(
       this.getDefaultFTSFieldConnective() == Connective.OR
           ? SearchParameters.Operator.OR
           : SearchParameters.Operator.AND);
   searchParameters.setDefaultFTSOperator(
       this.getDefaultFTSConnective() == Connective.OR
           ? SearchParameters.Operator.OR
           : SearchParameters.Operator.AND);
   searchParameters.setDefaultOperator(
       this.getDefaultFTSConnective() == Connective.OR
           ? SearchParameters.Operator.OR
           : SearchParameters.Operator.AND);
   searchParameters.setLanguage(SearchService.LANGUAGE_CMIS_ALFRESCO);
   if (this.getMaxItems() > 0) {
     searchParameters.setLimit(this.getMaxItems());
     searchParameters.setLimitBy(LimitBy.FINAL_SIZE);
     searchParameters.setMaxItems(this.getMaxItems());
   }
   searchParameters.setMaxPermissionChecks(this.getMaxPermissionChecks());
   searchParameters.setMaxPermissionCheckTimeMillis(this.getMaxPermissionCheckTimeMillis());
   searchParameters.setMlAnalaysisMode(this.getMlAnalaysisMode());
   // searchParameters.setNamespace()   TODO: Fix
   // searchParameters.setPermissionEvaluation()
   searchParameters.setQuery(this.getQuery());
   searchParameters.setSkipCount(this.getSkipCount());
   // searchParameters.addAllAttribute()
   for (Locale locale : this.getLocales()) {
     searchParameters.addLocale(locale);
   }
   for (QueryParameterDefinition queryParameterDefinition : this.getQueryParameterDefinitions()) {
     searchParameters.addQueryParameterDefinition(queryParameterDefinition);
   }
   // searchParameters.addQueryTemplate(name, template)
   // searchParameters.addSort()
   for (StoreRef storeRef : this.getStores()) {
     searchParameters.addStore(storeRef);
   }
   // searchParameters.addTextAttribute()
   searchParameters.setBulkFetchEnabled(isBulkFetchEnabled());
   searchParameters.setQueryConsistency(this.getQueryConsistency());
   searchParameters.setSinceTxId(getSinceTxId());
   return searchParameters;
 }
  /**
   * Get the value of the counter.
   *
   * @param parameters
   * @return
   * @throws Exception
   */
  private String getCounter(Map<String, Object> parameters) throws Exception {

    String counter = "0";

    switch ((String) parameters.get(PARAMETER_COUNTER)) {
      case PARAMETER_COUNTER_AUDIT_TRAIL:
      case PARAMETER_COUNTER_WORKFLOW_INSTANCES:
      case PARAMETER_COUNTER_WORKFLOW_TASKS:

        /*
         * TODO: The query should be defined using hibernate.
         */

        Class.forName(properties.getProperty(DB_DRIVER));

        java.sql.Connection dbConnection =
            DriverManager.getConnection(
                properties.getProperty(DB_URL),
                properties.getProperty(DB_USERNAME),
                properties.getProperty(DB_PASSWORD));
        Statement dbStatement = dbConnection.createStatement();
        String dbQuery = getDatabaseQuery(parameters);
        java.sql.ResultSet dbResultSet = dbStatement.executeQuery(dbQuery);

        if (dbResultSet.next()) {
          counter = String.valueOf(dbResultSet.getDouble(VALUE_FIELD));
        }

        if (dbResultSet.next()) {
          throw new Exception(
              "Database query '" + dbQuery + "' with multiple results when only one is expected.");
        }

        if (dbStatement != null) dbStatement.close();
        if (dbConnection != null) dbConnection.close();

        break;

      case PARAMETER_COUNTER_ASPECTS:
      case PARAMETER_COUNTER_TYPES:
        SearchParameters searchParameters = new SearchParameters();

        searchParameters.addStore(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE);
        searchParameters.setLanguage(SearchService.LANGUAGE_FTS_ALFRESCO);
        searchParameters.setPermissionEvaluation(PermissionEvaluationMode.NONE);
        searchParameters.setUseInMemorySort(false);
        searchParameters.setLimitBy(LimitBy.FINAL_SIZE);

        List<String> alfrescoQueries = getAlfrescoQueries(parameters);
        int sum = 0;
        for (int i = 0; i < alfrescoQueries.size(); ++i) {

          searchParameters.setQuery(alfrescoQueries.get(i));

          org.alfresco.service.cmr.search.ResultSet resultSet =
              searchService.query(searchParameters);
          sum += resultSet.getNumberFound();
          resultSet.close();
        }

        counter = String.valueOf(sum);

        break;

      default:
        throw new Exception(
            "Parameter '"
                + PARAMETER_COUNTER
                + "' with value '"
                + ((String) parameters.get(PARAMETER_COUNTER))
                + "' not admitted.");
    }

    return counter;
  }