package org.jbake.render;
import org.apache.commons.configuration.CompositeConfiguration;
import org.jbake.app.ContentStore;
import org.jbake.app.DocumentList;
import org.jbake.app.Renderer;
import org.jbake.model.DocumentTypes;
import org.jbake.template.RenderingException;
import java.io.File;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
public class DocumentsRenderer implements RenderingTool {
@Override
public int render(Renderer renderer, ContentStore db, File destination, File templatesPath, CompositeConfiguration config) throws RenderingException {
int renderedCount = 0;
final List<String> errors = new LinkedList<String>();
for (String docType : DocumentTypes.getDocumentTypes()) {
DocumentList documentList = db.getUnrenderedContent(docType);
for (Map<String, Object> page : documentList) {
try {
renderer.render(page);
renderedCount++;
} catch (Exception e) {
errors.add(e.getMessage());
}
}
}
if (!errors.isEmpty()) {
StringBuilder sb = new StringBuilder();
sb.append("Failed to render documents. Cause(s):");
for (String error : errors) {
sb.append("\n").append(error);
}
throw new RenderingException(sb.toString());
} else {
return renderedCount;
}
}
}