001    package com.khubla.pragmatach.framework.configuration;
002    
003    import java.io.InputStream;
004    import java.util.Enumeration;
005    import java.util.HashMap;
006    import java.util.Map;
007    import java.util.Properties;
008    
009    import com.khubla.pragmatach.framework.api.PragmatachException;
010    
011    /**
012     * @author tome
013     */
014    public class PropertiesFileConfigurationImpl extends BaseConfiguration {
015            /**
016             * file
017             */
018            private static final String CONFIGURATION_FILE = "/pragmatach.properties";
019            /**
020             * properties
021             */
022            private static Properties properties;
023    
024            @Override
025            public Map<String, String> getAll() throws PragmatachException {
026                    readProperties();
027                    final Map<String, String> ret = new HashMap<String, String>();
028                    final Enumeration<Object> enumer = properties.keys();
029                    while (enumer.hasMoreElements()) {
030                            final String k = (String) enumer.nextElement();
031                            ret.put(k, properties.getProperty(k));
032                    }
033                    return ret;
034            }
035    
036            @Override
037            public Object getObject(String name) throws PragmatachException {
038                    return resolveObject(properties.getProperty(name));
039            }
040    
041            @Override
042            public String getParameter(String name) throws PragmatachException {
043                    readProperties();
044                    return resolveString(properties.getProperty(name));
045            }
046    
047            /**
048             * read properties
049             */
050            private void readProperties() {
051                    try {
052                            if (null == properties) {
053                                    properties = new Properties();
054                                    InputStream is = null;
055                                    try {
056                                            is = PropertiesFileConfigurationImpl.class
057                                                            .getResourceAsStream(CONFIGURATION_FILE);
058                                            if (null != is) {
059                                                    properties.load(is);
060                                            }
061                                    } finally {
062                                            if (null != is) {
063                                                    is.close();
064                                            }
065                                    }
066                            }
067                    } catch (final Exception e) {
068                            e.printStackTrace();
069                    }
070            }
071    }