Расширенный поиск

Для выполнения поиска, аналогичного расширенному поиску в клиенте Eclipse или веб-клиенте, в RAMAssetQueryBuilder можно добавить поля запроса с помощью метода RAMAssetQueryBuilder.addQueryField(java.lang.String, java.lang.String). Доступны следующие поля: Дата последнего изменения, GUID, Описание, Имя ресурса, Рейтинг, Владелец, Состояние и Версия.

Прим.: Поле запроса версии QUERY_FIELD_VERSION использует поиск с точным соответствием, а не нечеткий поиск. Для поиска строки, содержащей пробелы, строку необходимо заключить в кавычки с помощью Escape-символов. Например, используйте "\"Version 8.0\"", а не "Version 8.0", для добавления поля запроса для версии. Если для поля версии указать "Version 8.0", не будет возвращено никаких результатов.

По умолчанию все поля запроса объединяются логическим оператором "И" (в результаты поиска попадают только ресурсы, соответствующие всем полям). Пример поиска ресурсов с именем "Rational Asset Manager Client API Javadoc" и версией 7.1:

                // Поиск исключая
                queryBuilder = new RAMAssetQueryBuilder(session);
                queryBuilder.addQueryField(queryBuilder.QUERY_FIELD_NAME, "Rational Asset Manager Client API Javadoc");
                queryBuilder.addQueryField(queryBuilder.QUERY_FIELD_VERSION, "7.1");
                
                searchResult = session.getAssets(queryBuilder);

Для изменения режима обработки полей используется метод RAMQueryBuilder.setMatchAnyField(boolean), он включает режим объединения полей логическим оператором "ИЛИ". Пример поиска ресурсов с версиями 7.0, 7.0.0.2 или 7.1:

                // Поиск включая
                queryBuilder = new RAMAssetQueryBuilder(session);
                queryBuilder.addQueryField(queryBuilder.QUERY_FIELD_VERSION, "7.0");
                queryBuilder.addQueryField(queryBuilder.QUERY_FIELD_VERSION, "7.0.0.2");
                queryBuilder.addQueryField(queryBuilder.QUERY_FIELD_VERSION, "7.1");
                
                queryBuilder.setMatchAnyField(true);
                
                searchResult = session.getAssets(queryBuilder);

Помимо полей запроса имени и значения с помощью метода RAMAssetQueryBuilder.addQueryTextField(java.lang.String) можно создавать текстовые поля, соединяемые с другими полями логическими операторами "И" или "ИЛИ".

                // Поиск API по шаблону
                queryBuilder = new RAMAssetQueryBuilder(session);
                queryBuilder.addQueryTextField("API*");
                queryBuilder.addQueryField(queryBuilder.QUERY_FIELD_VERSION, "7.1");
                
                searchResult = session.getAssets(queryBuilder);

Для создания более сложных запросов можно использовать операторы AND_OPERATOR и OR_OPERATOR. Пример поиска ресурсов, содержащих имя API и имеющих версию 7.0, 7.0.0.2 или 7.1:

                // Расширенный запрос
                nonEscapedNameQuery = queryBuilder.createQueryFieldText(
                                queryBuilder.QUERY_FIELD_NAME, "API*");
                queryBuilder.addQueryTextField(nonEscapedNameQuery);
                
                String version71 = queryBuilder.createQueryFieldText(queryBuilder.QUERY_FIELD_VERSION, "7.0");
                String version7002 = queryBuilder.createQueryFieldText(queryBuilder.QUERY_FIELD_VERSION, "7.0.0.2");
                String version71 = queryBuilder.createQueryFieldText(queryBuilder.QUERY_FIELD_VERSION, "7.1");
                
                String versionQuery = version70 + RAMAssetQueryBuilder.OR_OPERATOR + version7002 + RAMAssetQueryBuilder.OR_OPERATOR + version71;
                
                queryBuilder.addQueryTextField(versionQuery);
                
                searchResult = session.getAssets(queryBuilder);

Комментарии