< Précédent | Suivant >

Liste des bases de données utilisateur disponibles

Dans la présente leçon, vous apprenez comment utiliser l'API CM ClearQuest pour reconnaître les bases de données Rational ClearQuest accessibles à un utilisateur donné. Cette liste peut être présentée à l'utilisateur avant qu'il ne commence à travailler avec des ressources de bases de données telles que des enregistrements, des zones et des requêtes.

L'exemple suivant utilise la méthode CqProvider.doGeDbSetList() pour obtenir une liste de tous les jeux de bases de données Rational ClearQuest connus du fournisseur (un jeu de bases de données est parfois appelé configuration ou schéma de référentiel). En accédant à chacun de ces jeux de bases de données, une liste complète des bases de données accessibles à l'utilisateur est obtenue.

Dans cet exemple, chaque base de données utilisateur est identifiée à l'aide d'une combinaison de son nom de jeu de bases de données (CqDbSet.DISPLAY_NAME) et de son nom de base de données utilisateur (CqUserDb.DISPLAY_NAME). Il s'agit de la méthode canonique pour identifier une base de données utilisateur dans l'API CM ClearQuest. La syntaxe d'emplacement complète pour une base de données utilisateur est cq.userdb:<jeu-bd>/<bd-utilisateur>.

public static void main(String[] args) throws Exception
    {
        try {
            CqProvider provider = Utilities.getProvider().cqProvider();
            
            System.out.println("CM API Library...\n" 
                                 + provider.stpProductInfo(null));
            System.out.println("ClearQuest Adaptor...\n" 
                                 + provider.stpProductInfo(Domain.CLEAR_QUEST));
            
            // Itère les jeux de bases de données connus du fournisseur
            for (CqDbSet set : provider.doGetDbSetList(DB_PROPS)) {
                // Ignore le jeu de bases de données si l'utilisateur ne dispose pas de l'accès
                if (set.getResourceError() != null)
                    continue;
                
                // Identifie les bases de données utilisateur auxquelles l'utilisateur a souscrit
                for (CqUserDb userDb: set.getCurrentUser().getSubscribedDatabases()) {
                    CqProductInfo info = (CqProductInfo)userDb.getProductInfo();
                    System.out.println (userDb.getUserFriendlyLocation().getRepo()
                                        + ": " + info.getFullProductVersion() +
                                        " (" + info.getStageLabel()+ ", OMREV " 
                                        + (info.getObjectModelVersionMajor()*100
                                        + info.getObjectModelVersionMinor()) + ")");
                }
            }
        } catch(Throwable ex) {
            ex.printStackTrace();
        } finally {
            System.exit(0);  // pour mettre fin aux unités d'exécution Swing
        }
    }
    
    /** Propriétés à afficher pour les bases de données utilisateur souscrites */
    static final PropertyRequest DB_PROPS =
                new PropertyRequest(CqDbSet.CURRENT_USER
                    .nest(CqUser.SUBSCRIBED_DATABASES
                          .nest(CqUserDb.USER_FRIENDLY_LOCATION,
                                CqUserDb.PRODUCT_INFO)));
}
Pour l'utilisation dans le reste de ce tutoriel, nous définissons Utilities.getUserDbList. Il utilise la même technique que l'exemple précédent pour calculer l'ensemble des bases de données utilisateur disponibles, où chaque proxy de base de données utilisateur du résultat est rempli par un jeu de propriétés fournies en tant qu'argument de la méthode.
    static ResourceList<CqUserDb> getUserDbList(CqProvider provider, 
                                                PropertyRequest feedback)
    throws WvcmException
    {
        PropertyRequest wantedProps =
            new PropertyRequest(CqDbSet.CURRENT_USER
                .nest(CqUser.SUBSCRIBED_DATABASES.nest(feedback)));
        ResourceList<CqUserDb> result = provider.resourceList();

        for (CqDbSet set : provider.doGetDbSetList(wantedProps)) {
            if (set.getResourceError() == null)
                result.addAll(set.getCurrentUser().getSubscribedDatabases());
        }

        return result;
    }

La seule interaction avec l'application ClearQuest a lieu lors de l'appel de la méthode CqProvider.doGetDbSetList au démarrage de la boucle externe. La demande de propriété imbriquée DB_PROPS utilisée dans cet appel force ClearQuest à connecter l'utilisateur à chaque ensemble de bases de données qu'il connaît et à obtenir de la base de données une liste des bases de données utilisateur auxquelles il a souscrit.

Au fur et à mesure que cette méthode s'exécute, l'objet Rappel donné au fournisseur sera appelé pour chaque jeu de bases de données afin d'obtenir l'identité de l'utilisateur et le mot de passe pour ce jeu de bases de données. Si l'utilisateur ne peut pas fournir des accréditations appropriées pour un jeu de bases de données spécifique, l'exception failed-login est stockée dans la zone resource-error du proxy renvoyé. Une valeur non nulle dans cette zone est la méthode standard permettant d'avertir le client qu'une ressource dans une liste de ressources était inaccessible pour satisfaire une demande de propriété.

Maintenant que vous disposez d'une liste des bases de données utilisateur disponibles, vous pouvez vous connecter à une base de données spécifique pour commencer à travailler sur les ressources qu'elle contient.

Résumé de la leçon

Vous avez maintenant appris comment utiliser l'API CM ClearQuest pour répertorier des référentiels produit spécifiques tels que des bases de données utilisateur.
Dans cette leçon, vous avez appris les notions suivantes :
  • Comment utiliser l'API CM ClearQuest pour obtenir des bases de données utilisateur accessibles.
  • Connaître les objets CqUserDb.
< Précédent | Suivant >

Retour d'informations