/* * * Copyright 2007-2008 University Of Southern California * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package edu.isi.pegasus.planner.catalog.site; import edu.isi.pegasus.planner.catalog.SiteCatalog; import edu.isi.pegasus.common.logging.LogManager; import edu.isi.pegasus.common.logging.LogManagerFactory; import edu.isi.pegasus.planner.catalog.site.classes.SiteCatalogEntry; import edu.isi.pegasus.common.util.Version; import edu.isi.pegasus.planner.common.PegasusProperties; import java.util.Set; import java.util.ArrayList; import java.util.List; import java.util.Properties; /** * A Test program that shows how to load a Site Catalog, and query for all sites. * The configuration is picked from the Properties. The following properties * need to be set * <pre> * pegasus.catalog.site Text|XML|XML3 * pegasus.catalog.site.file path to the site catalog. * </pre> * * The Pegasus Properties can be picked from property files at various locations. * The priorities are explained below. * <pre> * - The default path for the properties file is $PEGASUS_HOME/etc/properties. * - A properties file if found at ${user.home}/.pegasusrc has higher property. * - Finally a user can specify the path to the properties file by specifying * the JVM property pegasus.user.properties . This has the higher priority. * </pre> * * @author Karan Vahi * @version $Revision$ */ public class TestSiteCatalog { /** * The main program. * * @param args arguments passed at runtime */ public static void main( String[] args ) { SiteCatalog catalog = null; PegasusProperties properties = PegasusProperties.nonSingletonInstance(); //setup the logger for the default streams. LogManager logger = LogManagerFactory.loadSingletonInstance( properties ); logger.logEventStart( "event.pegasus.catalog.site.test", "planner.version", Version.instance().toString() ); //set debug level to maximum //set if something is going wrong //logger.setLevel( LogManager.DEBUG_MESSAGE_LEVEL ); /* print out all the relevant site catalog properties that were specified*/ Properties siteProperties = properties.matchingSubset( "pegasus.catalog.site", true ); System.out.println( "Site Catalog Properties specified are " + siteProperties ); /* load the catalog using the factory */ try{ catalog = SiteFactory.loadInstance( PegasusProperties.nonSingletonInstance()); } catch ( SiteFactoryException e ){ System.out.println( e.convertException() ); System.exit( 2 ); } /* load all sites in site catalog */ try{ List s = new ArrayList(1); s.add( "*" ); System.out.println( "Loaded " + catalog.load( s ) + " number of sites " ); /* query for the sites, and print them out */ Set<String> sites = catalog.list(); System.out.println( "Sites loaded are " + sites ); /* get detailed information about all the sites */ for( String site: sites ){ SiteCatalogEntry entry = catalog.lookup( site ); System.out.println( entry ); } } catch ( SiteCatalogException e ){ e.printStackTrace(); } finally{ /* close the connection */ try{ catalog.close(); }catch( Exception e ){} } } }