001 package hep.aida.ref.sql; 002 003 // Log4J 004 import org.apache.log4j.Logger; 005 006 // Java 007 import java.util.Properties; 008 import java.net.URL; 009 import java.io.InputStream; 010 import java.io.IOException; 011 012 /** <code>LoadedProperties</code> is {@link Properties} 013 * capable of being loaded from a Resource. 014 * <p><font color="#880088"> 015 * <pre> 016 * $Log: LoadedProperties.java,v $ 017 * Revision 1.4 2007/05/23 16:38:44 hrivnac 018 * logical connections for Plotter; better UML 019 * 020 * Revision 1.3 2004/10/27 14:19:03 hrivnac 021 * small bug fixes 022 * 023 * Revision 1.2 2004/10/22 15:32:59 hrivnac 024 * cleaned 025 * 026 * Revision 1.1 2004/10/22 14:22:44 hrivnac 027 * properties loading refactored 028 * 029 * </pre> 030 * </font></p> 031 * @opt attributes 032 * @opt operations 033 * @opt types 034 * @opt visibility 035 * @version $Id: LoadedProperties.java,v 1.4 2007/05/23 16:38:44 hrivnac Exp $ 036 * @author <a href="mailto:Julius.Hrivnac@cern.ch">J.Hrivnac</a> */ 037 class LoadedProperties extends Properties { 038 039 /** Load from <code>name</code> in current/top package or (if it doesn't 040 * exists) in <code>place</code> package. 041 * @param name The name of the Resource (usually with <code>.properties</code> 042 * extension). 043 * @param place The package to be searched if Resource doesn't exist in current/top 044 one. */ 045 LoadedProperties(String name, 046 String place) { 047 super(); 048 String resource0 = name; 049 String resource = place + "/" + name; 050 InputStream stream; 051 URL url = getClass().getClassLoader().getResource(resource0); 052 if (url == null) { 053 url = getClass().getClassLoader().getResource(resource); 054 } 055 if (url == null) { 056 log.error("Resource " + name + " can't be found"); 057 return; 058 } 059 log.debug("Reading Properties from " + url + " resource"); 060 try { 061 stream = url.openStream(); 062 load(stream); 063 } 064 catch (IOException e) { 065 Util.report("Properties can't be loaded from " + url, e); 066 } 067 } 068 069 /** Load from <code>fullname</code> Resource. 070 * @param fullname The name of the Resource with its package namespace 071 (usually with <code>.properties</code> extension). */ 072 LoadedProperties(String fullname) { 073 super(); 074 InputStream stream; 075 URL url = getClass().getClassLoader().getResource(fullname); 076 if (url == null) { 077 log.error("Resource " + fullname + " can't be found"); 078 return; 079 } 080 log.debug("Reading Properties from " + url + " resource"); 081 try { 082 stream = url.openStream(); 083 load(stream); 084 } 085 catch (IOException e) { 086 Util.report("Properties can't be loaded from " + url, e); 087 } 088 } 089 090 /** Logging . */ 091 private static Logger log = Logger.getLogger(LoadedProperties.class); 092 093 }