/** * @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(); }
/** @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(); } } }
/** @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; }
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; }
/** * 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; }