@Override public List<ContextNode> replaceContextNode(ContextNode contextNode) { if (contextNode.isRootContextNode()) return null; if (! contextNode.getContextNode().isRootContextNode()) return null; XDIAddress contextNodeXDIAddress = contextNode.getXDIAddress(); XDIAddress replacedContextNodeXDIAddress = replaceXDIAddress(contextNodeXDIAddress); if (log.isTraceEnabled()) log.trace("Replaced " + contextNodeXDIAddress + " with " + replacedContextNodeXDIAddress); if (contextNodeXDIAddress.equals(replacedContextNodeXDIAddress)) return super.replaceContextNode(contextNode); ContextNode replacedContextNode = GraphUtil.contextNodeFromComponents(replacedContextNodeXDIAddress); CopyUtil.copyContextNodeContents(contextNode, replacedContextNode, null); int additionalArcs = replacedContextNodeXDIAddress.getNumXDIArcs() - contextNodeXDIAddress.getNumXDIArcs(); replacedContextNode = replacedContextNode.getContextNode(additionalArcs); return Collections.singletonList(replacedContextNode); }
public void testConcatXDIAddressCopyStrategy() throws Exception { String graphString = "" + "=a=b<#c>/&/123" + "\n" + "=a/#e/=f" + "\n" + "=f/#g/=a=b"; String copiedGraphString = "" + "=x=y=a=b<#c>/&/123" + "\n" + "=x=y=a/#e/=x=y=f" + "\n" + "=x=y=f/#g/=x=y=a=b"; Graph graph1 = MemoryGraphFactory.getInstance().parseGraph(graphString); Graph graph2 = MemoryGraphFactory.getInstance().parseGraph(copiedGraphString); Graph graph3 = MemoryGraphFactory.getInstance().openGraph(); CopyUtil.copyGraph(graph1, graph3, new ConcatXDIAddressCopyStrategy(XDIAddress.create("=x=y"))); assertNotEquals(graph1, graph2); assertNotEquals(graph1, graph3); assertEquals(graph2, graph3); graph1.close(); graph2.close(); graph3.close(); }
public void testConcatXDIAddressCopyStrategyLight() throws Exception { String graphString = "" + "//=a"; String copiedGraphString = "" + "=x=y//=a"; Graph graph1 = MemoryGraphFactory.getInstance().parseGraph(graphString); Graph graph2 = MemoryGraphFactory.getInstance().parseGraph(copiedGraphString); Graph graph3 = MemoryGraphFactory.getInstance().openGraph(); CopyUtil.copyGraph(graph1, graph3, new ConcatXDIAddressCopyStrategy(XDIAddress.create("=x=y"))); assertNotEquals(graph1, graph2); assertNotEquals(graph1, graph3); assertEquals(graph2, graph3); graph1.close(); graph2.close(); graph3.close(); }
@Override public List<Relation> replaceRelation(Relation relation) { XDIAddress contextNodeXDIAddress = relation.getContextNode().getXDIAddress(); XDIAddress XDIaddress = relation.getXDIAddress(); XDIAddress targetXDIAddress = relation.getTargetXDIAddress(); XDIAddress replacedContextNodeXDIAddress = replaceXDIAddress(contextNodeXDIAddress); XDIAddress replacedTargetXDIAddress = replaceXDIAddress(targetXDIAddress); if (log.isTraceEnabled()) log.trace("Replaced " + contextNodeXDIAddress + " with " + replacedContextNodeXDIAddress); if (log.isTraceEnabled()) log.trace("Replaced " + targetXDIAddress + " with " + replacedTargetXDIAddress); Relation replacedRelation = GraphUtil.relationFromComponents(replacedContextNodeXDIAddress, XDIaddress, replacedTargetXDIAddress); return Collections.singletonList(replacedRelation); }