KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > db4o > db4ounit > common > querying > CascadeDeleteDeleted


1 /* Copyright (C) 2004 - 2006 db4objects Inc. http://www.db4o.com
2
3 This file is part of the db4o open source object database.
4
5 db4o is free software; you can redistribute it and/or modify it under
6 the terms of version 2 of the GNU General Public License as published
7 by the Free Software Foundation and as clarified by db4objects' GPL
8 interpretation policy, available at
9 http://www.db4o.com/about/company/legalpolicies/gplinterpretation/
10 Alternatively you can write to db4objects, Inc., 1900 S Norfolk Street,
11 Suite 350, San Mateo, CA 94403, USA.
12
13 db4o is distributed in the hope that it will be useful, but WITHOUT ANY
14 WARRANTY; without even the implied warranty of MERCHANTABILITY or
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
16 for more details.
17
18 You should have received a copy of the GNU General Public License along
19 with this program; if not, write to the Free Software Foundation, Inc.,
20 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */

21 package com.db4o.db4ounit.common.querying;
22
23 import com.db4o.*;
24 import com.db4o.config.*;
25 import com.db4o.query.*;
26
27 import db4ounit.*;
28 import db4ounit.extensions.*;
29
30 public class CascadeDeleteDeleted extends AbstractDb4oTestCase {
31
32     public static class CddMember {
33         public String JavaDoc name;
34     }
35
36     public String JavaDoc name;
37
38     public Object JavaDoc untypedMember;
39
40     public CddMember typedMember;
41
42     public CascadeDeleteDeleted() {
43     }
44
45     public CascadeDeleteDeleted(String JavaDoc name) {
46         this.name = name;
47     }
48
49     protected void configure(Configuration config) {
50         config.objectClass(this).cascadeOnDelete(true);
51     }
52
53     protected void store() {
54         membersFirst("membersFirst commit");
55         membersFirst("membersFirst");
56
57         twoRef("twoRef");
58         twoRef("twoRef commit");
59         twoRef("twoRef delete");
60         twoRef("twoRef delete commit");
61     }
62
63     private void membersFirst(String JavaDoc name) {
64         CascadeDeleteDeleted cdd = new CascadeDeleteDeleted(name);
65         cdd.untypedMember = new CddMember();
66         cdd.typedMember = new CddMember();
67         db().set(cdd);
68     }
69
70     private void twoRef(String JavaDoc name) {
71         CascadeDeleteDeleted cdd = new CascadeDeleteDeleted(name);
72         cdd.untypedMember = new CddMember();
73         cdd.typedMember = new CddMember();
74         CascadeDeleteDeleted cdd2 = new CascadeDeleteDeleted(name);
75         cdd2.untypedMember = cdd.untypedMember;
76         cdd2.typedMember = cdd.typedMember;
77         db().set(cdd);
78         db().set(cdd2);
79
80     }
81
82     public void test() {
83         tMembersFirst("membersFirst commit");
84         tMembersFirst("membersFirst");
85         tTwoRef("twoRef");
86         tTwoRef("twoRef commit");
87         tTwoRef("twoRef delete");
88         tTwoRef("twoRef delete commit");
89         Assert.areEqual(0, countOccurences(CddMember.class));
90     }
91
92     private void tMembersFirst(String JavaDoc name) {
93         boolean commit = name.indexOf("commit") > 1;
94
95         Query q = newQuery(this.getClass());
96         q.descend("name").constrain(name);
97         ObjectSet objectSet = q.execute();
98         CascadeDeleteDeleted cdd = (CascadeDeleteDeleted) objectSet.next();
99         db().delete(cdd.untypedMember);
100         db().delete(cdd.typedMember);
101         if (commit) {
102             db().commit();
103         }
104         db().delete(cdd);
105         if (!commit) {
106             db().commit();
107         }
108     }
109
110     private void tTwoRef(String JavaDoc name) {
111         boolean commit = name.indexOf("commit") > 1;
112         boolean delete = name.indexOf("delete") > 1;
113         Query q = newQuery(this.getClass());
114         q.descend("name").constrain(name);
115         ObjectSet objectSet = q.execute();
116         CascadeDeleteDeleted cdd = (CascadeDeleteDeleted) objectSet.next();
117         CascadeDeleteDeleted cdd2 = (CascadeDeleteDeleted) objectSet.next();
118         if (delete) {
119             db().delete(cdd.untypedMember);
120             db().delete(cdd.typedMember);
121         }
122         db().delete(cdd);
123         if (commit) {
124             db().commit();
125         }
126         db().delete(cdd2);
127         if (!commit) {
128             db().commit();
129         }
130     }
131 }
132
Popular Tags