On Wed, 01 Mar 2006 23:39:42 -0500, John Siracusa wrote:
Hi John
> Ah, I didn't know you were editing Rose::DB::Object modules yet.
> I'll add them to the Oracle branch.
I wasn't intending to work on it. I just wanted to fiddle it to see what
happened with my source code generator.
> Having just taken a casual look at your changes, I think you just
> broke some or all of the other dbs :) For each Oracle-specific
I'm not surprised. I simply rigged it for Oracle :-).
> thing that you need to do in any "shared" module, you have two
> choices.
>
> You can create a private Rose::DB method to make each decision
> (e.g., column_info_uses_uc_table_name() or something) and then make
> sure that only Rose::DB::Oracle overrides it in such a way that it
> alters the existing behavior.
>
> The second choice is to create an Oracle-specific Metadata::Auto
> subclass:
>
> Rose::DB::Object::Metadata::Auto::Oracle
>
> and put all your Oracle-specific code in there. That way you can
> be sure you aren't altering any existing behavior for other drivers.
Since the generated code for Oracle is so wrong, I'd have to say the 2nd option
will be a much cleaner result.
For the record, what I've done is:
o Created a test program which when run generates Perl source
o Converted that program into a HTML::Template-style template, with a couple of
loops over table names
<code>
$boilerplate as recommended elsewhere
<tmpl_loop name=package_loop>
package <tmpl_var name=module_name>;
use base 'Base::Object';
__PACKAGE__ -> meta -> table('<tmpl_var name=table_name>');
__PACKAGE__ -> meta -> auto_initialize;
1;
# -----------------------------------------------
</tmpl_loop>
package main;
<tmpl_loop name=module_loop>
print <tmpl_var name=module_name> -> meta -> perl_class_definition
(
braces => 'bsd',
);
print "\n# ===============================================\n\n";
</tmpl_loop>
</code>
o Created another program which feeds all table names into the template and
generates yet another program (YAP) which, when run, outputs a Perl module for
each table. This is the code which needs correction
o So I have iterative :-) but not recursive :-( source-code generation
o Now the plan is to fabricate and edit Rose::DB::Object::Metadata::Auto::Oracle
until it creates the correct output
--
Ron Savage
[EMAIL PROTECTED]
http://savage.net.au/index.html
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
Rose-db-object mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/rose-db-object