クラス org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRoundRobin

org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRoundRobinに対する継承グラフ

Inheritance graph
[凡例]
org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRoundRobinのコラボレーション図

Collaboration graph
[凡例]
すべてのメンバ一覧

説明

Implements a round-robin strategy for CREATE TABLE statements.

作者:
Emmanuel Cecchet
バージョン:
1.0

CreateTableRoundRobin.java38 行で定義されています。

Public メソッド

 CreateTableRoundRobin ()
 CreateTableRoundRobin (ArrayList backendList)
ArrayList getBackends (ArrayList backends) throws CreateTableException
String getInformation ()
void addBackendName (String name)
ArrayList getBackendList ()
int getNumberOfNodes ()
void setNumberOfNodes (int numberOfNodes)
String getTableName ()
void setTableName (String tableName)
int getPolicy ()
void setPolicy (int policy)
boolean isDefaultRule ()
String getXml ()

Protected 変数

ArrayList backendList
int nbOfNodes = 0
String tableName = null
int policy

Private 変数

int index = 0


コンストラクタとデストラクタ

org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRoundRobin.CreateTableRoundRobin  ) 
 

Creates a new CreateTableRoundRobin.

CreateTableRoundRobin.java45 行で定義されています。

00046   {
00047     super(CreateTablePolicy.ROUND_ROBIN);
00048   }

org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRoundRobin.CreateTableRoundRobin ArrayList  backendList  ) 
 

Creates a new CreateTableRoundRobin.

引数:
backendList ArrayList of DatabaseBackend

CreateTableRoundRobin.java55 行で定義されています。

00056   {
00057     super(CreateTablePolicy.ROUND_ROBIN, backendList);
00058   }


メソッド

void org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRule.addBackendName String  name  )  [inherited]
 

Add a backend name to the list of backends to wait for.

引数:
name backend name

CreateTableRule.java84 行で定義されています。

00085   {
00086     backendList.add(name);
00087   }

ArrayList org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRule.getBackendList  )  [inherited]
 

Returns the backendList.

戻り値:
ArrayList

CreateTableRule.java94 行で定義されています。

00095   {
00096     return backendList;
00097   }

ArrayList org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRoundRobin.getBackends ArrayList  backends  )  throws CreateTableException [virtual]
 

参照:
org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRule.getBackends(ArrayList)

org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRuleに実装されています.

CreateTableRoundRobin.java63 行で定義されています。

参照先 org.objectweb.cjdbc.controller.backend.DatabaseBackend.getName(), と org.objectweb.cjdbc.controller.backend.DatabaseBackend.isWriteEnabled.

00064   {
00065     int size = backends.size();
00066 
00067     if (nbOfNodes == 0)
00068       return null;
00069     else if (nbOfNodes == size)
00070       return backends;
00071 
00072     ArrayList clonedList;
00073 
00074     if (backendList.size() > 0)
00075     { // Keep only the backends that are affected by this rule
00076       clonedList = new ArrayList(nbOfNodes);
00077       for (int i = 0; i < size; i++)
00078       {
00079         DatabaseBackend db = (DatabaseBackend) backends.get(i);
00080         if (db.isWriteEnabled() && backendList.contains(db.getName()))
00081           clonedList.add(db);
00082       }
00083     }
00084     else
00085     { // Take all enabled backends
00086       clonedList = new ArrayList(size);
00087       for (int i = 0; i < size; i++)
00088       {
00089         DatabaseBackend db = (DatabaseBackend) backends.get(i);
00090         if (db.isWriteEnabled())
00091           clonedList.add(db);
00092       }
00093     }
00094 
00095     int clonedSize = clonedList.size();
00096 
00097     if (nbOfNodes == clonedSize)
00098       return backends;
00099     else if (nbOfNodes > clonedSize)
00100       throw new CreateTableException(
00101         "Asking for more backends ("
00102           + nbOfNodes
00103           + ") than available ("
00104           + clonedSize
00105           + ")");
00106 
00107     ArrayList result = new ArrayList(nbOfNodes);
00108 
00109     synchronized (this)
00110     { // index must be modified in mutual exclusion
00111       for (int i = 0; i < nbOfNodes; i++)
00112       {
00113         index = (index + 1) % clonedSize;
00114         result.add(clonedList.remove(index));
00115       }
00116     }
00117 
00118     return result;
00119   }

String org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRoundRobin.getInformation  )  [virtual]
 

参照:
org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRule.getInformation()

org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRuleに実装されています.

