001: package org.apache.ojb.odmg.states;
002:
003: /* Copyright 2002-2005 The Apache Software Foundation
004: *
005: * Licensed under the Apache License, Version 2.0 (the "License");
006: * you may not use this file except in compliance with the License.
007: * You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017:
018: import org.apache.ojb.odmg.ObjectEnvelope;
019: import org.apache.ojb.broker.PersistenceBrokerException;
020:
021: /**
022: * This state represents new objects which have been altered during tx.
023: */
024: public class StateNewDirty extends ModificationState {
025:
026: /**
027: * return resulting state after marking clean
028: */
029: public ModificationState markClean() {
030: return StateNewClean.getInstance();
031: }
032:
033: /**
034: * return resulting state after marking delete
035: */
036: public ModificationState markDelete() {
037: return StateNewDelete.getInstance();
038: }
039:
040: /**
041: * return resulting state after marking dirty
042: */
043: public ModificationState markDirty() {
044: return this ;
045: }
046:
047: /**
048: * return resulting state after marking new
049: */
050: public ModificationState markNew() {
051: return this ;
052: }
053:
054: /**
055: * return resulting state after marking old
056: */
057: public ModificationState markOld() {
058: return StateOldDirty.getInstance();
059: }
060:
061: private static StateNewDirty _instance = new StateNewDirty();
062:
063: /**
064: * private constructor: use singleton instance.
065: */
066: private StateNewDirty() {
067: }
068:
069: /**
070: * perform a checkpoint, i.e. perform updates on underlying db but keep locks on objects
071: */
072: public static StateNewDirty getInstance() {
073: return _instance;
074: }
075:
076: /**
077: * object is new, thus we need an INSERT to store it
078: */
079: public boolean needsInsert() {
080: return true;
081: }
082:
083: /**
084: * checkpoint the ObjectModification
085: */
086: public void checkpoint(ObjectEnvelope mod)
087: throws PersistenceBrokerException {
088: mod.doInsert();
089: mod.setModificationState(StateOldClean.getInstance());
090: }
091:
092: /**
093: * commit the associated transaction
094: */
095: public void commit(ObjectEnvelope mod)
096: throws PersistenceBrokerException {
097: mod.doInsert();
098: mod.setModificationState(StateOldClean.getInstance());
099: }
100:
101: /**
102: * rollback
103: *
104: */
105: public void rollback(ObjectEnvelope mod) {
106: mod.doEvictFromCache();
107: }
108:
109: }
|