View Javadoc

1   package org.naftulin.configmgr.parsers;
2   
3   import java.io.IOException;
4   import java.io.InputStream;
5   import java.net.URL;
6   import java.util.Properties;
7   
8   import org.apache.log4j.Logger;
9   import org.naftulin.configmgr.ConfigurationManagementEntryImpl;
10  import org.naftulin.configmgr.ConfigurationManagerException;
11  import org.naftulin.configmgr.ConfigurationManagementEntry;
12  import org.naftulin.configmgr.ConfigurationType;
13  
14  /***
15   * Configuration entry parser converts property configuration record into property configuration management enttry.
16   * It parses the property file that the record describes, and stores the configuration
17   * as a properties in content of an {@link org.naftulin.configmgr.ConfigurationManagementEntry entry}.
18   * 
19   * @author Henry Naftulin
20   * @since 1.0
21   */
22  public class PropertyFileParserImpl implements ConfigEntryParser {
23  	private static final long serialVersionUID = 1L;
24  	private static final Logger log = Logger.getLogger(PropertyFileParserImpl.class);
25  	
26  	/***
27  	 * Retrurns a configuration managment entry by parsing the property file passed in.
28  	 * @param key the key configuration entry will be assigned
29  	 * @param fileUrl the file URL to be parsed.
30  	 * @return a configuration managment entry by parsing the record passed in.
31  	 * @throws ConfigurationManagerException if an error occurs while parsing an entry.
32  	 */
33  	public ConfigurationManagementEntry getConfigurationManagementEntry(final String key, 
34  			final URL fileUrl) throws ConfigurationManagerException {
35  		validateParameters(key, fileUrl);
36  		
37  		final String fileName = fileUrl.getFile();
38  		
39  		final Properties content = new Properties();
40  		InputStream stream;
41  		try {
42  			stream = fileUrl.openStream();		
43  			content.load(stream );
44  		} catch (IOException e) {
45  			log.warn("Error while reading property file", e);
46  			throw new ConfigurationManagerException("Error while reading property file",e);
47  		}
48  		final ConfigurationManagementEntry entry = new ConfigurationManagementEntryImpl(key, fileName, content, this, ConfigurationType.PROPERTIES);
49  		
50  		return entry;
51  	}
52  
53  	private void validateParameters(final String key, final URL fileUrl) throws ConfigurationManagerException {
54  		if (fileUrl == null) {
55  			throw new ConfigurationManagerException("file URL is null");
56  		}
57  		if (fileUrl.getFile() == null) {
58  			throw new ConfigurationManagerException("file name passed in the URL " + fileUrl + " is null");
59  		}
60  		if (key == null) { 
61  			throw new ConfigurationManagerException("key is null");
62  		}
63  	}
64  	
65  	/***
66  	 * Returns a string representation of this parser.
67  	 * @return a string representation of this parser.
68  	 */
69  	public String toString() {
70  		return "Property file parser";
71  	}
72  }