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 =~ /[-\+\*\/]/);