コード例 #1
0
  def _extract_graph_node_attributes(self, xml_node):
    """Retorna os dados que devem ser atribuídos a um nó no grafo.

       Argumentos
       -----------

       xml_node é o nó a ser analisado.

    """
    # Para saber como extrair os dados do nó é necessário conhecer seu tipo.
    node_type = BaseFreemind.guess_node_type(xml_node)
    node_data = None

    if node_type == LinkNode.TYPE:
      node_data = GenericNode.has_structure(BaseFreemind.extract_node_text(xml_node), LinkNode.GLOBAL_STRUCTURE).groupdict()
    elif node_type == InfoNode.TYPE:
      node_data = GenericNode.has_structure(BaseFreemind.extract_node_text(xml_node), InfoNode.GLOBAL_STRUCTURE).groupdict()
    else:
      node_data = GenericNode.has_structure(BaseFreemind.extract_node_text(xml_node), StepNode.GLOBAL_STRUCTURE).groupdict()
      node_data['notes'] = self._freemind_instance.extract_comments(xml_node)

    return node_data
コード例 #2
0
  def build_graphs(self):
    """Constrói um grafo para cada cenário/caso de uso existente no mapa mental."""
    self._graph_list = []
    scenario_list = self._freemind_instance.extract_scenarios()

    for scenario in scenario_list:
      # Extrai os dados do caso de uso para adicionar como dados do primeiro nó do grafo.
      scenario_data = GenericNode.has_structure(BaseFreemind.extract_node_text(scenario), UCNode.GLOBAL_STRUCTURE)

      # Cria o grafo, adicionando os dados do cenário/caso de uso no primeiro
      # nó (raiz) e adiciona os demais nós recursivamente, utilizando busca em
      # profundidade.
      self._graph_list.append(ScenarioGraph(scenario_data.groupdict()))
      self._depth_first_builder(scenario, self._graph_list[-1], 0)