private static void deleteFromDatasetGraph(DatasetGraph datasetGraph, Quad quad) { if ( datasetGraph instanceof DatasetGraphReadOnly ) System.err.println("READ ONLY") ; datasetGraph.delete(quad); }
@Override public Node remove(int index) { //List<Node> objects = getObjects(datasetGraph, quad); Node result = objects.get(index); Quad quad = createQuad(result); datasetGraph.delete(quad); return result; }
@Override public void delete(Quad quad) { getW().delete(quad); }
@Override public void delete(Node g, Node s, Node p, Node o) { getW().delete(g, s, p, o); }
@Override public boolean remove(Object obj) { boolean result = false; if(obj instanceof Node) { Node o = (Node)obj; objects.remove(o); Quad quad = createQuad(o); result = datasetGraph.contains(quad); datasetGraph.delete(quad); } return result; }
@Test(expected=UnsupportedOperationException.class) public void zero_delete_1() { DatasetGraph dsg = DatasetGraphZero.create(); dsg.delete(quad); }
@Test(expected = UnsupportedOperationException.class) public void noDeletingQuads() { emptyDsg().delete(null); }
@Test(expected = UnsupportedOperationException.class) public void noDeletingQuads2() { emptyDsg().delete(null, null, null, null); }
@Override public void performDelete( Triple t ) { Node g = graphNode(gn) ; if ( Quad.isUnionGraph(g) ) throw new DeleteDeniedException("Can't update the union graph of a dataset") ; Node s = t.getSubject() ; Node p = t.getPredicate() ; Node o = t.getObject() ; dsg.delete(g, s, p, o) ; }
@Test public void countChanges_03() { DatasetGraph dsgBase = DatasetGraphFactory.create() ; DatasetChangesCounter dsgChanges = new DatasetChangesCounter() ; DatasetGraph dsg = new DatasetGraphMonitor(dsgBase, dsgChanges) ; check(dsgChanges, 0, 0, 0, 0) ; dsg.add(quad1) ; dsg.add(quad1) ; dsg.delete(quad1) ; dsg.delete(quad1) ; check(dsgChanges, 1, 1, 1, 1) ; }
@Test public void countChanges_04() { DatasetGraph dsgBase = DatasetGraphFactory.create() ; DatasetChangesCounter dsgChanges = new DatasetChangesCounter() ; DatasetGraph dsg = new DatasetGraphMonitor(dsgBase, dsgChanges) ; check(dsgChanges, 0, 0, 0, 0) ; dsg.add(quad1) ; dsg.delete(quad1) ; dsg.add(quad1) ; dsg.delete(quad1) ; check(dsgChanges, 2, 2, 0, 0) ; }
@Test public void emptyGraph_1_link() { DatasetGraph dsg = emptyDataset() ; Node gn = NodeFactory.createURI("http://example/g") ; Quad q = SSE.parseQuad("(:g :s :p :o)"); dsg.add(q); List<Node> nodes1 = Iter.toList(dsg.listGraphNodes()); assertEquals(1, nodes1.size()); // Variation on emptyGraph_1 dsg.delete(q); List<Node> nodes2 = Iter.toList(dsg.listGraphNodes()); assertEquals(1, nodes2.size()); }
@Test public void listGraphNodesHasNoPhantomEmptyGraphs() { final DatasetGraph dsg = emptyDataset(); final Node g = createURI("http://example/g"); final Node s = createURI("http://example/s"); final Node p = createURI("http://example/p"); final Node o = createURI("http://example/o"); dsg.add(g, s, p, o); Iterator<Node> graphNodes = dsg.listGraphNodes(); assertTrue("Missing named graph!", graphNodes.hasNext()); assertEquals("Wrong graph name!", g, graphNodes.next()); assertFalse("Too many named graphs!", graphNodes.hasNext()); dsg.delete(g, s, p, o); graphNodes = dsg.listGraphNodes(); assertFalse("Too many named graphs!", graphNodes.hasNext()); }
@Test public void emptyGraph_1() { DatasetGraph dsg = emptyDataset() ; Node gn = NodeFactory.createURI("http://example/g") ; Quad q = SSE.parseQuad("(:g :s :p :o)"); dsg.add(q); List<Node> nodes1 = Iter.toList(dsg.listGraphNodes()); assertEquals(1, nodes1.size()); dsg.delete(q); List<Node> nodes2 = Iter.toList(dsg.listGraphNodes()); assertEquals(0, nodes2.size()); }
@Test public void countChanges_02() { DatasetGraph dsgBase = DatasetGraphFactory.create() ; DatasetChangesCounter dsgChanges = new DatasetChangesCounter() ; DatasetGraph dsg = new DatasetGraphMonitor(dsgBase, dsgChanges) ; check(dsgChanges, 0, 0, 0, 0) ; dsg.add(quad1) ; dsg.delete(quad1) ; check(dsgChanges, 1, 1, 0, 0) ; }
@Test public void captureChanges_02() { DatasetGraph dsgBase = DatasetGraphFactory.create() ; DatasetChangesCapture dsgCapture = new DatasetChangesCapture(true) ; DatasetGraph dsg = new DatasetGraphMonitor(dsgBase, dsgCapture) ; dsg.add(quad1) ; dsg.delete(quad1) ; dsg.delete(quad1) ; dsg.add(quad2) ; dsg.add(quad2) ; List<Pair<QuadAction, Quad>> record = dsgCapture.getActions() ; assertEquals(5, record.size()) ; check(record, 0, ADD, quad1) ; check(record, 1, DELETE, quad1) ; check(record, 2, NO_DELETE, quad1) ; check(record, 3, ADD, quad2) ; check(record, 4, NO_ADD, quad2) ; }
@Test public void emptyGraph_2_link() { DatasetGraph dsg = emptyDataset() ; Node gn = NodeFactory.createURI("http://example/g") ; Quad q = SSE.parseQuad("(:g :s :p :o)"); dsg.add(q); assertTrue(dsg.containsGraph(gn)); // Variation on emptyGraph_2 dsg.delete(q); assertTrue(dsg.containsGraph(gn)); }
@Test public void emptyGraph_2() { DatasetGraph dsg = emptyDataset() ; Node gn = NodeFactory.createURI("http://example/g") ; Quad q = SSE.parseQuad("(:g :s :p :o)"); dsg.add(q); assertTrue(dsg.containsGraph(gn)); dsg.delete(q); assertFalse(dsg.containsGraph(gn)); } }
@Test public void captureChanges_01() { DatasetGraph dsgBase = DatasetGraphFactory.create() ; DatasetChangesCapture dsgCapture = new DatasetChangesCapture() ; DatasetGraph dsg = new DatasetGraphMonitor(dsgBase, dsgCapture) ; dsg.add(quad1) ; dsg.delete(quad1) ; dsg.add(quad2) ; dsg.add(quad2) ; List<Pair<QuadAction, Quad>> record = dsgCapture.getActions() ; // Records only real actions. assertEquals(3, record.size()) ; check(record, 0, ADD, quad1) ; check(record, 1, DELETE, quad1) ; check(record, 2, ADD, quad2) ; }
@Test public void quad_02() { DatasetGraph dsg = emptyDataset() ; assertNotNull(dsg) ; Quad quad = SSE.parseQuad("(quad <g> <s> <p> <o>)") ; dsg.add(quad) ; dsg.containsGraph(NodeFactory.createURI("g")) ; dsg.delete(quad) ; assertTrue(dsg.isEmpty()) ; assertTrue(dsg.getDefaultGraph().isEmpty()) ; assertTrue(dsg.getGraph(NodeFactory.createURI("g")).isEmpty()) ; }