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
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)