[ 
http://issues.apache.org/jira/browse/TORQUE-22?page=comments#action_12412977 ] 

Thomas Fischer commented on TORQUE-22:
--------------------------------------

In my opinion, the patch should be added to Torque. The one general thing I'm 
not convinced about is the initialize() method in the DatabaseMap. It creates a 
link between the Torque runtime and the generated classes (which is hidden by 
using reflection). Why not call the XXXMapInit.init() class directly ? If the 
name of the database is not known at compile time, the user may still use 
reflection to access it.
Also, I came across a number of smallish issues:

Code style: 
- Please add imports after the licence comments (e.g. ColumnMap).
- Please use a separate line for opening and closing braces.
- Please respect the 80 columns maximum width of java files (e.g. 
InheritanceMap)

ColumnMap.java
- Could you please add the comments to the private fields as javadocs ? (also 
TableMap.java)
- Why do you need the useInheritance mapping ? should not rather the 
inheritanceType field be used to retrieve that information ?
- This may be a question of style, but I'd prefer the inheritanceMaps be 
initialized when it is defined, not in the constructor, because all the other 
fields are also initialized where they are defined.
- If there is no strong reason for doing otherwise, I'd find it more intuitive 
if the field in the database map would be named like the corresponding 
shema-xml attribute (inheritanceType-> inheritance, boolean usePrimitive -> 
String javaType). Although the javaType has just two values now, maybe in the 
future there might be more. 
- setInheritance(). If this method is retained (see above), why does it set the 
table's inheritance ? if this is necessary, it should at least be documented in 
the javadocs.

TableMap.java
- Is the useInheritance field needed ? One could also ask the columns if their 
inheritance map is empty. I do not like to keep the same information in 
different places, becasue then synchronizing the two is always an issue. (one 
might forget in later code changes that if one field is changed, the other 
needs to be changed also)
- why do you add the deprecated method addColumn(String name, Object type, 
boolean pk, String fkTable, String fkColumn, int size, int scale, String 
javaName) ?

Peer.vm: 
- The call of getMapBuilder() in getTableMap() should not be necessary if 
Torque is initialized. Why did you add it ? Does it work if Torque is not 
initialized ?

MapBuilder.vm
- Why is the initClass method needed ? Better not use reflection : 
${className}.class is the thing you want.
- I'd rather remove the PEER_CLASS, OM_CLASS and MANAGER_CLASS class variables. 
The values are needed only once and can be computed in local variables.
- Why do you use ($useManagers && $table.PrimaryKey.size() > 0) instead of 
($useManagers) ? (also in Control.vm)
- Why do you generate the method getColumnName( String name ) for each class 
instead of putting the method in the base class ? Also, I'd rather rename this 
method to normalizeColumnName() or similar.

> Enhanced Database Mapping info
> ------------------------------
>
>          Key: TORQUE-22
>          URL: http://issues.apache.org/jira/browse/TORQUE-22
>      Project: Torque
>         Type: Improvement

>   Components: Runtime, Generator, Test Project
>     Versions: 3.2.1
>     Reporter: CG Monroe
>      Fix For: 3.2.1
>  Attachments: MapEnhancements-ChangeLog.txt, 
> MapEnhancements-ObjectWithManager.zip, MapEnhancements.zip
>
> The attached zip file makes the Database Map information much more robust and 
> useful.  Basic features added:
> If an application needs a fully populated  Database Map structures, this can 
> be done via the DatabaseMap.initialize() method.
> *Map classes will now preserve XML order and store many more XML attritbutes, 
> including Inheritance information.
> MapBuilder template re-done to be more readable and expandable.
> The TableMap object can be used to get the associated Peer, OM, and Manager 
> (if applicable) Class objects. 
> Access to TableMap structures made easier in Peer ( existing method changed 
> to public) and OM classes. (The theory here is that TableMap should know all 
> this info and there should be an easy way to get there).
> Test-project now has DatabaseMap test suite that tests most of these features.
> Some misc Javadoc/synchronizing changes.
> Has been tested with aliased tables, beans, managers, DB schema's with 
> different packages during development (test suite doesn't test all of these 
> combinations yet..)

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to