package de.jos.labelgenerator.configuration.layoutProvider.impl; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import java.util.Properties; import java.util.logging.Level; import java.util.logging.Logger; import de.jos.labelgenerator.configuration.Layout; import de.jos.labelgenerator.configuration.layoutProvider.LayoutProvider; /** * Provider that provides Layouts from the classpath. * * @author andy * */ public class ClasspathLayoutProvider implements LayoutProvider { private static final Logger LOGGER = Logger.getLogger(ClasspathLayoutProvider.class.getName()); public List<Layout> getLayouts() { final List<Layout> result = new ArrayList<Layout>(); boolean found = true; int counter = 1; while (found) { final Properties properties = new Properties(); try { final String templateName = getFileName(counter); final InputStream in = getInputStream(templateName); if (in != null) { // read the properties properties.load(in); // create template result.add(new Layout(properties)); // increment counter counter++; } else { // set flag to end loop found = false; } } catch (IOException e) { LOGGER.log(Level.INFO, "Could not load template with id {0}.", counter); // set flag to end loop found = false; } } return result; } private String getFileName(int counter) { return String.format("layouts/layout_%s.properties", Integer.valueOf(counter)); } private InputStream getInputStream(String fileName) { return ClasspathLayoutProvider.class.getClassLoader().getResourceAsStream(fileName); } public static void main(String args[]) { ClasspathLayoutProvider provider = new ClasspathLayoutProvider(); System.out.println(provider.getLayouts()); } }