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

org.objectweb.cjdbc.common.sql.metadata.MetadataContainer Class Reference

List of all members.

Public Member Functions

 MetadataContainer (String url)
boolean isCompatible (MetadataContainer container, Trace logger)
String toString ()
String getUrl ()

Static Public Member Functions

String getContainerKey (String methodName, Class[] parametersType, Object[] arguments)

Detailed Description

a MetadataContainer is basically a hashtable of jdbc metadata. We may want to override a few options from the usual Hashtable so I've put it in a separate class.

Author:
Nicolas Modrzyk

Emmanuel Cecchet

Version:
1.0

Definition at line 41 of file MetadataContainer.java.


Constructor & Destructor Documentation

org.objectweb.cjdbc.common.sql.metadata.MetadataContainer.MetadataContainer String  url  ) 
 

Creates a new MetadataContainer object

Parameters:
url which url is this container pointed to

Definition at line 51 of file MetadataContainer.java.

00052   {
00053     this.url = url;
00054   }


Member Function Documentation

String org.objectweb.cjdbc.common.sql.metadata.MetadataContainer.getContainerKey String  methodName,
Class[]  parametersType,
Object[]  arguments
[static]
 

Get the metadata container key for the given method.

Parameters:
methodName method invoked to generate the key in the container
parametersType parameters type of invoked method
arguments arguments used to invoke the method

Definition at line 130 of file MetadataContainer.java.

00132   {
00133     if (parametersType == null)
00134     { // Function without parameters, just store the function name as the key
00135       return methodName;
00136     }
00137     else
00138     { // Include all argument in function name
00139       StringBuffer key = new StringBuffer(methodName);
00140       key.append('(');
00141       for (int i = 0; i < parametersType.length; i++)
00142       {
00143         Class c = parametersType[i];
00144         if (c != null)
00145           key.append(c.getName());
00146         else
00147           key.append("null");
00148         key.append('=');
00149         Object arg = arguments[i];
00150         if (arg != null)
00151           key.append(arg.toString());
00152         else
00153           key.append("null");
00154         key.append(',');
00155       }
00156       // Replace last comma with )
00157       key.setCharAt(key.length() - 1, ')');
00158       return key.toString();
00159     }
00160   }

String org.objectweb.cjdbc.common.sql.metadata.MetadataContainer.getUrl  ) 
 

Returns the url value.

Returns:
Returns the url.

Definition at line 118 of file MetadataContainer.java.

Referenced by org.objectweb.cjdbc.common.sql.metadata.MetadataContainer.isCompatible().

00119   {
00120     return url;
00121   }

boolean org.objectweb.cjdbc.common.sql.metadata.MetadataContainer.isCompatible MetadataContainer  container,
Trace  logger
 

Check to see if this container metadata is compatible with another container. A general boolean is returned, but all incompatible values are logged as warning in the given parameter

Parameters:
container the container to check compatibility with
logger the logger, if null, echo on stderr
Returns:
true if all metadata are identical.

Definition at line 65 of file MetadataContainer.java.

References org.objectweb.cjdbc.common.sql.metadata.MetadataContainer.getUrl(), org.objectweb.cjdbc.common.sql.metadata.MetadataContainer.isCompatible(), and org.objectweb.cjdbc.common.log.Trace.warn().

Referenced by org.objectweb.cjdbc.common.sql.metadata.MetadataContainer.isCompatible().

00066   {
00067     if (keySet() == null)
00068       return container.keySet() == null;
00069     Iterator keys = keySet().iterator();
00070     boolean isCompatible = true;
00071     String key;
00072     Object value1;
00073     Object value2;
00074     String log;
00075     while (keys.hasNext())
00076     {
00077       key = (String) keys.next();
00078       value1 = get(key);
00079       value2 = container.get(key);
00080       if (!value1.equals(value2))
00081       {
00082         isCompatible = false;
00083         log = "Metadata key [" + key + "] is not compatible. (Backends are: ["
00084             + url + "] and [" + container.getUrl() + "] ; Values are:["
00085             + value1 + "] and [" + value2 + "])";
00086         if (logger != null)
00087           logger.warn(log);
00088         else
00089           System.err.println(log);
00090       }
00091     }
00092     return isCompatible;
00093   }

String org.objectweb.cjdbc.common.sql.metadata.MetadataContainer.toString  ) 
 

See also:
java.lang.Object#toString()

Definition at line 98 of file MetadataContainer.java.

00099   {
00100     if (keySet() == null)
00101       return "no metadata";
00102     StringBuffer buffer = new StringBuffer();
00103     Iterator keys = keySet().iterator();
00104     String element;
00105     while (keys.hasNext())
00106     {
00107       element = (String) keys.next();
00108       buffer.append(element + " : " + this.get(element) + line);
00109     }
00110     return buffer.toString();
00111   }


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