// This software is released into the Public Domain. See copying.txt for details.
package org.openstreetmap.osmosis.tagfilter.common;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* Reads the content of a file containing "key.value" tags.
*
* <p>
* The content of the file contains one key.value pair per line. Example:<br>
*
* <code>
* railway.tram
* railway.tram_stop
* </code>
*
* @author Raluca Martinescu
*/
public class KeyValueFileReader {
/**
* Our logger for debug and error -output.
*/
private static final Logger LOG = Logger.getLogger(KeyValueFileReader.class.getName());
/**
* Where we read from.
*/
private BufferedReader reader;
/**
* Creates a new instance.
*
* @param keyValueFile
* The file to read key.value tags from.
* @throws FileNotFoundException
* in case the specified file does not exist
*/
public KeyValueFileReader(final File keyValueFile) throws FileNotFoundException {
this.reader = new BufferedReader(new FileReader(keyValueFile));
}
/**
* Reads the file and returns an array of key.value tags.
*
* @return an array of key.value tags
* @throws IOException
* in case the file could not be read
*/
public String[] loadKeyValues() throws IOException {
List<String> result = new LinkedList<String>();
try {
String line;
while ((line = reader.readLine()) != null) {
result.add(line);
}
} finally {
cleanup();
}
return result.toArray(new String[0]);
}
/**
* Releases any resources remaining open.
*/
private void cleanup() {
if (reader != null) {
try {
reader.close();
} catch (Exception e) {
LOG.log(Level.SEVERE, "Unable to close file reader.", e);
} finally {
reader = null;
}
}
}
}