package org.kefirsf.bb; import org.kefirsf.bb.conf.Configuration; import java.io.File; import java.io.InputStream; /** * Factory for creating BBProcessor from Stream, File, Resource with configuration or default bb-processor. * * @author Kefir */ public class BBProcessorFactory implements TextProcessorFactory { /** * Instance of this class. See the Singleton pattern */ private static final BBProcessorFactory instance = new BBProcessorFactory(); private final ConfigurationFactory configurationFactory = ConfigurationFactory.getInstance(); /** * Return instance of BBProcessorFactory * * @return factory instance */ public static BBProcessorFactory getInstance() { return instance; } /** * Private constructor. Because this is a singleton. */ private BBProcessorFactory() { } /** * Create the default bb-code processor. * * @return Default bb-code processor * @throws TextProcessorFactoryException when can't read the default code set resource */ public TextProcessor create() { return create(configurationFactory.create()); } /** * Create TextProcessor by programmatic configuration. * * @param conf programmatic configuration * @return bb-code text processor */ public TextProcessor create(Configuration conf) { return new ProcessorBuilder(conf).build(); } /** * Create the bb-processor using xml-configuration resource * * @param resourceName name of resource file * @return bb-code processor * @throws TextProcessorFactoryException when can't find or read the resource or illegal config file */ public TextProcessor createFromResource(String resourceName) { return create(configurationFactory.createFromResource(resourceName)); } /** * Create the bb-processor from XML InputStream * * @param stream the input stream with XML * @return bb-code processor * @throws TextProcessorFactoryException when can't build Document */ public TextProcessor create(InputStream stream) { return create(configurationFactory.create(stream)); } /** * Create the bb-code processor from file with XML-configuration. * * @param file file with configuration * @return bb-code processor * @throws TextProcessorFactoryException any problems */ public TextProcessor create(File file) { return create(configurationFactory.create(file)); } /** * Create the bb-code processor from file with XML-configuration. * * @param fileName name of file with configuration * @return bb-code processor * @throws TextProcessorFactoryException any problems */ public TextProcessor create(String fileName) { return create(new File(fileName)); } }