A minha dúvida é sobre o capítulo 3, tópico 4 “NÃO SE REPITA”
Mais precisamente nas páginas 44 e 45 estamos avaliando opções de design de código:
então temos aqui algumas opções de “quem chama quem”
- Main chama RenderizadorMDParaHTML, que chama GeradorPDF e GeradorEPUB
- Main chama RenderizadorMDParaHTML, GeradorPDF e GeradorEPUB, coordenando as classes
mas eu consigo enxergar uma terceira opção, que me parece melhor mas queria saber a opinião do autor sobre:
o Main chamaria GeradorPDF e GeradorEPUB, e essas duas classes iriam chamar o RenderizadorMDParaHTML, pois o método renderiza iria retornar uma String
E o código ficaria assim:
//GeradorPDF
public void gera(Path diretorioDosMD, Path arquivoDeSaida){
try(var writer = new PdfWriter(Files.newOutputStream(arquivoDeSaida));
var pdf = new PdfDocument(writer);
var pdfDocument = new Document(pdf)) {
//TRECHO DO CÓDIGO QUE IRIA POPULAR A VARIÁVEL HTML
RenderizadorMDParaHTML renderizadorMDParaHTML = new RenderizadorMDParaHTML();
String html = renderizadorMDParaHTML.renderiza(diretorioDosMD);
List<IElement> convertToElements = HtmlConverter.convertToElements(html);
for (IElement element : convertToElements) {
pdfDocument.add((IBlockElement) element);
}
// TODO: não adicionar página depois do último capítulo
pdfDocument.add(new AreaBreak(AreaBreakType.NEXT_PAGE));
} catch (Exception ex) {
throw new IllegalStateException("Erro ao criar arquivo PDF: " + arquivoDeSaida.toAbsolutePath(), ex);
}
}
//GeradorEPUB
public void gera(Path diretorioDosMD, Path arquivoDeSaida){
var epub = new Book();
//TRECHO DO CÓDIGO QUE IRIA POPULAR A VARIÁVEL HTML
RenderizadorMDParaHTML renderizadorMDParaHTML = new RenderizadorMDParaHTML();
String html = renderizadorMDParaHTML.renderiza(diretorioDosMD);
//TODO: usar título do capítulo
epub.addSection("Capítulo", new Resource(html.getBytes(), MediatypeService.XHTML));
var epubWriter = new EpubWriter();
try {
epubWriter.write(epub, Files.newOutputStream(arquivoDeSaida));
} catch (IOException ex) {
throw new IllegalStateException("Erro ao criar arquivo EPUB: " + arquivoDeSaida.toAbsolutePath(), ex);
}
}
Gostaria de saber o que acha dessa opção e se seria uma opção viável no nosso contexto.
Obrigado e parabéns pelo livro, está sendo uma leitura fantástica para mim.