Class AttributeValueReport

java.lang.Object
br.ufsc.labsec.signature.conformanceVerifier.report.AbstractReport
br.ufsc.labsec.signature.conformanceVerifier.report.AttributeValueReport
All Implemented Interfaces:
ReportElement

public class AttributeValueReport
extends AbstractReport
  • Constructor Details

    • AttributeValueReport

      public AttributeValueReport​(String parent)
    • AttributeValueReport

      public AttributeValueReport​(HashMap<String,​Object> information)
  • Method Details

    • setCurrent

      public void setCurrent​(String newMapKey)
    • getCurrent

      public LinkedHashMap<String,​Object> getCurrent()
    • popCurrent

      public LinkedHashMap<String,​Object> popCurrent()
    • getElementTag

      public String getElementTag()
      Description copied from interface: ReportElement
      Retorna a tag do elemento
      Returns:
      A tag do elemento
    • buildElements

      protected void buildElements​(ReportBuilder<?,​?> documentBuilder)
      Constrói os elementos XML principais deste relatório utilizando o ReportBuilder.

      Define o elemento atual com base na tag deste elemento e, em seguida, delega a construção de elementos adicionais para cada entrada do mapa information. No final, o elemento atual é removido da pilha.

      Se ocorrer um erro de caractere inválido no nome de algum elemento, uma exceção DOMException será capturada e registrada.

      Specified by:
      buildElements in class AbstractReport
      Parameters:
      documentBuilder - o construtor de relatório utilizado para criar os elementos XML.
    • buildExtraElements

      protected void buildExtraElements​(ReportBuilder<?,​?> documentBuilder, String key, Object value)
      Constrói elementos XML adicionais de forma recursiva com base no tipo do valor associado à chave.

      Se o valor for uma String, um elemento simples será criado. Se for um LinkedHashMap, os elementos filhos serão construídos recursivamente. Se for uma List, será chamado o método buildElementForEach. Se for um ReportElement, será adicionado diretamente ao documento.

      Parameters:
      documentBuilder - o construtor de relatório usado para criar os elementos.
      key - o nome do elemento a ser criado.
      value - o valor associado à chave, que pode ser um mapa, lista, string ou ReportElement.
    • buildElementForEach

      protected <T> void buildElementForEach​(String key, ReportBuilder<?,​?> documentBuilder, List<T> elementList)
      Constrói elementos XML repetidos a partir de uma lista de dados.

      Este método verifica o tipo dos itens na lista: se forem do tipo ValidationDataReport, delega para buildCertElements. Caso contrário, a lista é formatada e separada entre elementos do tipo String e LinkedHashMap para criação estruturada dos elementos.

      Type Parameters:
      T - o tipo dos elementos contidos na lista.
      Parameters:
      key - a chave base usada para nomear os elementos XML.
      documentBuilder - o construtor de relatório utilizado para gerar os elementos.
      elementList - a lista de elementos a serem convertidos em XML.
    • buildCertElements

      protected void buildCertElements​(Collection<ValidationDataReport> reports, ReportBuilder<?,​?> documentBuilder)
      Constrói os elementos XML relacionados aos certificados a partir de uma coleção de relatórios de validação.

      Para cada certificado válido, é criado um elemento Certificate dentro de um contêiner Certificates utilizando o ReportBuilder. Cada relatório é responsável por construir seu próprio elemento de certificado através do método ValidationDataReport.buildCertificate(Pair, ReportBuilder).

      Parameters:
      reports - a coleção de objetos ValidationDataReport que contêm os dados dos certificados.
      documentBuilder - o construtor de relatório utilizado para gerar os elementos XML.
    • putValue

      public void putValue​(Object key, Object value)
      Insere um valor no mapa de informações, considerando o tipo da chave e do valor.

      Se a chave for uma String e o valor for uma String ou LinkedHashMap, o par será inserido diretamente no mapa atual.

      Se o valor for um AlgorithmIdentifier, será convertido para o nome do algoritmo e inserido como string.

      Se o valor for uma List, um novo contexto temporário será criado com a chave como nome, os elementos da lista serão processados e, ao final, o contexto será removido.

      Se a chave for um Certificate, será criado um contexto com base no número de série do certificado (se for uma instância de X509Certificate) e o valor será processado recursivamente.

      Parameters:
      key - a chave associada ao valor, podendo ser uma String ou um Certificate.
      value - o valor a ser inserido, podendo ser uma String, LinkedHashMap, List ou AlgorithmIdentifier.
    • putValue

      public void putValue​(Object value)
      Insere um valor no mapa atual, inferindo o tipo do valor fornecido.

      Se o valor for uma List, o tipo dos elementos é verificado: - Se forem certificados, a lista será processada especificamente como tal. - Caso contrário, será processada genericamente com base no tipo do primeiro elemento.

      Se o valor for um AbstractReport, será adicionado diretamente ao mapa com chave nula simbólica.

      Parameters:
      value - o valor a ser processado e inserido, podendo ser uma List ou um AbstractReport.
    • getValue

      public Object getValue​(String key)
      Retorna o valor associado à chave fornecida no mapa de informações.
      Parameters:
      key - a chave do valor a ser recuperado.
      Returns:
      o valor correspondente, ou null se a chave não existir.
    • getInformation

      public LinkedHashMap<String,​Object> getInformation()
      Retorna o mapa completo de informações armazenadas.

      Este mapa contém os pares chave-valor organizados durante a construção do relatório.

      Returns:
      o mapa de informações atual como LinkedHashMap.