This is an automated email from the ASF dual-hosted git repository. andy pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/jena.git
commit c7bafa4556392699f212f36157da07615a1ff3c5 Author: Andy Seaborne <[email protected]> AuthorDate: Tue Feb 26 21:50:19 2019 +0000 Make deleteAny algorithm publicly available. --- .../java/org/apache/jena/sparql/core/DatasetGraphBase.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphBase.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphBase.java index ed120b9..9b4f4e5 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphBase.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/DatasetGraphBase.java @@ -101,16 +101,19 @@ abstract public class DatasetGraphBase implements DatasetGraph @Override public void delete(Node g, Node s, Node p, Node o) { delete(new Quad(g,s,p,o)) ; } - private static final int DeleteBufferSize = 1000 ; @Override /** Simple implementation but done without assuming iterator.remove() */ public void deleteAny(Node g, Node s, Node p, Node o) { - // Delete in slices rather than assume .remove() on the iterator is - // implemented. + deleteAny(this, g, s, p, o); + } + + private static final int DeleteBufferSize = 1000 ; + public static void deleteAny(DatasetGraph dsg, Node g, Node s, Node p, Node o) { + // Delete in slices rather than assume .remove() on the iterator is implemented. // We keep executing find(g, s, p, o) until we don't get a full slice. Quad[] buffer = new Quad[DeleteBufferSize]; while (true) { - Iterator<Quad> iter = find(g, s, p, o); + Iterator<Quad> iter = dsg.find(g, s, p, o); // Get a slice int len = 0; for ( ; len < DeleteBufferSize ; len++ ) { @@ -120,7 +123,7 @@ abstract public class DatasetGraphBase implements DatasetGraph } // Delete them. for ( int i = 0 ; i < len ; i++ ) { - delete(buffer[i]); + dsg.delete(buffer[i]); buffer[i] = null; } // Finished?
