fr.ign.cogit.geoxygene.datatools.ojb
Class GeOxygeneBrokerHelper

java.lang.Object
  extended by fr.ign.cogit.geoxygene.datatools.ojb.GeOxygeneBrokerHelper

public class GeOxygeneBrokerHelper
extends java.lang.Object

Redefinition de la classe org.apache.ojb.util.BrokerHelper d'OJB, permettant d'appeler une methode "javaToSql(Object, Connection) pour ecrire les structures dans Oracle. Par rapport a la version originale de BrokerHelper : les imports ont ete reorganises, le constructeur renomme, un parametre connection ajoute dans la signature de getValuesForObject (ligne 352), un ajout dans la methode getValuesForObject (ligne 375), un parametre connection ajoute dans getAllRwValues, un parametre connection ajoute dans getNonKeyRwValues, un parametre connection ajoute dans getKeyValues, un parametre connection ajoute dans getKeyValues. Les 4 dernieres modifs se font suite a des erreurs de compile, suite au premier ajout dans getValuesForObject. AB 11 juillet 2005 :
Utilisation des noms de classes et de la réflection pour permettre la compilation sépérée pour Oracle.
Patch pour permettre l'utilisation de la meme classe de "FieldConversion" pour Oracle et Postgis.

Version:
1.1
Author:
Thierry Badard & Arnaud Braun

Field Summary
static java.lang.String REPOSITORY_NAME_SEPARATOR
           
 
Constructor Summary
GeOxygeneBrokerHelper(org.apache.ojb.broker.PersistenceBroker broker)
           
 
Method Summary
 boolean assertValidPkFields(org.apache.ojb.broker.metadata.FieldDescriptor[] fieldDescriptors, java.lang.Object[] pkValues)
          returns true if the primary key fields are valid, else false.
static java.lang.String buildMessageString(java.lang.Object obj, java.lang.Object value, java.lang.reflect.Field field)
           
static org.apache.ojb.broker.PBKey crossCheckPBKey(org.apache.ojb.broker.PBKey key)
          Check if the user of the given PBKey was null, if so we try to get user/password from the jdbc-connection-descriptor matching the given PBKey.getAlias().
static org.apache.ojb.broker.PBKey extractAllTokens(java.lang.String name)
          splits up the name string and extract db url, user name and password and build a new PBKey instance - the token '#' is used to separate the substrings.
 java.lang.Object[] extractValueArray(org.apache.ojb.broker.core.ValueContainer[] containers)
          Extract a value array of the given ValueContainer array.
 org.apache.ojb.broker.core.ValueContainer[] getAllRwValues(org.apache.ojb.broker.metadata.ClassDescriptor cld, java.lang.Object obj, java.sql.Connection conn)
          returns an array containing values for all the Objects attribute (READ/WRITE only)
protected  java.lang.Object getAutoIncrementValue(org.apache.ojb.broker.metadata.FieldDescriptor fd, java.lang.Object obj, java.lang.Object cv)
          Get an autoincremented value that has already had a field conversion run on it.
 org.apache.ojb.broker.query.Query getCountQuery(org.apache.ojb.broker.query.Query aQuery)
          Build a Count-Query based on aQuery
 org.apache.ojb.broker.core.ValueContainer[] getKeyValues(org.apache.ojb.broker.metadata.ClassDescriptor cld, org.apache.ojb.broker.Identity oid)
          Return key Values of an Identity
 org.apache.ojb.broker.core.ValueContainer[] getKeyValues(org.apache.ojb.broker.metadata.ClassDescriptor cld, org.apache.ojb.broker.Identity oid, boolean convertToSql)
          Return key Values of an Identity
 org.apache.ojb.broker.core.ValueContainer[] getKeyValues(org.apache.ojb.broker.metadata.ClassDescriptor cld, java.lang.Object objectOrProxy, boolean convertToSql, java.sql.Connection conn)
          returns an Array with an Objects PK VALUES if convertToSql is true, any associated java-to-sql conversions are applied.
 org.apache.ojb.broker.core.ValueContainer[] getKeyValues(org.apache.ojb.broker.metadata.ClassDescriptor cld, java.lang.Object objectOrProxy, java.sql.Connection conn)
          returns an Array with an Objects PK VALUES, with any java-to-sql FieldConversion applied.
 org.apache.ojb.broker.core.ValueContainer[] getNonKeyRwValues(org.apache.ojb.broker.metadata.ClassDescriptor cld, java.lang.Object obj, java.sql.Connection conn)
          returns an Array with an Objects NON-PK VALUES (READ/WRITE only)
