package de.jos.labelgenerator.configuration.layoutProvider.impl;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FilenameFilter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.lang.StringUtils;
import de.jos.labelgenerator.Constants;
import de.jos.labelgenerator.configuration.Layout;
import de.jos.labelgenerator.configuration.addressProvider.FilesystemVCardAddressProvider;
import de.jos.labelgenerator.configuration.layoutProvider.LayoutProvider;
public class FilesystemLayoutProvider implements LayoutProvider {
private static final Logger LOGGER = Logger.getLogger(FilesystemLayoutProvider.class.getName());
private static final String SUFFIX_PROPERTIES = ".properties";
private List<Layout> layouts = new ArrayList<Layout>();
public FilesystemLayoutProvider() {
final File layoutDirectory = Constants.FILE_DIRECTORY_LAYOUT_FILE;
if (layoutDirectory.exists() && layoutDirectory.isDirectory()) {
// get all files in directory
final String[] fileNames = layoutDirectory.list(new PropertiesFilter());
System.out.println(fileNames.length);
for (String tmpFileName : fileNames) {
try {
final FileInputStream fin = new FileInputStream(new File(layoutDirectory.getAbsolutePath()
+ Constants.SEPARATOR + tmpFileName));
Properties properties = new Properties();
properties.load(fin);
layouts.add(new Layout(properties));
} catch (FileNotFoundException e) {
LOGGER.log(Level.SEVERE, "Could not find layout file {0} in directory {1} .", new Object[] {
tmpFileName, layoutDirectory });
} catch (IOException e) {
LOGGER.log(Level.SEVERE, "Could not read layout file {0} from directory {1} .", new Object[] {
tmpFileName, layoutDirectory });
}
}
}
}
public List<Layout> getLayouts() {
final List<Layout> layoutList = new ArrayList<Layout>();
layoutList.addAll(layouts);
return layoutList;
}
public static void main(String args[]) {
new FilesystemVCardAddressProvider();
}
private static final class PropertiesFilter implements FilenameFilter {
public boolean accept(File dir, String name) {
if (StringUtils.endsWith(name, SUFFIX_PROPERTIES)) {
return true;
}
return false;
}
}
}