Para executar uma procura semelhante à procura avançada na Web ou em clientes Eclipse, é possível incluir campos de consulta em um RAMAssetQueryBuilder usando o método RAMAssetQueryBuilder.addQueryField(java.lang.String, java.lang.String). Há campos para Data da Última Modificação, GUID, Descrição, Nome do Recurso, Classificação, Proprietário, Estado e Versão. Por padrão, todos os campos de consulta são logicamente conectados por "and" (a procura retornará apenas resultados que correspondem a todos os campos de consulta). Por exemplo, para localizar recursos com o Javadoc de API Cliente do Rational Asset Manager e com a versão 7.1, execute a seguinte procura.
// Procura exclusiva
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);
Para alterar como os campos são tratados, existe um método RAMQueryBuilder.setMatchAnyField(boolean) que pode ser utilizado OU os campos juntos. Por exemplo, para localizar recursos que têm as versões 7.0, 7.0.0.2 ou 7.1, execute a seguinte procura:
//Procura Inclusiva
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);
Junto com os campos de consulta de nome e valor, você também pode criar campos de consulta de texto que serão conectados por "and" ou "or" com seus outros campos de consulta utilizando o método RAMAssetQueryBuilder.addQueryTextField(java.lang.String).
//Procurar API com curinga
queryBuilder = new RAMAssetQueryBuilder(session);
queryBuilder.addQueryTextField("API*");
queryBuilder.addQueryField(queryBuilder.QUERY_FIELD_VERSION, "7.1");
searchResult = session.getAssets(queryBuilder);
Os operadores AND_OPERATOR e OR_OPERATOR podem ser utilizados para colocar em cadeia consultas mais complexas. Por exemplo, para criar uma consulta para recursos que contêm a API do Nome e têm uma versão 7.0, 7.0.0.2 ou 7.1, faça o seguinte:
//Consulta Avançada
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);