protected  org.apache.ojb.broker.metadata.ClassDescriptor getRealClassDescriptor(org.apache.ojb.broker.metadata.ClassDescriptor aCld, java.lang.Object anObj)
          Answer the real ClassDescriptor for anObj ie. aCld may be an Interface of anObj, so the cld for anObj is returned
 org.apache.ojb.broker.core.ValueContainer[] getValuesForObject(org.apache.ojb.broker.metadata.FieldDescriptor[] fields, java.lang.Object obj, boolean convertToSql, java.sql.Connection conn)
          Get the values of the fields for an obj
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

REPOSITORY_NAME_SEPARATOR

public static final java.lang.String REPOSITORY_NAME_SEPARATOR
See Also:
Constant Field Values
Constructor Detail

GeOxygeneBrokerHelper

public GeOxygeneBrokerHelper(org.apache.ojb.broker.PersistenceBroker broker)
Method Detail

extractAllTokens

public static org.apache.ojb.broker.PBKey extractAllTokens(java.lang.String name)
splits up the name string and extract db url, user name and password and build a new PBKey instance - the token '#' is used to separate the substrings.

Throws:
org.apache.ojb.broker.PersistenceBrokerException - if given name was null

crossCheckPBKey

public static org.apache.ojb.broker.PBKey crossCheckPBKey(org.apache.ojb.broker.PBKey key)
Check if the user of the given PBKey was null, if so we try to get user/password from the jdbc-connection-descriptor matching the given PBKey.getAlias().


getRealClassDescriptor

protected org.apache.ojb.broker.metadata.ClassDescriptor getRealClassDescriptor(org.apache.ojb.broker.metadata.ClassDescriptor aCld,
                                                                                java.lang.Object anObj)
Answer the real ClassDescriptor for anObj ie. aCld may be an Interface of anObj, so the cld for anObj is returned


getKeyValues

public org.apache.ojb.broker.core.ValueContainer[] getKeyValues(org.apache.ojb.broker.metadata.ClassDescriptor cld,
                                                                java.lang.Object objectOrProxy,
                                                                boolean convertToSql,
                                                                java.sql.Connection conn)
                                                         throws org.apache.ojb.broker.PersistenceBrokerException
returns an Array with an Objects PK VALUES if convertToSql is true, any associated java-to-sql conversions are applied. If the Object is a Proxy or a VirtualProxy NO conversion is necessary.

Parameters:
objectOrProxy -
convertToSql -
Returns:
Object[]
Throws:
org.apache.ojb.broker.PersistenceBrokerException

getKeyValues

public org.apache.ojb.broker.core.ValueContainer[] getKeyValues(org.apache.ojb.broker.metadata.ClassDescriptor cld,
                                                                org.apache.ojb.broker.Identity oid)
                                                         throws org.apache.ojb.broker.PersistenceBrokerException
Return key Values of an Identity

Parameters:
cld -
oid -
Returns:
Object[]
Throws:
org.apache.ojb.broker.PersistenceBrokerException

getKeyValues

public org.apache.ojb.broker.core.ValueContainer[] getKeyValues(org.apache.ojb.broker.metadata.ClassDescriptor cld,
                                                                org.apache.ojb.broker.Identity oid,
                                                                boolean convertToSql)
                                                         throws org.apache.ojb.broker.PersistenceBrokerException
Return key Values of an Identity

