001 package org.apache.ojb.otm.states;
002
003 /* Copyright 2003-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 /**
019 * this state represents persistent objects which have been altered
020 * during tx (ODMG StateOldDirty).
021 */
022 public class PersistentDirty extends State
023 {
024
025 PersistentDirty()
026 {
027 }
028
029 /**
030 * return a String representation
031 */
032 public String toString()
033 {
034 return "Persistent-dirty";
035 }
036
037 //-------------- State transitions --------------------
038
039 /**
040 * Describes the state transition when user modifies object
041 */
042 public State markDirty()
043 throws IllegalObjectStateException
044 {
045 return this;
046 }
047
048 /**
049 * Describes the state transition on makePersistent()
050 */
051 public State makePersistent()
052 throws IllegalObjectStateException
053 {
054 return this;
055 }
056
057 /**
058 * Describes the state transition on deletePersistent()
059 */
060 public State deletePersistent()
061 throws IllegalObjectStateException
062 {
063 return State.PERSISTENT_DELETED;
064 }
065
066 /**
067 * Describes the state transition on commit()
068 */
069 public State commit()
070 throws IllegalObjectStateException
071 {
072 return State.HOLLOW;
073 }
074
075 /**
076 * Describes the state transition on rollback()
077 */
078 public State rollback()
079 throws IllegalObjectStateException
080 {
081 return State.HOLLOW;
082 }
083
084 public State refresh()
085 throws IllegalObjectStateException
086 {
087 return State.PERSISTENT_CLEAN;
088 }
089
090 //-------------- State semantics --------------------
091
092 /**
093 * returns true is this state requires UPDATE
094 */
095 public boolean needsUpdate()
096 {
097 return true;
098 }
099
100 }