クラス org.objectweb.cjdbc.controller.virtualdatabase.protocol.VirtualDatabaseConfiguration

org.objectweb.cjdbc.controller.virtualdatabase.protocol.VirtualDatabaseConfigurationに対する継承グラフ

Inheritance graph
[凡例]
org.objectweb.cjdbc.controller.virtualdatabase.protocol.VirtualDatabaseConfigurationのコラボレーション図

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

説明

Transports the configuration of a virtual database to remote controllers so that compatibility checking can be performed.

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

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

Public メソッド

 VirtualDatabaseConfiguration (DistributedVirtualDatabase dvdb)
boolean isCompatible (DistributedVirtualDatabase localDvdb)

Static Public メソッド

Message getMessage (Object msg)

Private 変数

String controllerName
String vdbName
String groupName = null
ArrayList vLogins
int schedulerRAIDbLevel
int loadBalancerRAIDbLevel
DatabaseSchema dbs
ArrayList backends
HashMap backendPolicies


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

org.objectweb.cjdbc.controller.virtualdatabase.protocol.VirtualDatabaseConfiguration.VirtualDatabaseConfiguration DistributedVirtualDatabase  dvdb  ) 
 

Constructs a new VirtualDatabaseConfiguration object from a DistributedVirtualDatabase.

引数:
dvdb The distributed virtual database to get configuration from.

VirtualDatabaseConfiguration.java61 行で定義されています。

