Author: spadkins
Date: Fri Jul 13 13:14:58 2007
New Revision: 9737

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

Log:
fixed evaluate_expression() to be more efficient and to handle defaults on 
columns which are expressions themselves

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 Jul 13 13:14:58 2007
@@ -3375,9 +3375,14 @@
                 $idx = $validx->{$col};
                 if (defined $idx) {
                     $val = $values->[$idx];
-                    $val = $column_defs->{$col}{expr} if (!defined $val);
                     if (!defined $val) {
-                        $val = ($default ne "") ? $default : 
$column_defs->{$col}{default};
+                        if ($column_defs->{$col}{expr}) {
+                            $val = 
$self->evaluate_expression($column_defs->{$col}{expr}, $values, $validx, 
$column_defs);
+                            $values->[$idx] = $val;
+                        }
+                        if (!defined $val) {
+                            $val = ($default ne "") ? $default : 
$column_defs->{$col}{default};
+                        }
                     }
                     $val = "undef" if (!defined $val);
                     $val = "($val)" if ($val =~ /[-\+\*\/]/);
@@ -3394,9 +3399,15 @@
                 $default = $2;
                 $val = $values->{$col};
                 $val = App::Reference->get($col, $values) if (!defined $val && 
$col =~ /[\[\]\{\}\.]/);
-                $val = $column_defs->{$col}{expr} if (!defined $val);
+                $val = $values->[$idx];
                 if (!defined $val) {
-                    $val = ($default ne "") ? $default : 
$column_defs->{$col}{default};
+                    if ($column_defs->{$col}{expr}) {
+                        $val = 
$self->evaluate_expression($column_defs->{$col}{expr}, $values, $validx, 
$column_defs);
+                        $values->{$col} = $val;
+                    }
+                    if (!defined $val) {
+                        $val = ($default ne "") ? $default : 
$column_defs->{$col}{default};
+                    }
                 }
                 $val = "undef" if (!defined $val);
                 $val = "($val)" if ($val =~ /[-\+\*\/]/);

Reply via email to