X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FTranslator%2FParser%2FXML%2FSQLFairy.pm;h=78d7f15e6172515d7dbe84df4114fb5ba1d8528d;hb=4ab3763d2ad756c236b757306989cafa08e7f35e;hp=7edcdab5ebae84a4d5a778401539661957f27705;hpb=91f28468f293ce987a7f927c112316d27a6b87f6;p=dbsrgits%2FSQL-Translator.git diff --git a/lib/SQL/Translator/Parser/XML/SQLFairy.pm b/lib/SQL/Translator/Parser/XML/SQLFairy.pm index 7edcdab..78d7f15 100644 --- a/lib/SQL/Translator/Parser/XML/SQLFairy.pm +++ b/lib/SQL/Translator/Parser/XML/SQLFairy.pm @@ -1,8 +1,6 @@ package SQL::Translator::Parser::XML::SQLFairy; # ------------------------------------------------------------------- -# $Id: SQLFairy.pm,v 1.10 2004-08-19 20:41:31 grommit Exp $ -# ------------------------------------------------------------------- # Copyright (C) 2003 Mark Addison , # # This program is free software; you can redistribute it and/or @@ -27,17 +25,16 @@ SQL::Translator::Parser::XML::SQLFairy - parser for SQL::Translator's XML. =head1 SYNOPSIS use SQL::Translator; - use SQL::Translator::Parser::XML::SQLFairy; - my $translator = SQL::Translator->new( - from => 'XML-SQLFairy', - to => 'MySQL', - filename => 'schema.xml', - show_warnings => 1, - add_drop_table => 1, - ); + my $translator = SQL::Translator->new( show_warnings => 1 ); + + my $out = $obj->translate( + from => 'XML-SQLFairy', + to => 'MySQL', + filename => 'schema.xml', + ) or die $translator->error; - print $obj->translate; + print $out; =head1 DESCRIPTION @@ -101,7 +98,7 @@ To convert your old format files simply pass them through the translator :) use strict; use vars qw[ $DEBUG $VERSION @EXPORT_OK ]; -$VERSION = sprintf "%d.%02d", q$Revision: 1.10 $ =~ /(\d+)\.(\d+)/; +$VERSION = '1.59'; $DEBUG = 0 unless defined $DEBUG; use Data::Dumper; @@ -130,15 +127,15 @@ sub parse { ); for my $tblnode ( sort { - "".$xp->findvalue('sqlf:order|@order',$a) + ("".$xp->findvalue('sqlf:order|@order',$a) || 0) <=> - "".$xp->findvalue('sqlf:order|@order',$b) + ("".$xp->findvalue('sqlf:order|@order',$b) || 0) } @nodes ) { debug "Adding table:".$xp->findvalue('sqlf:name',$tblnode); my $table = $schema->add_table( - get_tagfields($xp, $tblnode, "sqlf:" => qw/name order/) + get_tagfields($xp, $tblnode, "sqlf:" => qw/name order extra/) ) or die $schema->error; # @@ -187,7 +184,7 @@ sub parse { foreach (@nodes) { my %data = get_tagfields($xp, $_, "sqlf:", qw/name type table fields reference_fields reference_table - match_type on_delete_do on_update_do/ + match_type on_delete on_update extra/ ); $table->add_constraint( %data ) or die $table->error; } @@ -198,10 +195,20 @@ sub parse { @nodes = $xp->findnodes('sqlf:indices/sqlf:index',$tblnode); foreach (@nodes) { my %data = get_tagfields($xp, $_, "sqlf:", - qw/name type fields options/); + qw/name type fields options extra/); $table->add_index( %data ) or die $table->error; } + + # + # Comments + # + @nodes = $xp->findnodes('sqlf:comments/sqlf:comment',$tblnode); + foreach (@nodes) { + my $data = $_->string_value; + $table->comments( $data ); + } + } # tables loop # @@ -212,7 +219,7 @@ sub parse { ); foreach (@nodes) { my %data = get_tagfields($xp, $_, "sqlf:", - qw/name sql fields order/ + qw/name sql fields order extra/ ); $schema->add_view( %data ) or die $schema->error; } @@ -224,9 +231,10 @@ sub parse { '/sqlf:schema/sqlf:trigger|/sqlf:schema/sqlf:triggers/sqlf:trigger' ); foreach (@nodes) { - my %data = get_tagfields($xp, $_, "sqlf:", - qw/name perform_action_when database_event fields on_table action order/ - ); + my %data = get_tagfields($xp, $_, "sqlf:", qw/ + name perform_action_when database_event fields on_table action order + extra + /); $schema->add_trigger( %data ) or die $schema->error; } @@ -238,7 +246,7 @@ sub parse { ); foreach (@nodes) { my %data = get_tagfields($xp, $_, "sqlf:", - qw/name sql parameters owner comments order/ + qw/name sql parameters owner comments order extra/ ); $schema->add_procedure( %data ) or die $schema->error; }