Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
ImplementationExt |
|
| 1.0;1 |
1 | package org.apache.ojb.odmg; | |
2 | ||
3 | /* Copyright 2002-2005 The Apache Software Foundation | |
4 | * | |
5 | * Licensed under the Apache License, Version 2.0 (the "License"); | |
6 | * you may not use this file except in compliance with the License. | |
7 | * You may obtain a copy of the License at | |
8 | * | |
9 | * http://www.apache.org/licenses/LICENSE-2.0 | |
10 | * | |
11 | * Unless required by applicable law or agreed to in writing, software | |
12 | * distributed under the License is distributed on an "AS IS" BASIS, | |
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
14 | * See the License for the specific language governing permissions and | |
15 | * limitations under the License. | |
16 | */ | |
17 | ||
18 | import org.odmg.Implementation; | |
19 | ||
20 | /** | |
21 | * Offers useful none odmg-standard methods of the odmg {@link org.odmg.Implementation} interface. | |
22 | * <p> | |
23 | * Note: All listed methods are <strong>not</strong> part of the standard ODMG-api - | |
24 | * they are special (proprietary) OJB extensions. | |
25 | * </p> | |
26 | * | |
27 | * @version $Id: ImplementationExt.java,v 1.1 2007-08-24 22:17:37 ewestfal Exp $ | |
28 | */ | |
29 | public interface ImplementationExt extends Implementation | |
30 | { | |
31 | /** | |
32 | * The used collection type class returned by OQL queries. | |
33 | * | |
34 | * @see org.apache.ojb.odmg.oql.EnhancedOQLQuery#execute() | |
35 | * @see org.odmg.OQLQuery#execute() | |
36 | * @return The collection class type | |
37 | */ | |
38 | public Class getOqlCollectionClass(); | |
39 | ||
40 | /** | |
41 | * Set the used collection type class returned by OQL queries. | |
42 | * <p/> | |
43 | * NOTE: Each specified class must implement interface {@link org.apache.ojb.broker.ManageableCollection} | |
44 | * to work proper with OJB. | |
45 | * | |
46 | * @param oqlCollectionClass The collection class used in OQL queries. | |
47 | */ | |
48 | public void setOqlCollectionClass(Class oqlCollectionClass); | |
49 | ||
50 | /** | |
51 | * If the OJB implicit locking feature (see {@link TransactionExt#setImplicitLocking(boolean)}) is | |
52 | * enabled, this define the lock type of all implicit locked objects. | |
53 | * <p/> | |
54 | * If set to <em>true</em>, acquiring a write-lock on a given object x implies write locks on all | |
55 | * implicit locked objects. | |
56 | * <br/> | |
57 | * If set to <em>false</em>, in any case implicit read-locks are acquired. | |
58 | * Acquiring a read- or write lock on x thus allways results in implicit read-locks | |
59 | * on all associated objects. | |
60 | * | |
61 | * @param impliciteWriteLocks If <em>true</em> implicit write locks will enabled. | |
62 | */ | |
63 | public void setImpliciteWriteLocks(boolean impliciteWriteLocks); | |
64 | ||
65 | /** | |
66 | * Is <em>true</em> when implicite write locks are enabled. | |
67 | * | |
68 | * @return <em>true</em> when implicit write locks are enabled. | |
69 | * @see #setImpliciteWriteLocks(boolean) | |
70 | */ | |
71 | public boolean isImpliciteWriteLocks(); | |
72 | ||
73 | /** | |
74 | * Set the global property <em>implicit locking</em>. This method can be used | |
75 | * to activate or deactivate the global implicit | |
76 | * locking mechanism. | |
77 | * <br/> | |
78 | * If set <em>true</em> OJB implicitly locks objects to ODMG transactions | |
79 | * after performing OQL queries. Also if implicit locking is used | |
80 | * locking objects is recursive, that is associated objects are also | |
81 | * locked. If ImplicitLocking is set to 'false', no locks are obtained | |
82 | * in OQL queries, lookup objects and there is also no recursive locking. | |
83 | * <p/> | |
84 | * However it's possible to set this value only for the current used {@link org.odmg.Transaction} | |
85 | * using {@link TransactionExt#setImplicitLocking(boolean)} and to detect the implicit locking | |
86 | * state of the used transaction instance call {@link TransactionExt#isImplicitLocking()}. | |
87 | * <br/> | |
88 | * Turning off implicit locking may improve performance but requires | |
89 | * additional care to make sure that all changed objects are properly | |
90 | * registered to the transaction. | |
91 | * | |
92 | * @param impliciteLocking If set <em>true</em> implicit locking is enabled, | |
93 | * if <em>false</em>, implicit locking is disabled. | |
94 | */ | |
95 | public void setImplicitLocking(boolean impliciteLocking); | |
96 | ||
97 | /** | |
98 | * Returns <em>true</em> if the global implicit locking is enabled | |
99 | * for this {@link org.odmg.Implementation} instance, else <em>false</em>. | |
100 | * <br/> | |
101 | * <strong>Important:</strong> The returned value is the global used setting for all | |
102 | * {@link org.odmg.Transaction#lock(Object, int)} calls. | |
103 | * <br/> | |
104 | * However it's possible to set this value only for the current used {@link org.odmg.Transaction} | |
105 | * using {@link TransactionExt#setImplicitLocking(boolean)} and to detect the implicit locking | |
106 | * state of the used transaction instance call {@link TransactionExt#isImplicitLocking()}. | |
107 | * | |
108 | * @return <em>true</em> if the global property <em>implicit locking</em><em>true</em> is enabled. | |
109 | * @see #setImplicitLocking(boolean) | |
110 | */ | |
111 | public boolean isImplicitLocking(); | |
112 | ||
113 | /** | |
114 | * Returns <em>true</em> if OJB's ordering algorithm is enabled. | |
115 | * | |
116 | * @see #setOrdering(boolean) | |
117 | */ | |
118 | public boolean isOrdering(); | |
119 | ||
120 | /** | |
121 | * Disable/enable OJB's ordering algorithm when insert, update, delete a | |
122 | * bunch of objects within a transaction. The ordering algorithm try to | |
123 | * calculate the correct order of the modified/new persistent objects to | |
124 | * prevent problems on commit of the transaction. | |
125 | * <br/> | |
126 | * If the used databases support 'deferred checks' it's recommended to | |
127 | * use this feature and to disable OJB's object ordering. | |
128 | * <p/> | |
129 | * However it's possible to set this value only for the current | |
130 | * used {@link org.odmg.Transaction} using {@link TransactionExt#setOrdering(boolean)} | |
131 | * | |
132 | * @param ordering If <em>true</em> OJB's ordering algorithm is used. | |
133 | */ | |
134 | public void setOrdering(boolean ordering); | |
135 | ||
136 | // /** | |
137 | // * Returns whether or not the persistent method calls determine | |
138 | // * the persistent object order on commit. | |
139 | // * | |
140 | // * @see #setNoteUserOrder(boolean) | |
141 | // */ | |
142 | // public boolean isNoteUserOrder(); | |
143 | // | |
144 | // /** | |
145 | // * If <em>true</em> the order of persisting method calls like | |
146 | // * <br/> - {@link org.odmg.Transaction#lock(Object, int)}). | |
147 | // * <br/> - {@link org.odmg.Database#deletePersistent(Object)}). | |
148 | // * <br/> - {@link org.odmg.Database#makePersistent(Object)}) | |
149 | // * determine the order of objects before commit. | |
150 | // * <br/> | |
151 | // * If <em>false</em> the ordering was determined by OJB's internal | |
152 | // * method calls and user calls. | |
153 | // * <br/> | |
154 | // * However it's possible to set this value only for the current | |
155 | // * used {@link org.odmg.Transaction} using {@link TransactionExt#setNoteUserOrder(boolean)} | |
156 | // * <p/> | |
157 | // * <strong>NOTE:</strong> If OJB's ordering algorithm (see | |
158 | // * {@link #setOrdering(boolean)}) is enabled, the | |
159 | // * order of objects may change on commit. | |
160 | // * | |
161 | // * @param noteUserOrder If <em>true</em> the order of persisting | |
162 | // * method calls determine the order of objects. | |
163 | // */ | |
164 | // public void setNoteUserOrder(boolean noteUserOrder); | |
165 | ||
166 | ||
167 | // /** | |
168 | // * Get object by OJB's {@link org.apache.ojb.broker.Identity}. | |
169 | // * | |
170 | // * @param id The identity of the object to look for. | |
171 | // * @return The matching object or <em>null</em>. | |
172 | // */ | |
173 | // public Object getObjectByIdentity(Identity id); | |
174 | ||
175 | // /** | |
176 | // * If set <em>true</em> the odmg implementation do it's best to find out the user intension, if set | |
177 | // * <em>false</em> OJB use an optimized mode and the user has to adhere strictly the odmg-api: | |
178 | // * <ul> | |
179 | // * <li> | |
180 | // * New objects can only be made persistent by using {@link org.odmg.Database#makePersistent(Object)} | |
181 | // * </li> | |
182 | // * <li> | |
183 | // * Only persistent objects can be locked with {@link org.odmg.Transaction#lock(Object, int)}. | |
184 | // * </li> | |
185 | // * <li> | |
186 | // * When deleting an object with {@link org.odmg.Database#deletePersistent(Object)} to reuse it | |
187 | // * within a transaction a call to {@link org.odmg.Database#makePersistent(Object)} is needed and | |
188 | // * field changes on objects marked as "deleted" are not allowed. | |
189 | // * </li> | |
190 | // * </ul> | |
191 | // * When running odmg in <em>safe-mode</em> these restrictions are "softened" and it's e.g. possible | |
192 | // * to persist new objects with {@link org.odmg.Transaction#lock(Object, int)}. | |
193 | // * <p/> | |
194 | // * The <em>optimized-mode</em> show a significant better performance, but needs strictness in using the API. | |
195 | // * | |
196 | // * @param safeMode Set <em>true</em> to enable the <em>safe-mode</em>, use <em>false</em> to enable | |
197 | // * the <em>optimized-mode</em>. | |
198 | // */ | |
199 | // void setSafeMode(boolean safeMode); | |
200 | // | |
201 | // /** | |
202 | // * Returns <em>true</em> if this class use the safe-mode for | |
203 | // * user interaction, else the optimized-mode is used. | |
204 | // */ | |
205 | // boolean isSafeMode(); | |
206 | } |