Class ReportDocumentBuilder
- All Implemented Interfaces:
ReportBuilder<Document,Element>
public class ReportDocumentBuilder extends Object implements ReportBuilder<Document,Element>
Classe para evitar a redundância da criação de um objecto Document.
Existem dois tipos de nodos
- Folha: possuem um valor texto. Podem ser criados a partir de Strings ou conversões para String. Representam valores de um relatório
- Ramo: possuem nodos filhos. São elementos que normalmente representam um relatório
Para o builder ser reaproveitável na contrução de múltiplos nodos complexos, os elementos que serão manipulados estão em uma pilha. Quando necessário, o elemento que deve ser contruído é colocado no topo dessa pilha e depois retirado.
Para criações de elementos ramo que não são relatórios recomenda-se a utilização do método createComplexElement que recebe de parâmetro uma função anônima que indica as ações que o builder deve executar com esse elemento
-
Constructor Summary
Constructors Constructor Description ReportDocumentBuilder(String rootElementTag)
ReportDocumentBuilder(Document document)
-
Method Summary
Modifier and Type Method Description ReportDocumentBuilder
createElement(ReportElement value)
Cria um elemento baseado em um relatório.ReportDocumentBuilder
createElement(String tag, boolean bool)
Cria um elemento com um conteúdo booleanoReportDocumentBuilder
createElement(String tag, Number number)
Cria um elemento com um conteúdo numéricoReportDocumentBuilder
createElement(String tag, String value)
Cria um elemento com um conteúdo de textoReportDocumentBuilder
createElement(String elementTag, Consumer<ReportBuilder<Document,Element>> consumer)
Cria um elemento e o constrói com base em uma função anônima, esse método abstrái a pilha para a criação de elementos complexos.
Um exemplo do uso é na criação do elemento de certificado em DigitalIdentityReportReportDocumentBuilder
createElementForEach(String tag, String pluralTag, Collection<String> values)
Cria um elemento lista (plural tag) e elementos filhos dele com a tag<T> ReportBuilder<Document,Element>
createElementForEach(String tag, String pluralTag, Collection<T> values, BiConsumer<T,ReportBuilder<Document,Element>> consumer)
Cria uma lista de elementos e os constrói com base em uma função anônima.ReportDocumentBuilder
createElementForEach(Collection<? extends ReportElement> values)
Este método leva em conta a possibilidade de relatórios de tipos diferentes estarem presentes na lista.Element
getCurrentElement()
Obtém o elemento atualDocument
getRoot()
Obtém o elemento raizMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface br.ufsc.labsec.signature.conformanceVerifier.report.builder.ReportBuilder
createElement
-
Constructor Details
-
ReportDocumentBuilder
- Throws:
ParserConfigurationException
-
ReportDocumentBuilder
-
-
Method Details
-
createElement
Cria um elemento baseado em um relatório. O builder é 'emprestado' para o relatório, assim, o elemento a ser criado é adicionado ao topo da pilha e depois é removido- Specified by:
createElement
in interfaceReportBuilder<Document,Element>
- Parameters:
value
- relatório- Returns:
- builder
-
createElement
Description copied from interface:ReportBuilder
Cria um elemento com um conteúdo de texto- Specified by:
createElement
in interfaceReportBuilder<Document,Element>
- Parameters:
tag
- tag do elementovalue
- valor do elemento- Returns:
- builder
-
createElement
Description copied from interface:ReportBuilder
Cria um elemento com um conteúdo numérico- Specified by:
createElement
in interfaceReportBuilder<Document,Element>
- Parameters:
tag
- tag do elementonumber
- valor do elemento- Returns:
- builder
-
createElement
Description copied from interface:ReportBuilder
Cria um elemento com um conteúdo booleano- Specified by:
createElement
in interfaceReportBuilder<Document,Element>
- Parameters:
tag
- tag do elementobool
- valor do elemento- Returns:
- builder
-
createElementForEach
public ReportDocumentBuilder createElementForEach(String tag, String pluralTag, Collection<String> values)Description copied from interface:ReportBuilder
Cria um elemento lista (plural tag) e elementos filhos dele com a tag- Specified by:
createElementForEach
in interfaceReportBuilder<Document,Element>
- Parameters:
tag
- tag dos elementospluralTag
- tag listavalues
- valor dos elementos- Returns:
- builder
-
createElementForEach
Description copied from interface:ReportBuilder
Este método leva em conta a possibilidade de relatórios de tipos diferentes estarem presentes na lista. Primeiramente, os relatório são agrupados pela tag pluralizada e são adicionados ao elemento com esta tag.
Caso o elemento com a tag pluralizada não exista, ele é criado.
- Specified by:
createElementForEach
in interfaceReportBuilder<Document,Element>
- Parameters:
values
- relatórios- Returns:
- builder
-
getCurrentElement
Description copied from interface:ReportBuilder
Obtém o elemento atual- Specified by:
getCurrentElement
in interfaceReportBuilder<Document,Element>
- Returns:
- elemento atual
-
getRoot
Description copied from interface:ReportBuilder
Obtém o elemento raiz- Specified by:
getRoot
in interfaceReportBuilder<Document,Element>
- Returns:
- elemento raiz
-
createElement
public ReportDocumentBuilder createElement(String elementTag, Consumer<ReportBuilder<Document,Element>> consumer)Cria um elemento e o constrói com base em uma função anônima, esse método abstrái a pilha para a criação de elementos complexos.
Um exemplo do uso é na criação do elemento de certificado em DigitalIdentityReport- Specified by:
createElement
in interfaceReportBuilder<Document,Element>
- Parameters:
elementTag
- tag do elementoconsumer
- função de criação do elemento- Returns:
- builder
- See Also:
DigitalIdentityReport
-
createElementForEach
public <T> ReportBuilder<Document,Element> createElementForEach(String tag, String pluralTag, Collection<T> values, BiConsumer<T,ReportBuilder<Document,Element>> consumer)Description copied from interface:ReportBuilder
Cria uma lista de elementos e os constrói com base em uma função anônima. Esse método abstrai a pilha para a criação de elementos complexos.
O uso desse método é recomendado para a criação de listas de elementos que não são relatórios. O consumer, ou a função que o implementa, deve receber de argumento o valor T e o builder, nesta ordem.
Um exemplo do uso é na criação do elemento conformities emReport.buildConformity(SignatureReport.Conformity, ReportBuilder)
(SignatureReport.Conformity, ReportBuilder) Report#buildConformity}- Specified by:
createElementForEach
in interfaceReportBuilder<Document,Element>
- Type Parameters:
T
- tipo dos valores- Parameters:
tag
- tag do elementopluralTag
- tag da listavalues
- valores da listaconsumer
- função de criação do elemento- Returns:
- builder
-