/**
  * @see
  *     org.alfresco.module.org_alfresco_module_rm.test.integration.classification.interceptor.SearchClassificationEnforcementTestBase#search(java.lang.String)
  */
 @Override
 protected List<NodeRef> search(String searchQuery) {
   SearchParameters searchParameters = new SearchParameters();
   searchParameters.setQuery(searchQuery);
   searchParameters.setLanguage(LANGUAGE_FTS_ALFRESCO);
   searchParameters.addStore(STORE_REF_WORKSPACE_SPACESSTORE);
   searchParameters.setMaxItems(MAX_VALUE);
   searchParameters.setNamespace(RM_URI);
   searchParameters.addQueryTemplate("keywords", "%(cm:name cm:title cm:description TEXT)");
   return searchService.query(searchParameters).getNodeRefs();
 }
コード例 #2
0
  /** @return Returns true if the pattern is present, otherwise false. */
  public boolean contains(
      NodeRef nodeRef,
      QName propertyQName,
      String googleLikePattern,
      SearchParameters.Operator defaultOperator) {
    ResultSet resultSet = null;
    try {
      // build Lucene search string specific to the node
      StringBuilder sb = new StringBuilder();
      sb.append("+ID:\"")
          .append(nodeRef.toString())
          .append("\" +(TEXT:(")
          .append(googleLikePattern.toLowerCase())
          .append(") ");
      if (propertyQName != null) {
        sb.append(" OR @")
            .append(
                SearchLanguageConversion.escapeLuceneQuery(
                    QName.createQName(
                            propertyQName.getNamespaceURI(),
                            ISO9075.encode(propertyQName.getLocalName()))
                        .toString()));
        sb.append(":(").append(googleLikePattern.toLowerCase()).append(")");
      } else {
        for (QName key : nodeService.getProperties(nodeRef).keySet()) {
          sb.append(" OR @")
              .append(
                  SearchLanguageConversion.escapeLuceneQuery(
                      QName.createQName(key.getNamespaceURI(), ISO9075.encode(key.getLocalName()))
                          .toString()));
          sb.append(":(").append(googleLikePattern.toLowerCase()).append(")");
        }
      }
      sb.append(")");

      SearchParameters sp = new SearchParameters();
      sp.setLanguage(SearchService.LANGUAGE_LUCENE);
      sp.setQuery(sb.toString());
      sp.setDefaultOperator(defaultOperator);
      sp.addStore(nodeRef.getStoreRef());

      resultSet = this.query(sp);
      boolean answer = resultSet.length() > 0;
      return answer;
    } finally {
      if (resultSet != null) {
        resultSet.close();
      }
    }
  }
コード例 #3
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;
 }
コード例 #4
0
  public ResultSet query(
      StoreRef store,
      String language,
      String queryString,
      QueryParameterDefinition[] queryParameterDefinitions)
      throws SearcherException {
    store = tenantService.getName(store);

    SearchParameters sp = new SearchParameters();
    sp.addStore(store);
    sp.setLanguage(language);
    sp.setQuery(queryString);
    if (queryParameterDefinitions != null) {
      for (QueryParameterDefinition qpd : queryParameterDefinitions) {
        sp.addQueryParameterDefinition(qpd);
      }
    }
    sp.excludeDataInTheCurrentTransaction(true);

    return query(sp);
  }
  /**
   * 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;
  }
コード例 #6
0
ファイル: DeploymentUtil.java プロジェクト: negabaro/alfresco
  /**
   * Returns all deployment attempts for the given store
   *
   * @param store The store to get the deployment attempts for
   * @param fromDate If present only attempts after the given date are returned
   * @param toDate If present only attempts before the given date are returned, if null toDate
   *     defaults to today's date
   * @return List of NodeRef's representing the deployment attempts
   */
  public static List<NodeRef> findDeploymentAttempts(String store, Date fromDate, Date toDate) {
    FacesContext fc = FacesContext.getCurrentInstance();
    SearchService searchService = Repository.getServiceRegistry(fc).getSearchService();

    // query for all deploymentattempt nodes with the deploymentattemptstore
    // set to the given store id
    StringBuilder query = new StringBuilder("@");
    query.append(NamespaceService.WCMAPP_MODEL_PREFIX);
    query.append("\\:");
    query.append(WCMAppModel.PROP_DEPLOYATTEMPTSTORE.getLocalName());
    query.append(":\"");
    query.append(store);
    query.append("\"");

    // constrain the search by date if a fromDate is applied
    if (fromDate != null) {
      if (toDate == null) {
        toDate = new Date();
      }

      // see if the dates are the same (ignoring the time)
      boolean sameDate = false;
      Calendar fromCal = new GregorianCalendar();
      fromCal.setTime(fromDate);
      Calendar toCal = new GregorianCalendar();
      toCal.setTime(toDate);
      if ((fromCal.get(Calendar.YEAR) == toCal.get(Calendar.YEAR))
          && (fromCal.get(Calendar.MONTH) == toCal.get(Calendar.MONTH))
          && (fromCal.get(Calendar.DAY_OF_MONTH) == toCal.get(Calendar.DAY_OF_MONTH))) {
        sameDate = true;
      }

      // add date to query
      query.append(" AND @");
      query.append(NamespaceService.WCMAPP_MODEL_PREFIX);
      query.append("\\:");
      query.append(WCMAppModel.PROP_DEPLOYATTEMPTTIME.getLocalName());
      query.append(":");

      if (sameDate) {
        // convert date into format needed for range query
        String queryDate = formatLuceneQueryDate(fromDate, false);

        // query for exact date
        query.append("\"");
        query.append(queryDate);
        query.append("\"");
      } else {
        // convert to date into format needed for range query
        String queryFromDate = formatLuceneQueryDate(fromDate, true);
        String queryToDate = formatLuceneQueryDate(toDate, true);

        // create a date range query
        query.append("[");
        query.append(queryFromDate);
        query.append(" TO ");
        query.append(queryToDate);
        query.append("]");
      }
    }

    if (logger.isDebugEnabled())
      logger.debug("Finding deploymentattempt nodes using query: " + query.toString());

    ResultSet results = null;
    List<NodeRef> attempts = new ArrayList<NodeRef>();
    try {
      // sort the results by deploymentattempttime
      SearchParameters sp = new SearchParameters();
      sp.addStore(Repository.getStoreRef());
      sp.setLanguage(SearchService.LANGUAGE_LUCENE);
      sp.setQuery(query.toString());
      sp.addSort("@" + WCMAppModel.PROP_DEPLOYATTEMPTTIME, false);

      // execute the query
      results = searchService.query(sp);

      if (logger.isDebugEnabled())
        logger.debug("Found " + results.length() + " deployment attempts");

      for (NodeRef attempt : results.getNodeRefs()) {
        attempts.add(attempt);
      }
    } finally {
      if (results != null) {
        results.close();
      }
    }

    return attempts;
  }