1 /* 2 * db2sa: DB2 Syntax Assistant 3 * Copyright (C) Andres Gomez Casanova 4 * 5 * This file is part of db2sa. 6 * 7 * db2sa is free software: you can redistribute it and/or modify 8 * it under the terms of the GNU Lesser General Public License as published by 9 * the Free Software Foundation; either version 3 of the License, or 10 * (at your option) any later version. 11 * 12 * db2sa is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU Lesser General Public License for more details. 16 * 17 * You should have received a copy of the GNU Lesser General Public License 18 * along with this library; if not, see <http://www.gnu.org/licenses/>. 19 * 20 * Contact: 21 * a n g o c a at y a h o o dot c o m 22 * Cra. 45 No 61 - 31, Bogota, Colombia. 23 * 24 * Author: $LastChangedBy: angoca $: 25 * Date: $LastChangedDate: 2009-06-12 00:06:18 +0200 (Fri, 12 Jun 2009) $: 26 * Revision: $LastChangedRevision: 227 $: 27 * URL: $HeadURL: https://db2sa.svn.sourceforge.net/svnroot/db2sa/branches/db2sa_beta/source-code/src/main/java/name/angoca/db2sa/readers/ConfigurationReader.java $: 28 */ 29 package name.angoca.db2sa.readers; 30 31 import java.io.FileInputStream; 32 import java.io.FileNotFoundException; 33 import java.io.IOException; 34 import java.io.InputStream; 35 import java.util.InvalidPropertiesFormatException; 36 import java.util.Properties; 37 38 import name.angoca.db2sa.readers.exceptions.AbstractReaderException; 39 import name.angoca.db2sa.readers.exceptions.ConfigurationFileCorruptException; 40 import name.angoca.db2sa.readers.exceptions.ConfigurationFileNotFoundException; 41 import name.angoca.db2sa.readers.exceptions.ConfigurationFileProblemException; 42 43 /** 44 * This class read the configuration file and then it can return the set of 45 * parameters to the controller.<br/> 46 * <b>Control Version</b><br /> 47 * <ul> 48 * <li>0.0.1 Class creation.</li> 49 * <li>0.1.0 Recommendations from PMD.</li> 50 * <li>0.1.1 Organized.</li> 51 * <li>0.1.2 Close streams.</li> 52 * <li>1.0.0 Moved to version 1.</li> 53 * </ul> 54 * 55 * @author Andres Gomez Casanova <a 56 * href="mailto:a n g o c a at y a h o o dot c o m">(AngocA)</a> 57 * @version 1.0.0 2009-07-19 58 */ 59 public final class ConfigurationReader { 60 61 /** 62 * Default constructor private. 63 */ 64 private ConfigurationReader() { 65 // Nothing to do in the constructor. No tests. 66 } 67 68 /** 69 * Reads a file given its filename, and the retrieves the properties stored 70 * in the file. 71 * 72 * @param filename 73 * name of the file that contains the configuration of the 74 * application. 75 * @return The set of properties read from the file. 76 * @throws AbstractReaderException 77 * If an error reading the file occurs, error such as file not 78 * found, or invalid structure. 79 */ 80 public static Properties/* ! */readFile(final String/* ! */filename) 81 throws AbstractReaderException { 82 InputStream inputStream = null; 83 final Properties properties = new Properties(); 84 try { 85 // This file has the properties. 86 inputStream = new FileInputStream(filename); 87 // The file is XML and put the values in the properties. 88 properties.loadFromXML(inputStream); 89 } catch (FileNotFoundException e) { 90 throw new ConfigurationFileNotFoundException(filename, e); 91 } catch (InvalidPropertiesFormatException e) { 92 throw new ConfigurationFileCorruptException(filename, e); 93 } catch (IOException e) { 94 // I don't know how to test this part. It's outside my scope. 95 // TODO revisar la excepción, ya que puede confundir un poco. 96 throw new ConfigurationFileProblemException(e); 97 } finally { 98 try { 99 if (inputStream != null) { 100 inputStream.close(); 101 } 102 } catch (IOException e) { 103 // I don't know how to test this part. It's outside my scope. 104 // TODO Auto-generated catch block 105 e.printStackTrace(); 106 } 107 } 108 return properties; 109 } 110 111 }