X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FTranslator%2FProducer%2FTurnkey.pm;h=93f4e2f63bfee15d18f7f93097e5f7f5ccda18db;hb=be42bce8a53907c863eab4daaec7adca2d15fe54;hp=83ec2ca4e82344fd2cd9ad7fc2d24556e2c75c96;hpb=4097689d40af584d0a7b16adda8e5d3c9f144564;p=dbsrgits%2FSQL-Translator.git diff --git a/lib/SQL/Translator/Producer/Turnkey.pm b/lib/SQL/Translator/Producer/Turnkey.pm index 83ec2ca..93f4e2f 100644 --- a/lib/SQL/Translator/Producer/Turnkey.pm +++ b/lib/SQL/Translator/Producer/Turnkey.pm @@ -1,7 +1,7 @@ package SQL::Translator::Producer::Turnkey; # ------------------------------------------------------------------- -# $Id: Turnkey.pm,v 1.41 2004-04-16 09:08:44 boconnor Exp $ +# $Id: Turnkey.pm,v 1.57 2004-08-05 02:05:46 boconnor Exp $ # ------------------------------------------------------------------- # Copyright (C) 2002-4 SQLFairy Authors # @@ -22,7 +22,7 @@ package SQL::Translator::Producer::Turnkey; use strict; use vars qw[ $VERSION $DEBUG ]; -$VERSION = sprintf "%d.%02d", q$Revision: 1.41 $ =~ /(\d+)\.(\d+)/; +$VERSION = sprintf "%d.%02d", q$Revision: 1.57 $ =~ /(\d+)\.(\d+)/; $DEBUG = 1 unless defined $DEBUG; use SQL::Translator::Schema::Constants; @@ -203,7 +203,7 @@ L. =head1 AUTHORS Allen Day Eallenday@ucla.eduE -Brian O\'Connor Ebrian.oconnor@excite.comE. +Brian O\'Connor Eboconnor@ucla.comE. =cut @@ -215,13 +215,15 @@ sub template { ########################################### if($type eq 'dbi'){ - return <set_up_table('[% node.table.name %]'); [% printPKAccessors(node.primary_key, node.table.name) %] @@ -301,20 +303,20 @@ sub [% cedge.via.table.name %]_[% format_fk(edge.thatnode.table.name,edge.thatfi [% seen = 0 %] [% FOREACH h = hedges %] [% NEXT UNLESS h.type == 'one2one' %] -[% IF seen == 0 ; seen = 1 %]########## one2one ###########[% END %] -sub [% h.thatnode.table.name %]s { my \$self = shift; return map \$_->[% h.thatviafield.name %], \$self->[% h.vianode.table.name %]_[% h.thisviafield.name %] } +[% IF seen == 0 ; seen = 1 %]# one2one #[% END %] +sub [% h.thatnode.table.name %]s { my $self = shift; return map $_->[% h.thatviafield.name %], $self->[% h.vianode.table.name %]_[% h.thisviafield.name %] } [% END %] [% seen = 0 %] [% FOREACH h = hedges %] [% NEXT UNLESS h.type == 'one2many' %] -[% IF seen == 0 ; seen = 1 %]########## one2many ##########[% END %] +[% IF seen == 0 ; seen = 1 %]# one2many #[% END %] [% thisnode = h.thisnode_index(0) %] [% i = 0 %] [% FOREACH thatnode = h.thatnode %] [% NEXT UNLESS h.thisviafield_index(i).name %] #[% thisnode.name %]::[% h.thisfield_index(0).name %] -> [% h.vianode.name %]::[% h.thisviafield_index(i).name %] ... [% h.vianode.name %]::[% h.thatviafield_index(0).name %] <- [% h.thatnode_index(0).name %]::[% h.thatfield_index(0).name %] -sub [% h.vianode.table.name %]_[% format_fk(h.vianode,h.thatviafield_index(0).name) %]s { my \$self = shift; return map \$_->[% h.thatviafield_index(0).name %], \$self->[% h.vianode.table.name %]_[% h.thisviafield_index(i).name %] } +sub [% h.vianode.table.name %]_[% format_fk(h.vianode,h.thatviafield_index(0).name) %]s { my $self = shift; return map $_->[% h.thatviafield_index(0).name %], $self->[% h.vianode.table.name %]_[% h.thisviafield_index(i).name %] } [% i = i + 1 %] [% END %] [% END %] @@ -322,11 +324,11 @@ sub [% h.vianode.table.name %]_[% format_fk(h.vianode,h.thatviafield_index(0).na [% seen = 0 %] [% FOREACH h = hedges %] [% NEXT UNLESS h.type == 'many2one' %] -[% IF seen == 0 ; seen = 1 %]########## many2one ##########[% END %] +[% IF seen == 0 ; seen = 1 %]# many2one #[% END %] [% i = 0 %] [% FOREACH thisnode = h.thisnode %] #[% thisnode.name %]::[% h.thisfield_index(0).name %] -> [% h.vianode.name %]::[% h.thisviafield_index(i).name %] ... [% h.vianode.name %]::[% h.thatviafield_index(0).name %] <- [% h.thatnode_index(0).name %]::[% h.thatfield_index(0).name %] -sub [% h.vianode.table.name %]_[% format_fk(h.vianode,h.thisviafield_index(i).name) %]_[% format_fk(h.vianode,h.thatviafield_index(0).name) %]s { my \$self = shift; return map \$_->[% h.thatviafield_index(0).name %], \$self->[% h.vianode.table.name %]_[% h.thisviafield_index(i).name %] } +sub [% h.vianode.table.name %]_[% format_fk(h.vianode,h.thisviafield_index(i).name) %]_[% format_fk(h.vianode,h.thatviafield_index(0).name) %]s { my $self = shift; return map $_->[% h.thatviafield_index(0).name %], $self->[% h.vianode.table.name %]_[% h.thisviafield_index(i).name %] } [% i = i + 1 %] [% END %] [% END %] @@ -334,19 +336,19 @@ sub [% h.vianode.table.name %]_[% format_fk(h.vianode,h.thisviafield_index(i).na [% seen = 0 %] [% FOREACH h = hedges %] [% NEXT UNLESS h.type == 'many2many' %] -[% IF seen == 0 ; seen = 1 %]########## many2many #########[% END %] +[% IF seen == 0 ; seen = 1 %]# many2many #[% END %] [% i = 0 %] [% FOREACH thisnode = h.thisnode %] [% j = 0 %] [% FOREACH thatnode = h.thatnode %] #[% thisnode.name %]::[% h.thisfield_index(i).name %] -> [% h.vianode.name %]::[% h.thisviafield_index(i).name %] ... [% h.vianode.name %]::[% h.thatviafield_index(j).name %] <- [% h.thatnode_index(j).name %]::[% h.thatfield_index(j).name %] -sub [% h.vianode.table.name %]_[% format_fk(h.vianode,h.thisviafield_index(i).name) %]_[% format_fk(h.vianode,h.thatviafield_index(j).name) %]s { my \$self = shift; return map \$_->[% h.vianode.table.name %]_[% format_fk(h.vianode,h.thatviafield_index(j).name) %]s, \$self->[% h.vianode.table.name %]_[% format_fk(h.vianode,h.thisviafield_index(i).name) %]s } +sub [% h.vianode.table.name %]_[% format_fk(h.vianode,h.thisviafield_index(i).name) %]_[% format_fk(h.vianode,h.thatviafield_index(j).name) %]s { my $self = shift; return map $_->[% h.vianode.table.name %]_[% format_fk(h.vianode,h.thatviafield_index(j).name) %]s, $self->[% h.vianode.table.name %]_[% format_fk(h.vianode,h.thisviafield_index(i).name) %]s } [% j = j + 1 %] [% END %] [% i = i + 1 %] [% END %] [% END %] - +1; [% END %] [% MACRO printHasFriendly(node) BLOCK %] # @@ -356,35 +358,76 @@ sub [% h.vianode.table.name %]_[% format_fk(h.vianode,h.thisviafield_index(i).na [% END %] [% MACRO printList(array) BLOCK %][% FOREACH item = array %][% item %] [% END %][% END %] + +########AutoDBI.pm######## +use Turnkey::Model::DBI; +[% FOREACH node = nodes %] +use [% node.value.name %]; +[% END %] +1; + +########[% baseclass | replace('Turnkey::Model::', '') %].pm######## package [% baseclass %]; # Created by SQL::Translator::Producer::Turnkey # Template used: classdbi use strict; +use Data::Dumper; no warnings 'redefine'; use base qw(Class::DBI::Pg); [% baseclass %]->set_db('Main', '[% db_dsn %]', '[% db_user %]', '[% db_pass %]'); sub search_ilike { shift->_do_search(ILIKE => [% "\@\_" %] ) } +sub search_lower { + my $c = shift; + my %q = @_; + my %t; + foreach my $k (keys %q){ + $t{"lower($k)"} = lc($q{$k}); + } + $c->_do_search(LIKE => %t); +} -[% FOREACH node = nodes %] - [% printPackage(node.value) %] -[% END %] +# debug method +sub dump { + my $self = shift; + my %arg = %{shift @_}; + $arg{'indent'} ||= 1; + $arg{'depth'} ||= 3; + $Data::Dumper::Maxdepth = $arg{'depth'} if defined $arg{'depth'}; + $Data::Dumper::Indent = $arg{'indent'} if defined $arg{'indent'}; + return(Dumper($arg{'object'})); +} + +1; + +[% FOREACH node = nodes %][% printPackage(node.value) %][% END %] EOF } +elsif($type eq 'soap'){ + return <<'EOF'; +[% FOREACH node = nodes %][% node.value.name %], [%- END -%] +EOF +} elsif($type eq 'atom'){ return <<'EOF'; -[% ###### DOCUMENT START ###### %] +[% # DOCUMENT START # %] + +########AutoAtom.pm######## +[% FOREACH node = nodes %] +use [% node.value.name %]; +[% END %] +1; [% FOREACH node = nodes %] [% IF !node.value.is_trivial_link %] -############################################## +########[% node.value.name | replace('Turnkey::Model::', '') %].pm######## package Turnkey::Atom::[% node.value.name FILTER replace "Turnkey::Model::", "" %]; @@ -473,7 +516,7 @@ sub head { EOF } elsif($type eq 'xml'){ - return < @@ -492,6 +535,12 @@ EOF [%- END -%] [% END %] + + + + + + @@ -529,10 +578,23 @@ EOF [%- END %] [% END %] + + + + + + + + + + + - + + + @@ -541,6 +603,11 @@ EOF [%- END -%] [% END %] + + + + + @@ -549,35 +616,39 @@ EOF } elsif($type eq 'template'){ return <<'EOF'; [% TAGS [- -] %] -[% MACRO renderpanel(panel,dbobject) BLOCK %] +[% MACRO renderpanel(panel,name,dbobject) BLOCK %] [% FOREACH p = panel.containers %] [% IF p.can_render(panel) %] [% IF p.type == 'Container' %] - [% renderpanel(p,dbobject) %] + [% renderpanel(p,name,dbobject) %] [% ELSE %] - [% IF panel.label == 'MainContainer' %] + [% IF p.type == 'major' %]
- [% IF p.name %] -
[% p.name %][% IF panel.type == 'major' %]: [% dbobject.name %][% END %]
+ [% IF name %] +
[% name %]
[% END %] - - [% renderatom(p,dbobject) %] -
+ + [% renderatom(name,dbobject,p.containers[0]) %] +
- [% ELSE %] + [% ELSIF p.type == 'minor' %]
+ [% FOREACH atom = p.containers %]
- [% IF p.name %] -
[% p.name %][% IF panel.type == 'major' %]: [% dbobject.name %][% END %]
+ [% IF name %] + [% linkname = ref(p.containers[0]) %] +
[% atom.name | replace('Turnkey::Atom::', '') %]
[% END %] - - [% renderatom(p,dbobject) %] -
-
+ + [% renderatom(name,dbobject,atom) %] + + + [% END %] + [% END %] [% END %] [% IF panel.orientation == 'vertical' %] @@ -605,8 +676,9 @@ EOF [% END %] [% MACRO obj2url(obj) SWITCH obj %] [% CASE DEFAULT %] - /[% ref(obj) | replace('.+::','') %]/[% obj %] + /db/[% ref(obj) | replace('.+::','') %]/[% obj %] [% END %] + [% MACRO obj2desc(obj) SWITCH ref(obj) %] [% CASE '' %] [% obj %] @@ -617,7 +689,7 @@ EOF [% obj %] [% END %] [% END %] -[% MACRO renderatom(atom, dbobject) SWITCH atom.name %] +[% MACRO renderatom(name, dbobject, atom) SWITCH name %] [- FOREACH node = nodes -] [- IF !node.value.is_trivial_link -] [% CASE '[- format_table(node.key) -]' %] @@ -628,14 +700,16 @@ EOF [% renderlist(atom.render(dbobject)) %] [% END %] [% MACRO renderlist(lstArr) BLOCK %] -
    +
    +
      [% FOREACH item = lstArr %] [% class = ref(atom) | replace('::Atom::', '::Model::') %] [% id = item.id %] [% PROCESS make_linked_dbobject %]
    • [% obj2link(linked_dbobject) %]
    • [% END %] -
    +
+
[% END %] EOF @@ -643,12 +717,15 @@ EOF return <<'EOF'; [%- TAGS [- -] -%] [-- IF !node.is_trivial_link --] +[% records = atom.render(dbobject) %] [% rowcount = 0 %] [% IF atom.focus == "yes" %] +[% FOREACH record = records %] +[% fields = record.data %] [- FOREACH field = node.data_fields -] [- IF field != "1" -] - + [- END -] [- END -] [- FOREACH field = node.edges -] @@ -658,6 +735,7 @@ EOF [% IF (rowcount > 1) %] [% END %] [% rowcount = rowcount + 1 %]
[- field -][% obj2link(dbobject.[- field -]) %]
[- field.key -][% obj2link(fields.[- field.key -]) %]

+[% END %] [% ELSE %]
    [% FOREACH record = atom.render(dbobject) %] @@ -666,7 +744,7 @@ EOF [% PROCESS make_linked_dbobject %]
  • [% obj2link(linked_dbobject) %]
  • [% END %] -
+ [% END %] [- END -] EOF