Merge /pub/main
[educational.data.git] / Dr.NO / src / drno / server / database / persistence / StateOldDirty.java
blobac2c348f41a0a69d73e80fc36a706e26205b7a79
1 /*
2 * Created on 2005-04-02 This file is created 2005-04-02 and
3 * descripes StateOldDirty
4 */
5 package drno.server.database.persistence;
7 import drno.exception.ConsistanceException;
8 import drno.exception.DatabaseDisconnectedException;
9 import drno.exception.ObjectLockException;
10 import drno.exception.UnkErrException;
11 import drno.server.database.persistence.repository.MapperFacade;
12 import drno.support.Logger;
14 /**
15 * The object is loaded from the database and needs saving.
17 * @author tobibobi
19 final class StateOldDirty extends AbstractState {
20 /** singleton instance */
21 public final static AbstractState instance = new StateOldDirty();
23 /**
24 * Singleton constructor.
25 * <p>
26 * private forces use of instance.
28 private StateOldDirty() {
31 boolean canUnload()
33 // Since the object is modified, it must not be
34 // unloaded.
35 return false;
38 void commit(LockObject lock, PersistentObject obj) throws ObjectLockException,
39 ConsistanceException,
40 UnkErrException
43 if (obj.isLockedForEdit(lock)) {
44 try {
45 obj.verify();
46 MapperFacade.instance().update(obj);
47 obj.setState(StateOldClean.instance);
49 catch (DatabaseDisconnectedException e) {
50 e.printStackTrace();
51 Logger.log(e);
53 } else
54 throw new ObjectLockException();
57 LockObject delete(LockObject lock, PersistentObject obj) throws ObjectLockException
59 if (obj.isLockedForEdit(lock)) {
60 obj.setState(StateOldDelete.instance);
61 return lock;
62 } else
63 throw new ObjectLockException();
67 void rollback(LockObject lock, PersistentObject obj) throws UnkErrException,
68 ObjectLockException
70 if (obj.isLockedForEdit(lock)) {
71 try {
72 MapperFacade.instance().reload(obj);
73 obj.setState(StateOldClean.instance);
74 obj.invalidateLock();
76 catch (DatabaseDisconnectedException e) {
77 Logger.log(e);
78 e.printStackTrace();
80 } else
81 throw new ObjectLockException();
84 LockObject save(PersistentObject obj) throws ObjectLockException
86 // hvis at man prøver at kalde den her funktion i
87 // denne state,
88 // tyder det på at en anden forsøger at få adgang -
89 // så fy fy...
90 System.err.println("Argh");
91 throw new ObjectLockException();