From fd7cb75de981649f76b7cfdcb1ef9bca87a3df9a Mon Sep 17 00:00:00 2001 From: miker Date: Thu, 28 Aug 2008 12:32:10 +0000 Subject: [PATCH] moving "builder" to the right place ... now all objects have proper access; removing overly restrictive left join avoidance code -- we may have to go further than this, too git-svn-id: svn://svn.open-ils.org/ILS/trunk@10469 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../perlmods/OpenILS/Reporter/SQLBuilder.pm | 25 ++++++++++++------- Open-ILS/web/reports/xul/template-config.js | 6 ++--- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/Open-ILS/src/perlmods/OpenILS/Reporter/SQLBuilder.pm b/Open-ILS/src/perlmods/OpenILS/Reporter/SQLBuilder.pm index 4fad08faa5..df2b501870 100644 --- a/Open-ILS/src/perlmods/OpenILS/Reporter/SQLBuilder.pm +++ b/Open-ILS/src/perlmods/OpenILS/Reporter/SQLBuilder.pm @@ -153,7 +153,7 @@ sub set_from { my $self = shift; my $f = shift; - $self->{_from} = OpenILS::Reporter::SQLBuilder::Relation->parse( $f, $self ); + $self->{_from} = OpenILS::Reporter::SQLBuilder::Relation->parse( $f, $self->builder ); return $self; } @@ -167,7 +167,7 @@ sub set_where { return $self unless (@cols && defined($cols[0])); @cols = @{ $cols[0] } if (@cols == 1 && ref($cols[0]) eq 'ARRAY'); - push @{ $self->{_where} }, map { OpenILS::Reporter::SQLBuilder::Column::Where->new( $_, $self->{_from}->builder->{_rels} )->set_builder( $self->builder ) } @cols; + push @{ $self->{_where} }, map { OpenILS::Reporter::SQLBuilder::Column::Where->new( $_ )->set_builder( $self->builder ) } @cols; return $self; } @@ -455,8 +455,6 @@ sub new { $self->{_aggregate} = $col_data->{aggregate}; - $self->{_rels} = shift; - if (ref($self->{_column})) { my $trans = $self->{_column}->{transform} || 'Bare'; my $pkg = "OpenILS::Reporter::SQLBuilder::Column::Transform::$trans"; @@ -477,7 +475,7 @@ sub new { sub find_relation { my $self = shift; - return $self->{_rels}->{$self->{_relation}}; + return $self->builder->{_rels}->{$self->{_relation}}; } sub name { @@ -1104,6 +1102,19 @@ sub build { bless $self => "OpenILS::Reporter::SQLBuilder::Join::$self->{_join_type}"; + if ( $self->{_join_type} eq 'inner' or !$self->{_join_type}) { + $self->{_join_type} eq 'i'; + } else { + if ($self->{_join_type} eq 'left') { + $self->{_right_rel}->{_nullable} = 'l'; + } elsif ($self->{_join_type} eq 'right') { + $self->{_left_rel}->{_nullable} = 'r'; + } else { + $self->{_right_rel}->{_nullable} = 'f'; + $self->{_left_rel}->{_nullable} = 'f'; + } + } + return $self; } @@ -1129,10 +1140,6 @@ sub toSQL { my $dir = shift; #return $self->{_sql} if ($self->{_sql}); - my $_nullable_rel = $dir && $dir eq 'r' ? '_left_rel' : '_right_rel'; - $self->{_right_rel}->{_nullable} = 'l'; - $self->{$_nullable_rel}->{_nullable} = $dir; - my $j = $dir && $dir eq 'r' ? 'FULL OUTER' : 'LEFT OUTER'; my $sql = "\n\t$j ". $self->SUPER::toSQL('l'); diff --git a/Open-ILS/web/reports/xul/template-config.js b/Open-ILS/web/reports/xul/template-config.js index 24681e8d49..647d717b4a 100644 --- a/Open-ILS/web/reports/xul/template-config.js +++ b/Open-ILS/web/reports/xul/template-config.js @@ -849,9 +849,9 @@ function fleshFromPath ( template, rel ) { current_link.getAttribute('reltype') != 'has_a' || prev_type == 'left' || rel.reltype != 'has_a' - ) && ( - getKeys(rel.fields.filter_tab).length == 0 && - getKeys(rel.fields.aggfitler_tab).length == 0 +// ) && ( +// getKeys(rel.fields.filter_tab).length == 0 && +// getKeys(rel.fields.aggfitler_tab).length == 0 ) ) current_obj.type = 'left'; -- 2.43.2