CreateTableRoundRobin.java124 行で定義されています。

00125   {
00126     String s;
00127     if (tableName == null)
00128       s = "Default rule create table on ";
00129     else
00130       s = "Rule for table " + tableName + " create table on ";
00131 
00132     return s + nbOfNodes + " node(s) in round-robin from " + backendList;
00133   }

int org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRule.getNumberOfNodes  )  [inherited]
 

Returns the number of nodes.

戻り値:
an int value

CreateTableRule.java104 行で定義されています。

参照先 org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRule.nbOfNodes.

00105   {
00106     return nbOfNodes;
00107   }

int org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRule.getPolicy  )  [inherited]
 

Returns the policy.

戻り値:
an int value

CreateTableRule.java144 行で定義されています。

参照先 org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRule.policy.

00145   {
00146     return policy;
00147   }

String org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRule.getTableName  )  [inherited]
 

Returns the table name.

戻り値:
a String value

CreateTableRule.java124 行で定義されています。

参照元 org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTablePolicy.addRule().

00125   {
00126     return tableName;
00127   }

String org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRule.getXml  )  [inherited]
 

Gives information about the current policy in xml

戻り値:
a String value in xml

CreateTableRule.java192 行で定義されています。

参照先 org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRule.nbOfNodes, と org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRule.policy.

00194   {
00195     StringBuffer info = new StringBuffer();
00196     info.append(
00197       "<"
00198         + DatabasesXmlTags.ELT_CreateTable
00199         + " "
00200         + DatabasesXmlTags.ATT_tableName
00201         + "=\""
00202         + tableName
00203         + "\" "
00204         + DatabasesXmlTags.ATT_policy
00205         + "=\""
00206         + CreateTablePolicy.getXmlValue(policy)
00207         + "\" "
00208         + DatabasesXmlTags.ATT_numberOfNodes
00209         + "=\""
00210         + nbOfNodes
00211         + "\">");
00212     ArrayList list = this.getBackendList();
00213     int count = list.size();
00214     for (int i = 0; i < count; i++)
00215     {
00216       info.append(
00217         "<"
00218           + DatabasesXmlTags.ELT_BackendName
00219           + " "
00220           + DatabasesXmlTags.ATT_name
00221           + "=\""
00222           + ((String) list.get(i))
00223           + "\"/>");
00224     }
00225     info.append("</" + DatabasesXmlTags.ELT_CreateTable + ">");
00226     return info.toString();
00227   }

boolean org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRule.isDefaultRule  )  [inherited]
 

Returns true if this rule is the default rule.

戻り値:
boolean

CreateTableRule.java164 行で定義されています。

00165   {
00166     return this.tableName == null;
00167   }

void org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRule.setNumberOfNodes int  numberOfNodes  )  [inherited]
 

Sets the number of nodes.

引数:
numberOfNodes the number of nodes to set

CreateTableRule.java114 行で定義されています。

00115   {
00116     this.nbOfNodes = numberOfNodes;
00117   }

void org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRule.setPolicy int  policy  )  [inherited]
 

Sets the policy.

引数:
policy the policy to set

CreateTableRule.java154 行で定義されています。

00155   {
00156     this.policy = policy;
00157   }

void org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRule.setTableName String  tableName  )  [inherited]
 

Sets the table name.

引数:
tableName the table name to set

CreateTableRule.java134 行で定義されています。

00135   {
00136     this.tableName = tableName;
00137   }


変数

ArrayList org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRule.backendList [protected, inherited]
 

List of backend names to wait for.

CreateTableRule.java40 行で定義されています。

int org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRoundRobin.index = 0 [private]
 

CreateTableRoundRobin.java40 行で定義されています。

int org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRule.nbOfNodes = 0 [protected, inherited]
 

Number of nodes that must create the table.

CreateTableRule.java43 行で定義されています。

参照元 org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRule.getNumberOfNodes(), と org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRule.getXml().

int org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRule.policy [protected, inherited]
 

CreateTableRule.java51 行で定義されています。

参照元 org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRule.getPolicy(), と org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRule.getXml().

String org.objectweb.cjdbc.controller.loadbalancer.policies.createtable.CreateTableRule.tableName = null [protected, inherited]
 

Table name pattern to which this rule apply (null means it is the default rule).

CreateTableRule.java49 行で定義されています。


このクラスの説明は次のファイルから生成されました:
CJDBCversion1.0rc6に対してWed May 5 18:02:23 2004に生成されました。 doxygen 1.3.6