参照先 org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.getAuthenticationManager(), org.objectweb.cjdbc.controller.virtualdatabase.DistributedVirtualDatabase.getBackendRecoveryPolicy(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.getBackends(), org.objectweb.cjdbc.controller.virtualdatabase.DistributedVirtualDatabase.getControllerName(), org.objectweb.cjdbc.controller.requestmanager.RequestManager.getDatabaseSchema(), org.objectweb.cjdbc.controller.virtualdatabase.DistributedVirtualDatabase.getGroupName(), org.objectweb.cjdbc.controller.requestmanager.RequestManager.getLoadBalancer(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.getName(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.getRequestManager(), org.objectweb.cjdbc.controller.requestmanager.RequestManager.getScheduler(), と org.objectweb.cjdbc.controller.authentication.AuthenticationManager.getVirtualLogins().

00062   {
00063     this.controllerName = dvdb.getControllerName();
00064     this.vdbName = dvdb.getName();
00065     this.groupName = dvdb.getGroupName();
00066     this.vLogins = dvdb.getAuthenticationManager().getVirtualLogins();
00067     this.schedulerRAIDbLevel = dvdb.getRequestManager().getScheduler()
00068         .getRAIDbLevel();
00069     this.loadBalancerRAIDbLevel = dvdb.getRequestManager().getLoadBalancer()
00070         .getRAIDbLevel();
00071     this.dbs = dvdb.getRequestManager().getDatabaseSchema();
00072     this.backends = dvdb.getBackends();
00073     this.backendPolicies = dvdb.getBackendRecoveryPolicy();
00074   }


メソッド

Message org.objectweb.cjdbc.controller.virtualdatabase.protocol.CJDBCGroupMessage.getMessage Object  msg  )  [static, inherited]
 

Builds a JGroups message from the given object.

Src and dest are filled with null.

引数:
msg a Serializable object
戻り値:
a JGroup message containing the object

CJDBCGroupMessage.java47 行で定義されています。

00048   {
00049     return new Message(null, null, (Serializable) msg);
00050   }

boolean org.objectweb.cjdbc.controller.virtualdatabase.protocol.VirtualDatabaseConfiguration.isCompatible DistributedVirtualDatabase  localDvdb  ) 
 

Check if the local distributed virtual database is compatible with this virtual database configuration.

引数:
localDvdb The local distributed virtual database
戻り値:
true if both configurations are compatible, false otherwise

VirtualDatabaseConfiguration.java83 行で定義されています。

参照先 org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.equals(), org.objectweb.cjdbc.common.log.Trace.error(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.getAuthenticationManager(), org.objectweb.cjdbc.controller.virtualdatabase.DistributedVirtualDatabase.getControllerName(), org.objectweb.cjdbc.controller.requestmanager.RequestManager.getDatabaseSchema(), org.objectweb.cjdbc.controller.virtualdatabase.DistributedVirtualDatabase.getGroupName(), org.objectweb.cjdbc.controller.requestmanager.RequestManager.getLoadBalancer(), org.objectweb.cjdbc.controller.backend.DatabaseBackend.getName(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.getName(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.getRequestManager(), org.objectweb.cjdbc.controller.requestmanager.RequestManager.getScheduler(), org.objectweb.cjdbc.controller.authentication.AuthenticationManager.getVirtualLogins(), org.objectweb.cjdbc.controller.virtualdatabase.DistributedVirtualDatabase.isCompatibleBackend(), org.objectweb.cjdbc.common.sql.schema.DatabaseSchema.isCompatibleWith(), org.objectweb.cjdbc.controller.virtualdatabase.protocol.VirtualDatabaseConfiguration.loadBalancerRAIDbLevel, org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.logger, org.objectweb.cjdbc.controller.virtualdatabase.protocol.VirtualDatabaseConfiguration.schedulerRAIDbLevel, org.objectweb.cjdbc.controller.virtualdatabase.protocol.VirtualDatabaseConfiguration.vdbName, org.objectweb.cjdbc.controller.virtualdatabase.protocol.VirtualDatabaseConfiguration.vLogins, と org.objectweb.cjdbc.common.log.Trace.warn().

00084   {
00085     try
00086     {
00087       if (controllerName.equals(localDvdb.getControllerName()))
00088       {
00089         localDvdb.logger
00090             .warn(Translate
00091                 .get("virtualdatabase.distributed.configuration.checking.duplicate.controller.name"));
00092         return false;
00093       }
00094 
00095       // Sanity checks for virtual database name and group name
00096       if (!vdbName.equals(localDvdb.getName()))
00097       {
00098         localDvdb.logger
00099             .warn(Translate
00100                 .get("virtualdatabase.distributed.configuration.checking.mismatch.name"));
00101         return false;
00102       }
00103       if (!groupName.equals(localDvdb.getGroupName()))
00104       {
00105         localDvdb.logger
00106             .warn(Translate
00107                 .get("virtualdatabase.distributed.configuration.checking.mismatch.groupname"));
00108         return false;
00109       }
00110 
00111       // Authentication managers must contains the same set of elements but
00112       // possibly in different orders (equals require the element to be in the
00113       // same order).
00114       if (!vLogins.containsAll(localDvdb.getAuthenticationManager()
00115           .getVirtualLogins())
00116           || !localDvdb.getAuthenticationManager().getVirtualLogins()
00117               .containsAll(vLogins))
00118       {
00119         localDvdb.logger
00120             .warn(Translate
00121                 .get("virtualdatabase.distributed.configuration.checking.mismatch.vlogins"));
00122         return false;
00123       }
00124 
00125       // Scheduler and Load Balancer checking
00126       if (schedulerRAIDbLevel != localDvdb.getRequestManager().getScheduler()
00127           .getRAIDbLevel())
00128       {
00129         localDvdb.logger
00130             .warn(Translate
00131                 .get("virtualdatabase.distributed.configuration.checking.mismatch.scheduler"));
00132         return false;
00133       }
00134 
00135       if (loadBalancerRAIDbLevel != localDvdb.getRequestManager()
00136           .getLoadBalancer().getRAIDbLevel())
00137       {
00138         localDvdb.logger
00139             .warn(Translate
00140                 .get("virtualdatabase.distributed.configuration.checking.mismatch.loadbalancer"));
00141         return false;
00142       }
00143 
00144       // Checking backends
00145       int size = backends.size();
00146       for (int i = 0; i < size; i++)
00147       {
00148         DatabaseBackend b = (DatabaseBackend) backends.get(i);
00149         if (!localDvdb.isCompatibleBackend(b))
00150         {
00151           localDvdb.logger
00152               .warn(Translate
00153                   .get(
00154                       "virtualdatabase.distributed.configuration.checking.mismatch.backend.shared",
00155                       b.getName()));
00156           return false;
00157         }
00158       }
00159 
00160       // Database schema checking (if any)
00161       if (dbs == null)
00162       {
00163         localDvdb.logger
00164             .warn(Translate
00165                 .get("virtualdatabase.distributed.configuration.checking.noschema"));
00166       }
00167       else
00168       {
00169         // Check database schemas compatibility
00170         switch (loadBalancerRAIDbLevel)
00171         {
00172           case RAIDbLevels.RAIDb0 :
00173             // There must be no overlap between schemas
00174             if (dbs.equals(localDvdb.getRequestManager().getDatabaseSchema()))
00175             {
00176               localDvdb.logger
00177                   .warn(Translate
00178                       .get("virtualdatabase.distributed.configuration.checking.mismatch.databaseschema"));
00179               return false;
00180             }
00181             break;
00182           case RAIDbLevels.SingleDB :
00183           case RAIDbLevels.RAIDb1 :
00184             // Schemas must be identical
00185             if (!dbs.equals(localDvdb.getRequestManager().getDatabaseSchema()))
00186             {
00187               localDvdb.logger
00188                   .warn(Translate
00189                       .get("virtualdatabase.distributed.configuration.checking.mismatch.databaseschema"));
00190               return false;
00191             }
00192             break;
00193           case RAIDbLevels.RAIDb2 :
00194             // Common parts of the schema must be identical
00195             if (!dbs.isCompatibleWith(localDvdb.getRequestManager()
00196                 .getDatabaseSchema()))
00197             {
00198               localDvdb.logger
00199                   .warn(Translate
00200                       .get("virtualdatabase.distributed.configuration.checking.mismatch.databaseschema"));
00201               return false;
00202             }
00203             break;
00204           default :
00205             localDvdb.logger.error("Unsupported RAIDb level: "
00206                 + loadBalancerRAIDbLevel);
00207             return false;
00208         }
00209       }
00210 
00211       // Ok, all tests succeeded, configuration is compatible
00212       return true;
00213     }
00214     catch (Exception e)
00215     {
00216       localDvdb.logger.error(Translate
00217           .get("virtualdatabase.distributed.configuration.checking.error"), e);
00218       return false;
00219     }
00220   }


変数

HashMap org.objectweb.cjdbc.controller.virtualdatabase.protocol.VirtualDatabaseConfiguration.backendPolicies [private]
 

VirtualDatabaseConfiguration.java53 行で定義されています。

ArrayList org.objectweb.cjdbc.controller.virtualdatabase.protocol.VirtualDatabaseConfiguration.backends [private]
 

VirtualDatabaseConfiguration.java52 行で定義されています。

String org.objectweb.cjdbc.controller.virtualdatabase.protocol.VirtualDatabaseConfiguration.controllerName [private]
 

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

DatabaseSchema org.objectweb.cjdbc.controller.virtualdatabase.protocol.VirtualDatabaseConfiguration.dbs [private]
 

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

String org.objectweb.cjdbc.controller.virtualdatabase.protocol.VirtualDatabaseConfiguration.groupName = null [private]
 

VirtualDatabaseConfiguration.java47 行で定義されています。

int org.objectweb.cjdbc.controller.virtualdatabase.protocol.VirtualDatabaseConfiguration.loadBalancerRAIDbLevel [private]
 

VirtualDatabaseConfiguration.java50 行で定義されています。

参照元 org.objectweb.cjdbc.controller.virtualdatabase.protocol.VirtualDatabaseConfiguration.isCompatible().

int org.objectweb.cjdbc.controller.virtualdatabase.protocol.VirtualDatabaseConfiguration.schedulerRAIDbLevel [private]
 

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

参照元 org.objectweb.cjdbc.controller.virtualdatabase.protocol.VirtualDatabaseConfiguration.isCompatible().

String org.objectweb.cjdbc.controller.virtualdatabase.protocol.VirtualDatabaseConfiguration.vdbName [private]
 

VirtualDatabaseConfiguration.java46 行で定義されています。

参照元 org.objectweb.cjdbc.controller.virtualdatabase.protocol.VirtualDatabaseConfiguration.isCompatible().

ArrayList org.objectweb.cjdbc.controller.virtualdatabase.protocol.VirtualDatabaseConfiguration.vLogins [private]
 

VirtualDatabaseConfiguration.java48 行で定義されています。

参照元 org.objectweb.cjdbc.controller.virtualdatabase.protocol.VirtualDatabaseConfiguration.isCompatible().


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