Author: spadkins
Date: Fri Aug 17 11:29:15 2007
New Revision: 9851

Modified:
   p5ee/trunk/App-Repository/lib/App/Repository.pm
   p5ee/trunk/App-Repository/lib/App/Repository/DBI.pm

Log:
enable the 'table_def' option in get_rows() to override or supplement table_def 
entries already in the config

Modified: p5ee/trunk/App-Repository/lib/App/Repository.pm
==============================================================================
--- p5ee/trunk/App-Repository/lib/App/Repository.pm     (original)
+++ p5ee/trunk/App-Repository/lib/App/Repository.pm     Fri Aug 17 11:29:15 2007
@@ -2352,20 +2352,26 @@
 
 sub get_table_def {
     &App::sub_entry if ($App::trace);
-    my ($self, $table) = @_;
+    my ($self, $table, $options) = @_;
     my $repname = $self->{table}{$table}{repository};
     my $realtable = $self->{table}{$table}{table} || $table;
     my ($table_def);
     if (defined $repname && $repname ne $self->{name}) {
         my $rep = $self->{context}->repository($repname);
-        $table_def = $rep->get_table_def($realtable);
+        $table_def = $rep->get_table_def($realtable, $options);
     }
     elsif (defined $realtable && $realtable ne $table) {
-        $table_def = $self->get_table_def($realtable);
+        $table_def = $self->get_table_def($realtable, $options);
     }
     else {
         $self->_load_table_metadata($table) if (! defined 
$self->{table}{$table}{loaded});
-        $table_def = $self->{table}{$table};
+        if ($options->{table_def}) {
+            $table_def = $options->{table_def};
+            App::Reference->overlay($table_def, $self->{table}{$table});
+        }
+        else {
+            $table_def = $self->{table}{$table};
+        }
     }
     &App::sub_exit($table_def) if ($App::trace);
     return($table_def);

Modified: p5ee/trunk/App-Repository/lib/App/Repository/DBI.pm
==============================================================================
--- p5ee/trunk/App-Repository/lib/App/Repository/DBI.pm (original)
+++ p5ee/trunk/App-Repository/lib/App/Repository/DBI.pm Fri Aug 17 11:29:15 2007
@@ -932,6 +932,9 @@
     $self->_load_table_metadata($table) if (!defined 
$self->{table}{$table}{loaded});
     my $dbh = $self->{dbh};
 
+    my $table_def = $self->get_table_def($table, $options);
+    die "Table $table not defined" if (!$table_def);
+
     if (!defined $params || $params eq "") {
         $params = {};
     }
@@ -950,7 +953,7 @@
     my ($where_condition, @join_conditions, @criteria_conditions, $repop, 
$sqlop, $value);
 
     # ADD ANY DEFAULT PARAMS
-    my $paramdefs = $self->{table}{$table}{param};
+    my $paramdefs = $table_def->{param};
     my $params_modified = 0;
     if ($paramdefs) {
         # make a copy.
@@ -992,10 +995,7 @@
     my $reptyperef  = $options->{reptyperef};
     my $group_by    = $options->{group_by} || $options->{summarykeys};
 
-    my ($table_def, $tablealiases, $tablealiashref);
-
-    $table_def = $self->{table}{$table};
-    die "Table $table not defined" if (!$table_def);
+    my ($tablealiases, $tablealiashref);
 
     $tablealiases   = $table_def->{tablealiases};
     $tablealiashref = $table_def->{tablealias};

Reply via email to