1 21 package com.db4o.test; 22 23 import com.db4o.*; 24 import com.db4o.ext.*; 25 import com.db4o.query.*; 26 27 28 public class DeleteDeep { 29 30 public String name; 31 32 public DeleteDeep child; 33 34 public void storeOne(){ 35 addNodes(10); 36 name = "root"; 37 } 38 39 private void addNodes(int count){ 40 if(count > 0){ 41 child = new DeleteDeep(); 42 child.name = "" + count; 43 child.addNodes(count -1); 44 } 45 } 46 47 public void test(){ 48 ObjectContainer objectContainer = Test.objectContainer(); 49 Query q = objectContainer.query(); 50 q.constrain(DeleteDeep.class); 51 q.descend("name").constrain("root"); 52 DeleteDeep root = (DeleteDeep)q.execute().next(); 53 objectContainer.activate(root, Integer.MAX_VALUE); 54 55 deleteDeep(objectContainer, root); 56 57 objectContainer.commit(); 58 Test.ensureOccurrences(DeleteDeep.class, 0); 59 } 60 61 private void deleteDeep(ObjectContainer objectContainer, Object obj){ 62 ObjectContainer allToDelete = ExtDb4o.openMemoryFile(null); 63 allToDelete.set(obj); 64 ObjectSet objectSet = allToDelete.get(null); 65 while(objectSet.hasNext()){ 66 objectContainer.delete(objectSet.next()); 67 } 68 allToDelete.close(); 69 } 70 71 } 72 | Popular Tags |