Ejemplo n.º 1
0
  def __init__(self, path):
    self.model = Model("ontology.graph")
    self.nodes = dict()
    self.actions = []
    self.network = NetworkBuilder()

    f = open(path)
    for line in f:
      if line[0] == '#':
        continue
      tokens = line.strip().split(' ')
      if len(tokens) < 3:
        continue
      if tokens[1] == 'type':
        class_name = self.model.get_class_info(tokens[-1])
        if class_name == 'N/A':
          print('UNKNOWN CLASS : ' + tokens[-1])
          continue
        else:
          node = Node(tokens[-1], tokens[0])
          self.nodes[tokens[0]] = node
      elif tokens[1] == 'isGroupOf':
        node_grp = NodeGroup(tokens[2], tokens[0], tokens[4])
        self.nodes[tokens[0]] = node_grp
      elif tokens[1] == 'uses':
        action = Action(tokens[0], tokens[2], tokens[4])
        self.actions.append(action)
      elif tokens[1] == 'networkType':
        self.network.build(tokens)
      elif tokens[1] == 'attachTo':
        attach_src = tokens[0]
        if attach_src in self.nodes:
          src = self.nodes[attach_src]
          if src.get_entity_type() == 'NodeGroup':
            members = src.get_members()
            for member in members:
              new_tokens = tokens
              new_tokens[0] = member
              self.network.build(new_tokens)
          else:
            self.network.build(tokens)
        else:
          self.network.build(tokens)
    f.close()
Ejemplo n.º 2
0
class Enterprise:
  def __init__(self, path):
    self.model = Model("ontology.graph")
    self.nodes = dict()
    self.actions = []
    self.network = NetworkBuilder()

    f = open(path)
    for line in f:
      if line[0] == '#':
        continue
      tokens = line.strip().split(' ')
      if len(tokens) < 3:
        continue
      if tokens[1] == 'type':
        class_name = self.model.get_class_info(tokens[-1])
        if class_name == 'N/A':
          print('UNKNOWN CLASS : ' + tokens[-1])
          continue
        else:
          node = Node(tokens[-1], tokens[0])
          self.nodes[tokens[0]] = node
      elif tokens[1] == 'isGroupOf':
        node_grp = NodeGroup(tokens[2], tokens[0], tokens[4])
        self.nodes[tokens[0]] = node_grp
      elif tokens[1] == 'uses':
        action = Action(tokens[0], tokens[2], tokens[4])
        self.actions.append(action)
      elif tokens[1] == 'networkType':
        self.network.build(tokens)
      elif tokens[1] == 'attachTo':
        attach_src = tokens[0]
        if attach_src in self.nodes:
          src = self.nodes[attach_src]
          if src.get_entity_type() == 'NodeGroup':
            members = src.get_members()
            for member in members:
              new_tokens = tokens
              new_tokens[0] = member
              self.network.build(new_tokens)
          else:
            self.network.build(tokens)
        else:
          self.network.build(tokens)
    f.close()

  def get_entity_type(self, entity_name):
    return self.nodes[entity_name].get_entity_type() 

  def print_app_graph(self):
    #for (k,node) in self.nodes.iteritems():
      #qname = self.model.get_class_info(node.get_class_id())
      #node_id = node.get_node_id()
      #print('--- ' + node.get_entity_type())
      #print(qname + ',' + node_id)
    print('digraph dataflow {') 
    for a in self.actions:
      src = self.nodes[a.get_src()]
      target = self.nodes[a.get_target()]
      relation = a.get_relation()
      if src.get_entity_type() == 'NodeGroup':
        src.expand_actions(True, target, relation)
      elif target.get_entity_type() == 'NodeGroup':
        target.expand_actions(False, src, relation)
      else:
        print_edge(a.get_src(), relation, a.get_target())
      if a.get_src() == 'SalesTeam_0':
        print(a.get_src() + '#############' +  a.get_target())
    print('}')

  def print_topology(self):
    print('graph topology {')
    self.network.print_topology()
    print('}')