src/org/objectweb/cjdbc/controller/loadbalancer/policies/createtable/CreateTableRandom.java

説明を見る。
00001 00025 package org.objectweb.cjdbc.controller.loadbalancer.policies.createtable; 00026 00027 import java.util.ArrayList; 00028 import java.util.Random; 00029 00030 import org.objectweb.cjdbc.controller.backend.DatabaseBackend; 00031 00038 public class CreateTableRandom extends CreateTableRule 00039 { 00040 private Random random = new Random(); 00041 00045 public CreateTableRandom() 00046 { 00047 super(CreateTablePolicy.RANDOM); 00048 } 00049 00055 public CreateTableRandom(ArrayList backendList) 00056 { 00057 super(CreateTablePolicy.RANDOM, backendList); 00058 } 00059 00063 public ArrayList getBackends(ArrayList backends) throws CreateTableException 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 result = new ArrayList(nbOfNodes); 00073 ArrayList clonedList; 00074 00075 if (backendList.size() > 0) 00076 { // Keep only the backends that are affected by this rule 00077 clonedList = new ArrayList(nbOfNodes); 00078 for (int i = 0; i < size; i++) 00079 { 00080 DatabaseBackend db = (DatabaseBackend) backends.get(i); 00081 if (db.isWriteEnabled() && backendList.contains(db.getName())) 00082 clonedList.add(db); 00083 } 00084 } 00085 else 00086 { // Take all enabled backends 00087 clonedList = new ArrayList(size); 00088 for (int i = 0; i < size; i++) 00089 { 00090 DatabaseBackend db = (DatabaseBackend) backends.get(i); 00091 if (db.isWriteEnabled()) 00092 clonedList.add(db); 00093 } 00094 } 00095 00096 int clonedSize = clonedList.size(); 00097 00098 if (nbOfNodes == clonedSize) 00099 return backends; 00100 else if (nbOfNodes > clonedSize) 00101 throw new CreateTableException( 00102 "Asking for more backends (" 00103 + nbOfNodes 00104 + ") than available (" 00105 + clonedSize 00106 + ")"); 00107 00108 for (int i = 0; i < nbOfNodes; i++) 00109 result.add(clonedList.remove(random.nextInt(clonedSize))); 00110 00111 return result; 00112 } 00113 00117 public String getInformation() 00118 { 00119 String s; 00120 if (tableName == null) 00121 s = "Default rule create table on "; 00122 else 00123 s = "Rule for table " + tableName + " create table on "; 00124 00125 return s + nbOfNodes + " node(s) randomly from " + backendList; 00126 } 00127 }

CJDBCversion1.0.4に対してTue Oct 12 15:16:01 2004に生成されました。 doxygen 1.3.8