00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 package org.objectweb.cjdbc.controller.backend;
00026
00027 import java.sql.SQLException;
00028
00029 import org.objectweb.cjdbc.common.log.Trace;
00030 import org.objectweb.cjdbc.controller.recoverylog.AbstractRecoveryLog;
00031 import org.objectweb.cjdbc.controller.recoverylog.BackendRecoveryInfo;
00032
00033
00034
00035
00036
00037
00038
00039 public class BackendStateListener
00040 {
00041
00042 Trace logger = Trace
00043 .getLogger(BackendStateListener.class
00044 .getName());
00045 private String virtualDatabaseName;
00046 private AbstractRecoveryLog recoveryLog;
00047
00048
00049
00050
00051
00052
00053
00054 public BackendStateListener(String vdbName, AbstractRecoveryLog recoveryLog)
00055 {
00056 this.virtualDatabaseName = vdbName;
00057 this.recoveryLog = recoveryLog;
00058 }
00059
00060
00061
00062
00063
00064
00065 public synchronized void changeState(DatabaseBackend backend)
00066 {
00067 try
00068 {
00069 recoveryLog.storeBackendRecoveryInfo(virtualDatabaseName,
00070 new BackendRecoveryInfo(backend.getName(), backend
00071 .getLastKnownCheckpoint(), backend.getStateValue(),
00072 virtualDatabaseName));
00073 }
00074 catch (SQLException e)
00075 {
00076 logger.error("Could not store informatione for backend:"
00077 + backend.getName(), e);
00078 }
00079 }
00080 }