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