/** Tests if all anchor images in a given event actually occur in the graph. */
 private void checkEvent(RuleEvent event) {
   if (event instanceof CompositeEvent) {
     for (RuleEvent subEvent : ((CompositeEvent) event).getEventSet()) {
       checkEvent(subEvent);
     }
   } else {
     for (int i = 0; i < event.getRule().getAnchor().size(); i++) {
       AnchorValue anchorImage = event.getAnchorImage(i);
       HostGraph host = MatchCollector.this.state.getGraph();
       boolean instanceCondition = !(anchorImage instanceof ValueNode);
       boolean edgeCondition = !host.containsEdge((HostEdge) anchorImage);
       if (anchorImage.getAnchorKind() == AnchorKind.EDGE && edgeCondition) {
         assert false : String.format("Edge %s does not occur in graph %s", anchorImage, host);
       } else if (anchorImage.getAnchorKind() == AnchorKind.NODE
           && instanceCondition
           && edgeCondition) {
         assert false : String.format("Node %s does not occur in graph %s", anchorImage, host);
       }
     }
   }
 }
 /** Builds the connection map for a given host graph. */
 private Map<Record, List<Record>> buildConnect(HostGraph host) {
   this.recordMap.clear();
   Map<Record, List<Record>> connect = new LinkedHashMap<Record, List<Record>>();
   for (TypeEdge check : this.checks) {
     Set<? extends HostEdge> edges = host.edgeSet(check.label());
     for (HostEdge edge : edges) {
       Record source = getRecord(edge.source());
       List<Record> targets = connect.get(source);
       if (targets == null) {
         targets = new ArrayList<Record>();
         connect.put(source, targets);
       }
       targets.add(getRecord(edge.target()));
     }
   }
   return connect;
 }
Beispiel #3
0
 private HostNode addNode(HostGraph result, String id) {
   HostNode node = result.getFactory().createNode(Integer.parseInt(id));
   result.addEdge(node, TypeLabel.createLabel(EdgeRole.FLAG, "i" + id), node);
   return node;
 }