View Javadoc

1   package org.apache.ojb.odmg.states;
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.apache.ojb.odmg.ObjectEnvelope;
19  
20  /**
21   * this state represents old objects which have been altered during tx.
22   */
23  public class StateOldDirty extends ModificationState
24  {
25  
26      /**
27       * return resulting state after marking clean
28       */
29      public ModificationState markClean()
30      {
31          return this;
32      }
33  
34      /**
35       * return resulting state after marking delete
36       */
37      public ModificationState markDelete()
38      {
39          return StateOldDelete.getInstance();
40      }
41  
42      /**
43       * return resulting state after marking dirty
44       */
45      public ModificationState markDirty()
46      {
47          return this;
48      }
49  
50      /**
51       * return resulting state after marking new
52       */
53      public ModificationState markNew()
54      {
55          return this;
56      }
57  
58      /**
59       * return resulting state after marking old
60       */
61      public ModificationState markOld()
62      {
63          return this;
64      }
65  
66      private static StateOldDirty _instance = new StateOldDirty();
67  
68      /**
69       * private constructor: use singleton instance
70       */
71      private StateOldDirty()
72      {
73      }
74  
75      /**
76       * perform a checkpoint, i.e. perform updates on underlying db but keep locks on objects
77       */
78      public static StateOldDirty getInstance()
79      {
80          return _instance;
81      }
82  
83      /**
84       * checkpoint the transaction
85       */
86      public void checkpoint(ObjectEnvelope mod)
87              throws org.apache.ojb.broker.PersistenceBrokerException
88      {
89          mod.doUpdate();
90      }
91  
92  
93      /**
94       * commit the associated transaction
95       */
96      public void commit(ObjectEnvelope mod) throws org.apache.ojb.broker.PersistenceBrokerException
97      {
98          mod.doUpdate();
99          mod.setModificationState(StateOldClean.getInstance());
100     }
101 
102     /**
103      * rollback transaction.
104      */
105     public void rollback(ObjectEnvelope mod)
106     {
107         mod.doEvictFromCache();
108 /*
109 arminw: we can't really restore object state with all dependencies and fields
110 without having a deep copy of the clean object. To avoid side-effects disable this
111 feature
112 */
113 //        // Call added to rollback the object itself so it has the previous values again when it is used further on.
114 //        mod.rollback();
115     }
116 
117     /*
118      * @see ModificationState#needsUpdate()
119      */
120     public boolean needsUpdate()
121     {
122         return true;
123     }
124 
125 }