Main Page | Packages | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | Related Pages

org.objectweb.cjdbc.controller.virtualdatabase.protocol.VirtualDatabaseConfiguration Class Reference

List of all members.

Public Member Functions

String getControllerName ()
String getControllerJmxName ()
 VirtualDatabaseConfiguration (DistributedVirtualDatabase dvdb)
String getRmiHostname ()
String getRmiPort ()
boolean isCompatible (DistributedVirtualDatabase localDvdb)
HashMap getBackendPolicies ()

Detailed Description

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

Author:
Emmanuel Cecchet
Version:
1.0

Definition at line 47 of file VirtualDatabaseConfiguration.java.


Constructor & Destructor Documentation

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

Constructs a new VirtualDatabaseConfiguration object from a DistributedVirtualDatabase.

Parameters:
dvdb The distributed virtual database to get configuration from.

Definition at line 88 of file VirtualDatabaseConfiguration.java.

References org.objectweb.cjdbc.controller.requestmanager.RequestManager.dbs, 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.getBackendsInfo(), 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.jmx.RmiConnector.getHostName(), org.objectweb.cjdbc.controller.requestmanager.RequestManager.getLoadBalancer(), org.objectweb.cjdbc.controller.jmx.RmiConnector.getPort(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.getRequestManager(), org.objectweb.cjdbc.controller.requestmanager.RequestManager.getScheduler(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.getVirtualDatabaseName(), org.objectweb.cjdbc.controller.authentication.AuthenticationManager.getVirtualLogins(), org.objectweb.cjdbc.controller.virtualdatabase.DistributedVirtualDatabase.groupName, and org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.viewOwningController().

00089   {
00090     this.controllerName = dvdb.getControllerName();
00091     this.controllerJmxName = dvdb.viewOwningController();
00092     this.vdbName = dvdb.getVirtualDatabaseName();
00093     this.groupName = dvdb.getGroupName();
00094     this.vLogins = dvdb.getAuthenticationManager().getVirtualLogins();
00095     this.schedulerRAIDbLevel = dvdb.getRequestManager().getScheduler()
00096         .getRAIDbLevel();
00097     this.loadBalancerRAIDbLevel = dvdb.getRequestManager().getLoadBalancer()
00098         .getRAIDbLevel();
00099     this.dbs = dvdb.getRequestManager().getDatabaseSchema();
00100     this.backends = dvdb.getBackendsInfo(dvdb.getBackends());
00101     this.backendPolicies = dvdb.getBackendRecoveryPolicy();
00102 
00103     List connectors = RmiConnector.getRmiConnectors();
00104     if (connectors.size() > 0)
00105     {
00106       RmiConnector rmi = (RmiConnector) connectors.get(0);
00107       rmiHostname = rmi.getHostName();
00108       rmiPort = "" + rmi.getPort();
00109     }
00110     else
00111     {
00112       rmiHostname = controllerName.substring(0, controllerName.indexOf(":"));
00113       rmiPort = "" + JmxConstants.DEFAULT_JMX_RMI_PORT;
00114     }
00115   }


Member Function Documentation

HashMap org.objectweb.cjdbc.controller.virtualdatabase.protocol.VirtualDatabaseConfiguration.getBackendPolicies  ) 
 

Returns the backendPolicies value.

Returns:
Returns the backendPolicies.

Definition at line 284 of file VirtualDatabaseConfiguration.java.

00285   {
00286     return backendPolicies;
00287   }

String org.objectweb.cjdbc.controller.virtualdatabase.protocol.VirtualDatabaseConfiguration.getControllerJmxName  ) 
 

Returns the controllerJmxName value.

Returns:
Returns the controllerJmxName.

Definition at line 77 of file VirtualDatabaseConfiguration.java.

00078   {
00079     return controllerJmxName;
00080   }

String org.objectweb.cjdbc.controller.virtualdatabase.protocol.VirtualDatabaseConfiguration.getControllerName  ) 
 

Returns:
Returns the controllerName.

Definition at line 67 of file VirtualDatabaseConfiguration.java.

Referenced by org.objectweb.cjdbc.controller.virtualdatabase.DistributedVirtualDatabase.handleMessageMultiThreaded().

00068   {
00069     return controllerName;
00070   }

String org.objectweb.cjdbc.controller.virtualdatabase.protocol.VirtualDatabaseConfiguration.getRmiHostname  ) 
 

Returns:
Returns the rmiHostname.

Definition at line 120 of file VirtualDatabaseConfiguration.java.

Referenced by org.objectweb.cjdbc.controller.virtualdatabase.DistributedVirtualDatabase.handleMessageMultiThreaded().

00121   {
00122     return rmiHostname;
00123   }

String org.objectweb.cjdbc.controller.virtualdatabase.protocol.VirtualDatabaseConfiguration.getRmiPort  ) 
 

Returns:
Returns the rmiPort.

Definition at line 128 of file VirtualDatabaseConfiguration.java.

Referenced by org.objectweb.cjdbc.controller.virtualdatabase.DistributedVirtualDatabase.handleMessageMultiThreaded().

00129   {
00130     return rmiPort;
00131   }

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.

Parameters:
localDvdb The local distributed virtual database
Returns:
true if both configurations are compatible, false otherwise

Definition at line 140 of file VirtualDatabaseConfiguration.java.

