To perform a search similar to the advanced search in the web or Eclipse clients you can add query fields to a RAMAssetQueryBuilder using the method RAMAssetQueryBuilder.addQueryField(java.lang.String, java.lang.String). There are fields for Last Modified Date, GUID, Description, Asset Name, Rating, Owner, State and Version. By default all query fields are logically connected by "and" (the search will only return results that match all query fields). For example, to find assets with the name Rational Asset Manager Client API Javadoc and with version 7.1, perform the following search.
// Search exclusive
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);
To change how fields are treated, there is a method RAMQueryBuilder.setMatchAnyField(boolean) that can be used to OR the fields together. For example, to find assets that have the versions of 7.0, 7.0.0.2, or 7.1, perform the following search:
//Search Inclusive
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);
Along with name and value query fields, you can also create text query fields that will be connected by "and" or "or" with your other query fields by using the methodRAMAssetQueryBuilder.addQueryTextField(java.lang.String).
//Search API with wildcard
queryBuilder = new RAMAssetQueryBuilder(session);
queryBuilder.addQueryTextField("API*");
queryBuilder.addQueryField(queryBuilder.QUERY_FIELD_VERSION, "7.1");
searchResult = session.getAssets(queryBuilder);
The AND_OPERATOR and OR_OPERATOR operators can be used to string together more complex queries. For example, to create a query for assets that contain the name API and have a version of 7.0, 7.0.0.2, or 7.1, do the following:
//Advanced Query
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);