package org.docbag;
import org.apache.xmlgraphics.util.MimeConstants;
import org.docbag.creator.fop.FOPDocumentCreator;
import org.docbag.template.DocumentTemplateStream;
import org.docbag.template.repo.DefaultDocumentTemplateRepository;
import org.docbag.template.repo.DocumentTemplateRepository;
import org.docbag.template.transformer.TemplateTransformer;
import org.docbag.template.transformer.content.xml.EmptyContentHandlerFactory;
import org.docbag.template.transformer.xslt.DefaultXSLTTemplateTransformer;
/**
* Factory class creating instances of {@link FOPDocumentCreator} which is the default implementation of {@link DocumentCreator}.
*
* <p>If the default behaviour is not sufficient then simply create an instance of DocumentCreator like this:</p>
* <pre>
* DocumentCreator<DocumentStream, DocumentTemplateStream> creator = new FOPDocumentCreator(
* MimeConstants.MIME_POSTSCRIPT, new DefaultXSLTTemplateTransformer(), DefaultDocumentTemplateRepository.getInstance());
* </pre>
*
* <p>or more general:</p>
* <pre>
* DocumentCreator<Document, DocumentTemplate> creator = getDocumentCreator(...);
* </pre>
*
* @author Jakub Torbicki
*/
public class DocBag {
private DocBag() {
}
/**
* Creates an instance of {@link FOPDocumentCreator} with the default output type (PDF), default {@link TemplateTransformer}
* ({@link DefaultXSLTTemplateTransformer}) and default {@link DocumentTemplateRepository} ({@link DefaultDocumentTemplateRepository})
*/
public static DocumentCreator<DocumentStream, DocumentTemplateStream> newDocumentCreator() {
return new FOPDocumentCreator(MimeConstants.MIME_PDF, new DefaultXSLTTemplateTransformer(),
DefaultDocumentTemplateRepository.getInstance(), null);
}
/**
* Use this method if you want to choose whether to process embedded expressions or not.
*
* @param processExpressions true to process the expressions, false otherwise
*/
public static DocumentCreator<DocumentStream, DocumentTemplateStream> newDocumentCreator(boolean processExpressions) {
if (processExpressions) {
return newDocumentCreator();
} else {
return new FOPDocumentCreator(MimeConstants.MIME_PDF, new DefaultXSLTTemplateTransformer(new EmptyContentHandlerFactory()),
DefaultDocumentTemplateRepository.getInstance(), null);
}
}
/**
* Creates an instance of {@link FOPDocumentCreator} with the default output type (PDF), specified {@link TemplateTransformer}
* and default {@link DocumentTemplateRepository} ({@link DefaultDocumentTemplateRepository})
*
* @param transformer instance of {@link TemplateTransformer}
*/
public static DocumentCreator<DocumentStream, DocumentTemplateStream> newDocumentCreator(
TemplateTransformer<DocumentTemplateStream> transformer) {
return new FOPDocumentCreator(MimeConstants.MIME_PDF, transformer, DefaultDocumentTemplateRepository.getInstance());
}
/**
* Creates an instance of {@link FOPDocumentCreator} with the default output type (PDF), default {@link TemplateTransformer}
* ({@link DefaultXSLTTemplateTransformer}) and specified {@link DocumentTemplateRepository}
*
* @param repository instance of {@link DocumentTemplateRepository}
*/
public static DocumentCreator<DocumentStream, DocumentTemplateStream> newDocumentCreator(
DocumentTemplateRepository<DocumentTemplateStream> repository) {
return new FOPDocumentCreator(MimeConstants.MIME_PDF, new DefaultXSLTTemplateTransformer(), repository);
}
/**
* Creates an instance of {@link FOPDocumentCreator} with the default output type (PDF), specified {@link TemplateTransformer}
* and {@link DocumentTemplateRepository}
*
* @param transformer instance of {@link TemplateTransformer}
* @param repository instance of {@link DocumentTemplateRepository}
*/
public static DocumentCreator<DocumentStream, DocumentTemplateStream> newDocumentCreator(
TemplateTransformer<DocumentTemplateStream> transformer, DocumentTemplateRepository<DocumentTemplateStream> repository) {
return new FOPDocumentCreator(MimeConstants.MIME_PDF, transformer, repository);
}
/**
* Creates an instance of {@link FOPDocumentCreator} with the specified output type, specified {@link TemplateTransformer}
* and {@link DocumentTemplateRepository}
* @see org.apache.xmlgraphics.util.MimeConstants
* @param mimeType {@link org.apache.xmlgraphics.util.MimeConstants}
* @param transformer instance of {@link TemplateTransformer}
* @param repository instance of {@link DocumentTemplateRepository}
*/
public static DocumentCreator<DocumentStream, DocumentTemplateStream> newDocumentCreator(String mimeType,
TemplateTransformer<DocumentTemplateStream> transformer, DocumentTemplateRepository<DocumentTemplateStream> repository) {
return new FOPDocumentCreator(mimeType, transformer, repository);
}
/**
* Creates an instance of {@link FOPDocumentCreator} with the specified output type, specified {@link TemplateTransformer}
* and {@link DocumentTemplateRepository}
* @see org.apache.xmlgraphics.util.MimeConstants
* @param mimeType {@link org.apache.xmlgraphics.util.MimeConstants}
* @param transformer instance of {@link TemplateTransformer}
* @param repository instance of {@link DocumentTemplateRepository}
* @param config document creator specific configuration
*/
public static DocumentCreator<DocumentStream, DocumentTemplateStream> newDocumentCreator(String mimeType,
TemplateTransformer<DocumentTemplateStream> transformer, DocumentTemplateRepository<DocumentTemplateStream> repository, DocBagConfig config) {
return new FOPDocumentCreator(mimeType, transformer, repository, config);
}
}