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 }