Torque Users and Developers: I find Toruqe to be one of the best and easiest to use persistence layers but was very dimayed by its lack of support for fully-qualified table names. So I decided to make a few changes, and in the spirit of open source, share those changes. I ran all the existing Torque tests so I feel comfortable in making the JARs available to anyone who is interested.
I made the following changes to the torque-gen-3.1 source code to support fully qualified table names: 1. TorqueJDBCTransformTask.java. now generates schema.xml with attributes name="@[EMAIL PROTECTED]" javaName="TableName 2. build-torque.xml now includes an ant task for filtering @SCHEMA@ from schema.xml when generating ${project}-schema.xml with ${torque.database.schema} specified in build.properties and the following in torque-3.1 source code to support fully qualified table names: 1. BasePeer.java now determines the table names using columnName.lastIndexOf('.') orderByColumn.lastIndexOf('.') join#.lastIndexOf('.') instead of using columnName.indexOf('.') orderByColumn.indexOf('.') join#.indexOf('.') 2. Criteria.java now determines table name using int dot = tableColumn.lastIndexOf('.'); instead of int dot = tableColumn.indexOf('.'); Here is a sample of the relevant snippets from schema.xml <?xml version="1.0"?> <!DOCTYPE database SYSTEM "http://db.apache.org/torque/dtd/database_3_1.dtd"> <!-- Autogenerated by JDBCToXMLSchema! --> <database> <table javaName="MyTable" name="@[EMAIL PROTECTED]"> ... </table> </database> and the relevant snippets from ${project}-schema.xml <?xml version="1.0"?> <!DOCTYPE database SYSTEM "http://db.apache.org/torque/dtd/database_3_1.dtd"> <!-- Autogenerated by JDBCToXMLSchema! --> <database> <table javaName="MyTable" name="MYSCHEMA.MY_TABLE"> ... </table> </database> and the relevant snippets from BaseMyTablePeer.java public abstract class BaseMyTablePeer extends BasePeer { /** the default database name for this class */ public static final String DATABASE_NAME = "default"; /** the table name for this class */ public static final String TABLE_NAME = "MYSCHEMA.MY_TABLE"; /** the column name for the MY_COLUMN field */ public static final String MY_COLUMN; static { MY_COLUMN = "MYSCHEMA.MY_TABLE.MY_COLUMN"; } ... } I also made an additional change which allows the user to specify a property, ${torque.database.tables} = ${databaseTables}, which allows Torque to generate files only for a subset of tables. 1. TorqueJDBCTransformTask.java has an additional attribute, dbTables, which is set from ${torque.database.tables} and only includes this subset of tables when generating the schema.xml file. To include all tables, leave this blank or you can set it to %. Lastly, I found bugs which did not correctly define or provide casting for default values for primitive values. Torque was doing private short someNumber = ; instead of private short someNumber; and, in the method protected MyTable copyInto(MyTable copyObj) throws TorqueException, Torque was doing copyObj.setSomeNumber(0); instead of copyObj.setSomeNumber((short)0); so I updated in Object.vm to account for these. Again, if you'd like a diff of the source or the generated JAR files, I can gladly provide these. Michael --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]