下列範例使用 CqProvider.doGeDbSetList() 方法,取得提供者已知的所有 Rational ClearQuest 資料庫集清單。(資料庫集有時稱為配置或綱目儲存庫。)藉由存取每一個資料庫集,可取得使用者可存取的完整資料庫清單。
在這個範例中,以每一個使用者資料庫的資料庫集名稱 (CqDbSet.DISPLAY_NAME) 及其使用者資料庫名稱 (CqUserDb.DISPLAY_NAME) 之組合來識別該使用者資料庫。 以 Rational CM API 來說,這是識別使用者資料庫的標準方法。使用者資料庫的完整位置語法是 cq.userdb:<db-set>/<user-db>。
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));
// 反覆使用提供者已知的資料庫集
for (CqDbSet set : provider.doGetDbSetList(DB_PROPS)) {
// 如果使用者沒有存取權,則跳過資料庫集
if (set.getResourceError() != null)
continue;
// 識別使用者訂閱的使用者資料庫
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); // 終止 Swing 執行緒
}
}
/** 針對已訂閱的使用者資料庫顯示的內容 */
static final PropertyRequest DB_PROPS =
new PropertyRequest(CqDbSet.CURRENT_USER
.nest(CqUser.SUBSCRIBED_DATABASES
.nest(CqUserDb.USER_FRIENDLY_LOCATION,
CqUserDb.PRODUCT_INFO)));
}
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;
}
與 ClearQuest 應用程式的唯一互動,是發生於開始外部迴圈之際的 CqProvider.doGetDbSetList 方法呼叫期間。在該呼叫中使用的 DB_PROPS 巢狀內容要求會強迫 ClearQuest 將使用者記載至它已知的每一個資料庫集,並從該資料庫集取得該使用者訂閱的使用者資料庫清單。
當這個方法執行時,會為每一個資料庫集呼叫給予提供者的 Callback 物件,以取得該資料庫集的使用者身分和密碼。如果使用者無法為給予的資料庫集提供適當認證,則失敗登入異常會儲存於傳回的 Proxy 的資源錯誤欄位中。這個欄位中的非空值是通知用戶端,無法存取資源清單中的某個資源以滿足內容要求的標準方法。