Parameters:
cld -
oid -
convertToSql -
Returns:
Object[]
Throws:
org.apache.ojb.broker.PersistenceBrokerException

getKeyValues

public org.apache.ojb.broker.core.ValueContainer[] getKeyValues(org.apache.ojb.broker.metadata.ClassDescriptor cld,
                                                                java.lang.Object objectOrProxy,
                                                                java.sql.Connection conn)
                                                         throws org.apache.ojb.broker.PersistenceBrokerException
returns an Array with an Objects PK VALUES, with any java-to-sql FieldConversion applied. If the Object is a Proxy or a VirtualProxy NO conversion is necessary.

Parameters:
objectOrProxy -
Returns:
Object[]
Throws:
org.apache.ojb.broker.PersistenceBrokerException

getAutoIncrementValue

protected java.lang.Object getAutoIncrementValue(org.apache.ojb.broker.metadata.FieldDescriptor fd,
                                                 java.lang.Object obj,
                                                 java.lang.Object cv)
Get an autoincremented value that has already had a field conversion run on it.

The data type of the value that is returned by this method is compatible with the java-world. The return value has NOT been run through a field conversion and converted to a corresponding sql-type.

Throws:
org.apache.ojb.broker.metadata.MetadataException - if there is an erros accessing obj field values

getValuesForObject

public org.apache.ojb.broker.core.ValueContainer[] getValuesForObject(org.apache.ojb.broker.metadata.FieldDescriptor[] fields,
                                                                      java.lang.Object obj,
                                                                      boolean convertToSql,
                                                                      java.sql.Connection conn)
                                                               throws org.apache.ojb.broker.PersistenceBrokerException
Get the values of the fields for an obj

Parameters:
fields -
obj -
Throws:
org.apache.ojb.broker.PersistenceBrokerException

getNonKeyRwValues

public org.apache.ojb.broker.core.ValueContainer[] getNonKeyRwValues(org.apache.ojb.broker.metadata.ClassDescriptor cld,
                                                                     java.lang.Object obj,
                                                                     java.sql.Connection conn)
                                                              throws org.apache.ojb.broker.PersistenceBrokerException
returns an Array with an Objects NON-PK VALUES (READ/WRITE only)

Throws:
org.apache.ojb.broker.metadata.MetadataException - if there is an erros accessing o field values
org.apache.ojb.broker.PersistenceBrokerException

getAllRwValues

public org.apache.ojb.broker.core.ValueContainer[] getAllRwValues(org.apache.ojb.broker.metadata.ClassDescriptor cld,
                                                                  java.lang.Object obj,
                                                                  java.sql.Connection conn)
                                                           throws org.apache.ojb.broker.PersistenceBrokerException
returns an array containing values for all the Objects attribute (READ/WRITE only)

Throws:
org.apache.ojb.broker.metadata.MetadataException - if there is an erros accessing obj field values
org.apache.ojb.broker.PersistenceBrokerException

extractValueArray

public java.lang.Object[] extractValueArray(org.apache.ojb.broker.core.ValueContainer[] containers)
Extract a value array of the given ValueContainer array.

Parameters:
containers -
Returns:
a value array

assertValidPkFields

public boolean assertValidPkFields(org.apache.ojb.broker.metadata.FieldDescriptor[] fieldDescriptors,
                                   java.lang.Object[] pkValues)
returns true if the primary key fields are valid, else false. PK fields are valid if each of them is either an OJB managed attribute (autoincrement or locking) or if it contains a valid non-null value

Parameters:
fieldDescriptors - the array of PK fielddescriptors
pkValues - the array of PK values
Returns:
boolean

getCountQuery

public org.apache.ojb.broker.query.Query getCountQuery(org.apache.ojb.broker.query.Query aQuery)
Build a Count-Query based on aQuery

Parameters:
aQuery -
Returns:
a Query

buildMessageString

public static java.lang.String buildMessageString(java.lang.Object obj,
                                                  java.lang.Object value,
                                                  java.lang.reflect.Field field)