001    package net.sf.jolene.util;
002    
003    import net.sf.jolene.constants.Prefs;
004    import org.apache.log4j.LogManager;
005    import org.apache.log4j.Logger;
006    
007    import java.io.IOException;
008    import java.io.InputStream;
009    import java.net.URL;
010    import java.util.Iterator;
011    import java.util.Properties;
012    
013    /**
014     * Class to read jolene preferences from the jolene.properties file.
015     *
016     * @author Dan Howard
017     * @since Dec 30, 2005 10:41:11 AM
018     */
019    public class PrefsReader {
020    
021        private static final Logger log = LogManager.getLogger(PrefsReader.class);
022    
023        private PrefsReader() {
024        }
025    
026        public static void init() {
027            Object o = new Object();
028            synchronized (o) {
029                Properties properties = new Properties();
030                InputStream input = null;
031                try {
032                    URL resource = PrefsReader.class.getResource("/jolene.properties");
033                    if (resource == null) {
034                        log.info("jolene.properties not found. Default prefs will be used");
035                        return;
036                    }
037    
038                    log.info("Reading jolene.properties from " + resource.getFile());
039                    input = PrefsReader.class.getResourceAsStream("/jolene.properties");
040                    properties.load(input);
041                } catch (IOException e) {
042                    log.warn(e.getMessage(), e);
043                }
044    
045                Iterator it = properties.keySet().iterator();
046                while (it.hasNext()) {
047                    Object key;
048                    key = it.next();
049    
050                    Prefs pref = Prefs.valueOf(key.toString());
051                    if (pref != null) {
052                        log.info("Assigning jolene preference " + key + " to " + properties.get(key));
053                        pref.setValue(properties.get(key));
054                    } else {
055                        log.warn("Unknown PrefsReader preference in properties file: " + key);
056                    }
057                }
058    
059                if (input != null) {
060                    try {
061                        input.close();
062                    } catch (IOException e) {
063                        log.warn(e.getMessage());
064                    }
065                }
066    
067            }
068        }
069    }