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.io.Serializable;
00028 import java.util.ArrayList;
00029
00030 import org.objectweb.cjdbc.common.exceptions.ControllerException;
00031 import org.objectweb.cjdbc.common.xml.DatabasesXmlTags;
00032
00033
00034
00035
00036
00037
00038
00039
00040 public class BackendRecoveryPolicy implements Serializable
00041 {
00042 private String backendName;
00043 private boolean recoveryPolicy;
00044 private ArrayList controllers;
00045
00046
00047
00048
00049
00050
00051
00052 public BackendRecoveryPolicy(String backendName, boolean recoveryPolicy)
00053 {
00054 this.backendName = backendName;
00055 this.recoveryPolicy = recoveryPolicy;
00056 }
00057
00058
00059
00060
00061
00062
00063 public String getBackendName()
00064 {
00065 return backendName;
00066 }
00067
00068
00069
00070
00071
00072
00073 public boolean getRecoveryPolicy()
00074 {
00075 return recoveryPolicy;
00076 }
00077
00078
00079
00080
00081
00082
00083
00084
00085 public void addController(String controllerName) throws ControllerException
00086 {
00087 if (recoveryPolicy == false)
00088 throw new ControllerException(
00089 "Cannot define controllers when recovery policy is off.");
00090 if (controllers == null)
00091 controllers = new ArrayList();
00092 controllers.add(controllerName);
00093 }
00094
00095
00096
00097
00098
00099
00100
00101
00102 public boolean isEligibleForRecovery(String controllerName)
00103 {
00104 if (recoveryPolicy == false)
00105 return false;
00106 if (controllers == null)
00107 return true;
00108 else
00109 return controllers.contains(controllerName);
00110 }
00111
00112
00113
00114
00115
00116
00117 public String getXml()
00118 {
00119 String xml = "<" + DatabasesXmlTags.ELT_BackendRecoveryPolicy + " "
00120 + DatabasesXmlTags.ATT_backendName + "=\"" + backendName + "\" "
00121 + DatabasesXmlTags.ATT_recoveryPolicy + "=\""
00122 + (recoveryPolicy ? DatabasesXmlTags.VAL_on : DatabasesXmlTags.VAL_off);
00123 if (controllers != null)
00124 {
00125 xml += ">";
00126 int size = controllers.size();
00127 for (int i = 0; i < size; i++)
00128 xml += "<" + DatabasesXmlTags.ELT_ControllerName + " "
00129 + DatabasesXmlTags.ATT_name + "=\"" + backendName + "\"/>";
00130 xml += "</" + DatabasesXmlTags.ELT_BackendRecoveryPolicy + ">";
00131 }
00132 else
00133 xml += "\"/>";
00134 return xml;
00135 }
00136
00137 }