001/*
002 * file InstallCheck.java
003 *
004 * Licensed Materials - Property of IBM
005 * Restricted Materials of IBM - you are allowed to copy, modify and 
006 * redistribute this file as part of any program that interfaces with 
007 * IBM Rational CM API.
008 *
009 * com.ibm.rational.stp.client.samples.InstallCheck
010 *
011 * (C) Copyright IBM Corporation 2005, 2008.  All Rights Reserved.
012 * Note to U.S. Government Users Restricted Rights:  Use, duplication or 
013 * disclosure restricted by GSA ADP  Schedule Contract with IBM Corp.
014 */
015package com.ibm.rational.stp.client.samples;
016
017import javax.wvcm.ProviderFactory;
018
019import com.ibm.rational.wvcm.stp.StpProvider;
020import com.ibm.rational.wvcm.stp.cq.CqProvider;
021
022/**
023 * An application for testing proper installation of the CM API library for a
024 * specific repository type or types
025 */
026public class InstallCheck {
027    /**
028     * Instantiates a provider and tests for successful instantiation of
029     * the repository types specified on the input command line.
030     * @param args The Selector symbols for the repository type(s) to be tested.
031     */
032    public static void main(String[] args)
033    {
034        int errors = 0;
035
036        try {
037            StpProvider provider = (StpProvider) ProviderFactory
038                .createProvider(StpProvider.PROVIDER_CLASS, null);
039            Package[] packages = Package.getPackages();
040            
041            for (int i = 0; i < args.length; ++i) {
042                StpProvider.Domain type = StpProvider.Domain.fromSymbol(args[i]);
043                Exception error = 
044                    (Exception)provider.getInstantiationErrors().get(type);
045    
046                if (error != null) {
047                    ++errors;
048                    error.printStackTrace();
049                } else {
050                    for (int j = 0; j < packages.length; ++j) {
051                        Package myPackage = packages[j];
052                        String name = myPackage.getName();
053                        
054                        if (name.indexOf("." + args[i]) >= 0
055                            && !name.startsWith("com.ibm.rational.wvcm")) {
056                            System.out.println(
057                                "Instantiated " + name
058                                + "  " + myPackage.getImplementationTitle()
059                                + ", " + myPackage.getImplementationVersion()
060                                + ", " + myPackage.getImplementationVendor());
061                        }
062                    }
063                }
064            }
065        } catch (Throwable t) {
066            errors = 100;
067            t.printStackTrace();
068        }
069        
070        System.exit(errors);
071    }
072}