Exemplo n.º 1
0
 private SourceCodeEdge createEdgeBetweenParents(
     Class<? extends SourceCode> type, SourceClass from, SourceClass to, SourceCodeEdge rootEdge) {
   SourceCode fromParent = from.getParent(type);
   SourceCode toParent = to.getParent(type);
   SourceCodeEdge parentEdge = null;
   if (canWeLinkNodes(fromParent, toParent) && rootEdge != null) {
     if (graph.getEdge(fromParent, toParent) == null) {
       parentEdge = new SourceCodeEdge(fromParent, toParent, SourceCodeEdgeUsage.USES);
       parentEdge.addRootEdge(rootEdge);
       graph.addEdge(parentEdge);
       fromParent.add(Metric.CE, 1);
       toParent.add(Metric.CA, 1);
     } else {
       parentEdge = graph.getEdge(fromParent, toParent);
       if (!parentEdge.hasAnEdgeFromRootNode(rootEdge.getFrom())) {
         toParent.add(Metric.CA, 1);
       }
       if (!parentEdge.hasAnEdgeToRootNode(rootEdge.getTo())) {
         fromParent.add(Metric.CE, 1);
       }
       parentEdge.addRootEdge(rootEdge);
     }
   }
   return parentEdge;
 }