References 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.common.shared.BackendInfo.getName(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.getRequestManager(), org.objectweb.cjdbc.controller.requestmanager.RequestManager.getScheduler(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.getVirtualDatabaseName(), org.objectweb.cjdbc.controller.authentication.AuthenticationManager.getVirtualLogins(), org.objectweb.cjdbc.controller.virtualdatabase.DistributedVirtualDatabase.isCompatibleBackend(), org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase.logger, and org.objectweb.cjdbc.common.log.Trace.warn().

00141   {
00142     try
00143     {
00144       if (controllerName.equals(localDvdb.getControllerName()))
00145       {
00146         localDvdb.logger
00147             .warn(Translate
00148                 .get("virtualdatabase.distributed.configuration.checking.duplicate.controller.name"));
00149         return false;
00150       }
00151 
00152       // Sanity checks for virtual database name and group name
00153       if (!vdbName.equals(localDvdb.getVirtualDatabaseName()))
00154       {
00155         localDvdb.logger
00156             .warn(Translate
00157                 .get("virtualdatabase.distributed.configuration.checking.mismatch.name"));
00158         return false;
00159       }
00160       if (!groupName.equals(localDvdb.getGroupName()))
00161       {
00162         localDvdb.logger
00163             .warn(Translate
00164                 .get("virtualdatabase.distributed.configuration.checking.mismatch.groupname"));
00165         return false;
00166       }
00167 
00168       // Authentication managers must contains the same set of elements but
00169       // possibly in different orders (equals require the element to be in the
00170       // same order).
00171       if (!vLogins.containsAll(localDvdb.getAuthenticationManager()
00172           .getVirtualLogins())
00173           || !localDvdb.getAuthenticationManager().getVirtualLogins()
00174               .containsAll(vLogins))
00175       {
00176         localDvdb.logger
00177             .warn(Translate
00178                 .get("virtualdatabase.distributed.configuration.checking.mismatch.vlogins"));
00179         return false;
00180       }
00181 
00182       // Scheduler and Load Balancer checking
00183       if (schedulerRAIDbLevel != localDvdb.getRequestManager().getScheduler()
00184           .getRAIDbLevel())
00185       {
00186         localDvdb.logger
00187             .warn(Translate
00188                 .get("virtualdatabase.distributed.configuration.checking.mismatch.scheduler"));
00189         return false;
00190       }
00191 
00192       if (loadBalancerRAIDbLevel != localDvdb.getRequestManager()
00193           .getLoadBalancer().getRAIDbLevel())
00194       {
00195         localDvdb.logger
00196             .warn(Translate
00197                 .get("virtualdatabase.distributed.configuration.checking.mismatch.loadbalancer"));
00198         return false;
00199       }
00200 
00201       // Checking backends
00202       int size = backends.size();
00203       for (int i = 0; i < size; i++)
00204       {
00205         BackendInfo b = (BackendInfo) backends.get(i);
00206         if (!localDvdb.isCompatibleBackend(b))
00207         {
00208           localDvdb.logger
00209               .warn(Translate
00210                   .get(
00211                       "virtualdatabase.distributed.configuration.checking.mismatch.backend.shared",
00212                       b.getName()));
00213           return false;
00214         }
00215       }
00216 
00217       // Database schema checking (if any)
00218       if (dbs == null)
00219       {
00220         localDvdb.logger
00221             .warn(Translate
00222                 .get("virtualdatabase.distributed.configuration.checking.noschema"));
00223       }
00224       else
00225       {
00226         // Check database schemas compatibility
00227         switch (loadBalancerRAIDbLevel)
00228         {
00229           case RAIDbLevels.RAIDb0 :
00230             // There must be no overlap between schemas
00231             if (dbs.equals(localDvdb.getRequestManager().getDatabaseSchema()))
00232             {
00233               localDvdb.logger
00234                   .warn(Translate
00235                       .get("virtualdatabase.distributed.configuration.checking.mismatch.databaseschema"));
00236               return false;
00237             }
00238             break;
00239           case RAIDbLevels.SingleDB :
00240           case RAIDbLevels.RAIDb1 :
00241             // Schemas must be identical
00242             if (!dbs.equals(localDvdb.getRequestManager().getDatabaseSchema()))
00243             {
00244               localDvdb.logger
00245                   .warn(Translate
00246                       .get("virtualdatabase.distributed.configuration.checking.mismatch.databaseschema"));
00247               return false;
00248             }
00249             break;
00250           case RAIDbLevels.RAIDb2 :
00251             // Common parts of the schema must be identical
00252             if (!dbs.isCompatibleWith(localDvdb.getRequestManager()
00253                 .getDatabaseSchema()))
00254             {
00255               localDvdb.logger
00256                   .warn(Translate
00257                       .get("virtualdatabase.distributed.configuration.checking.mismatch.databaseschema"));
00258               return false;
00259             }
00260             break;
00261           default :
00262             localDvdb.logger.error("Unsupported RAIDb level: "
00263                 + loadBalancerRAIDbLevel);
00264             return false;
00265         }
00266       }
00267 
00268       // Ok, all tests succeeded, configuration is compatible
00269       return true;
00270     }
00271     catch (Exception e)
00272     {
00273       localDvdb.logger.error(Translate
00274           .get("virtualdatabase.distributed.configuration.checking.error"), e);
00275       return false;
00276     }
00277   }


The documentation for this class was generated from the following file:
Generated on Mon Apr 11 22:04:50 2005 for C-JDBC by  doxygen 1.3.9.1