public void clear() throws MaltChainedException { edgePool.checkInAll(); graphEdges.clear(); root.clear(); super.clear(); numberOfComponents++; }
public Edge addSecondaryEdge(ComparableNode source, ComparableNode target) throws MaltChainedException { if (source == null || target == null) { throw new SyntaxGraphException("Head or dependent node is missing."); } else if (!target.isRoot()) { Edge e = edgePool.checkOut(); e.setBelongsToGraph(this); e.setEdge((Node) source, (Node) target, Edge.SECONDARY_EDGE); graphEdges.add(e); return e; } return null; }
public void removeSecondaryEdge(ComparableNode source, ComparableNode target) throws MaltChainedException { if (source == null || target == null) { throw new SyntaxGraphException("Head or dependent node is missing."); } else if (!target.isRoot()) { Iterator<Edge> ie = ((Node) target).getIncomingEdgeIterator(); while (ie.hasNext()) { Edge e = ie.next(); if (e.getSource() == source) { ie.remove(); graphEdges.remove(e); edgePool.checkIn(e); } } } }
protected void removeDependencyEdge(Node head, Node dependent) throws MaltChainedException { if (head == null || dependent == null) { throw new SyntaxGraphException("Head or dependent node is missing."); } else if (!dependent.isRoot()) { Iterator<Edge> ie = dependent.getIncomingEdgeIterator(); while (ie.hasNext()) { Edge e = ie.next(); if (e.getSource() == head) { graphEdges.remove(e); ie.remove(); edgePool.checkIn(e); } } } else { throw new SyntaxGraphException("Head node is not a root node or a terminal node."); } }
protected Edge addDependencyEdge(DependencyNode head, DependencyNode dependent) throws MaltChainedException { if (head == null || dependent == null) { throw new SyntaxGraphException("Head or dependent node is missing."); } else if (!dependent.isRoot()) { if (singleHeadedConstraint && dependent.hasHead()) { return moveDependencyEdge(head, dependent); } DependencyNode hc = ((DependencyNode) head).findComponent(); DependencyNode dc = ((DependencyNode) dependent).findComponent(); if (hc != dc) { link(hc, dc); numberOfComponents--; } Edge e = edgePool.checkOut(); e.setBelongsToGraph(this); e.setEdge((Node) head, (Node) dependent, Edge.DEPENDENCY_EDGE); graphEdges.add(e); return e; } else { throw new SyntaxGraphException("Head node is not a root node or a terminal node."); } }