Rev 3408 |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
/*
* Copyright (C) 2007 Steve Ratcliffe
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*
* Author: Steve Ratcliffe
* Create date: Feb 17, 2008
*/
package uk.me.parabola.mkgmap.osmstyle;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import uk.me.parabola.log.Logger;
/**
* Deal with a style that is contained in a directory.
*
* @author Steve Ratcliffe
*/
public class DirectoryFileLoader
extends StyleFileLoader
{
private static final Logger log =
Logger.
getLogger(DirectoryFileLoader.
class);
private final File dir
;
/**
* Create a loader given the directory as a File object.
* @param dir The directory containing the style files.
*/
public DirectoryFileLoader
(File dir
) {
assert dir.
isDirectory();
this.
dir = dir
;
}
/**
* Open the specified file in the style definition.
*
* @param filename The name of the file in the style.
* @return An open file reader for the file.
*/
public Reader open
(String filename
) throws FileNotFoundException {
File file =
new File(dir, filename
);
Reader r =
null;
try {
r =
new InputStreamReader(new FileInputStream(file
),
"UTF-8");
} catch (UnsupportedEncodingException uee
) {
System.
out.
println("DirectoryFileLoader: Encoding UTF-8 not supported");
r =
new InputStreamReader(new FileInputStream(file
));
}
return new BufferedReader(r
);
}
/**
* Nothing needs doing in this case.
*/
public void close
() {
}
public String[] list
() {
log.
debug("dir list", dir
);
List<String> res =
new ArrayList<String>();
File[] allFiles = dir.
listFiles();
if (allFiles
!=
null) {
for (File file : allFiles
) {
log.
debug("dir loader", file
);
if (file.
isDirectory()) {
File style =
new File(file,
"version");
if (style.
exists())
res.
add(file.
getName());
}
}
}
// If there were no included directories, then the style name is the
// name of the directory itself.
if (res.
isEmpty())
res.
add(dir.
getName());
return res.
toArray(new String[res.
size()]);
}
}