Recherche avancée

Pour exécuter une recherche semblable aux recherches avancées disponibles dans les clients web et Eclipse, vous pouvez ajouter des champs de requête à un objet RAMAssetQueryBuilder à l'aide de la méthode RAMAssetQueryBuilder.addQueryField(java.lang.String, java.lang.String). Des champs sont prévus pour la date de dernière modification, le GUID, la description, le nom d'actif, le classement (ou note), le propriétaire, l'état et la version. Par défaut, tous les champs de requête sont liés par des opérateurs logiques ET (la recherche ne renverra que les résultats qui correspondent à la totalité des champs de la requête). Par exemple, pour trouver les actifs dont le nom est Javadoc de l'API client Rational Asset Manager et dont la version est 7.1, codez la recherche suivante :

                // Recherche exclusive
                queryBuilder = new RAMAssetQueryBuilder(session);
                queryBuilder.addQueryField(queryBuilder.QUERY_FIELD_NAME, "Javadoc de l'API client Rational Asset Manager");
                queryBuilder.addQueryField(queryBuilder.QUERY_FIELD_VERSION, "7.1");
                
                searchResult = session.getAssets(queryBuilder);

Une autre méthode, RAMQueryBuilder.setMatchAnyField(boolean), permet de changer le mode de traitement des champs et de les lier des opérateurs logiques OU. Par exemple, pour trouver les actifs ayant pour numéro de version 7.0, 7.0.0.2 ou 7.1, codez la recherche suivante :

                //Recherche 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);

En utilisant la méthode RAMAssetQueryBuilder.addQueryTextField(java.lang.String), vous pouvez aussi créer des champs de requête de texte qui seront liés par des opérateurs logiques ET ou OU aux autres champs de requête.

                //Rechercher la chaîne API avec un caractère générique
                queryBuilder = new RAMAssetQueryBuilder(session);
                queryBuilder.addQueryTextField("API*");
                queryBuilder.addQueryField(queryBuilder.QUERY_FIELD_VERSION, "7.1");
                
                searchResult = session.getAssets(queryBuilder);

Les champs AND_OPERATOR et OR_OPERATOR peuvent être utilisés pour enchaîner des requêtes plus complexes. Par exemple, pour créer une requête visant à obtenir les actifs qui contiennent la chaîne API dans leur nom et qui ont le numéro de version 7.0, 7.0.0.2 ou 7.1, codez la rechercher suivante :

                //Requête avancée
                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);

Commentaires