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 }