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.virtualdatabase.protocol;
00026
00027 import java.sql.SQLException;
00028
00029 import org.objectweb.cjdbc.common.sql.AbstractWriteRequest;
00030 import org.objectweb.cjdbc.controller.loadbalancer.AllBackendsFailedException;
00031 import org.objectweb.cjdbc.controller.requestmanager.distributed.DistributedRequestManager;
00032 import org.objectweb.cjdbc.controller.virtualdatabase.ControllerResultSet;
00033
00034
00035
00036
00037
00038
00039
00040 public class ExecWriteRequestWithKeys extends DistributedRequest
00041 {
00042
00043
00044
00045 public ExecWriteRequestWithKeys(AbstractWriteRequest request)
00046 {
00047 super(request);
00048 }
00049
00050
00051
00052
00053 public void scheduleRequest(DistributedRequestManager drm)
00054 throws SQLException
00055 {
00056 drm.scheduleExecWriteRequest((AbstractWriteRequest) request);
00057 }
00058
00059
00060
00061
00062 public Object executeScheduledRequest(DistributedRequestManager drm)
00063 throws SQLException
00064 {
00065 try
00066 {
00067 ControllerResultSet execWriteRequestResult = null;
00068 try
00069 {
00070 execWriteRequestResult = drm
00071 .loadBalanceExecWriteRequestWithKeys((AbstractWriteRequest) request);
00072 }
00073 catch (AllBackendsFailedException e)
00074 {
00075 drm.updateAndNotifyExecWriteRequest((AbstractWriteRequest) request,
00076 false);
00077 drm.addFailedOnAllBackends(request);
00078 }
00079 drm.updateAndNotifyExecWriteRequest((AbstractWriteRequest) request, true);
00080 return execWriteRequestResult;
00081 }
00082 catch (SQLException e)
00083 {
00084 return e;
00085 }
00086 }
00087
00088 }