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


Reply via email to