Author: reto
Date: Thu Mar 18 14:38:15 2010
New Revision: 924835
URL: http://svn.apache.org/viewvc?rev=924835&view=rev
Log:
using less memory by not caching iterator unless hwen triple removed
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.jena.storage/src/main/java/org/apache/clerezza/rdf/jena/storage/JenaGraphAdaptor.java
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.jena.storage/src/main/java/org/apache/clerezza/rdf/jena/storage/JenaGraphAdaptor.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.jena.storage/src/main/java/org/apache/clerezza/rdf/jena/storage/JenaGraphAdaptor.java?rev=924835&r1=924834&r2=924835&view=diff
==============================================================================
---
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.jena.storage/src/main/java/org/apache/clerezza/rdf/jena/storage/JenaGraphAdaptor.java
(original)
+++
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.jena.storage/src/main/java/org/apache/clerezza/rdf/jena/storage/JenaGraphAdaptor.java
Thu Mar 18 14:38:15 2010
@@ -67,32 +67,47 @@ public class JenaGraphAdaptor extends Ab
final ExtendedIterator jenaIter =
jenaGraph.find(tria2JenaUtil.convert2JenaNode(subject),
tria2JenaUtil.convert2JenaNode(predicate),
tria2JenaUtil.convert2JenaNode(object));
- ArrayList<Triple> data = new ArrayList<Triple>();
- while (jenaIter.hasNext()) {
- data.add(jena2TriaUtil.convertTriple(
-
(com.hp.hpl.jena.graph.Triple)jenaIter.next()));
- }
- final Iterator<Triple> base = data.iterator();
return new Iterator<Triple>() {
- Triple lastReturned = null;
+ private Triple lastReturned = null;
+ private Iterator<Triple> precached = null;
@Override
public boolean hasNext() {
- return base.hasNext();
+ if (precached != null) {
+ return precached.hasNext();
+ } else {
+ return jenaIter.hasNext();
+ }
}
@Override
public Triple next() {
- lastReturned = base.next();
+ if (precached != null) {
+ lastReturned = precached.next();
+ } else {
+ lastReturned =
jena2TriaUtil.convertTriple(
+
(com.hp.hpl.jena.graph.Triple)jenaIter.next());
+ }
return lastReturned;
}
@Override
public void remove() {
-
JenaGraphAdaptor.this.performRemove(lastReturned);
+ final Triple deleting = lastReturned;
+ if (precached == null) {
+ final ArrayList<Triple> data = new
ArrayList<Triple>();
+ while (hasNext()) {
+ data.add(next());
+ }
+ precached = data.iterator();
+ }
+ //jenaIter.remove();
+
//JenaGraphAdaptor.this.performRemove(lastReturned);
+
jenaGraph.delete(tria2JenaUtil.convertTriple(deleting));
}
};
+
}
@Override