Author: spadkins
Date: Mon Feb  9 11:23:31 2009
New Revision: 12495

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

Log:
Added serializer to _mk_insert_rows_sql

Modified: p5ee/trunk/App-Repository/lib/App/Repository/Oracle.pm
==============================================================================
--- p5ee/trunk/App-Repository/lib/App/Repository/Oracle.pm      (original)
+++ p5ee/trunk/App-Repository/lib/App/Repository/Oracle.pm      Mon Feb  9 
11:23:31 2009
@@ -247,6 +247,7 @@
     &App::sub_entry if ($App::trace);
     my ($self, $table, $cols, $rows, $options) = @_;
 
+    my $context = $self->{context};
     $self->_load_table_metadata($table) if (!defined 
$self->{table}{$table}{loaded});
     my $dbh = $self->{dbh};
 
@@ -268,13 +269,24 @@
 
     my $sql = "insert all\n";
     my $sql_row_prefix = "  into $table (" . join(",", @$cols) . ") values ";
-    my ($value, $colnum, $quoted, $row, $col);
+    my ($value, $colnum, $quoted, $row, $col, %serializer, $serializer_name, 
$serializer,);
     if ($rows && $#$rows > -1 && ref($rows->[0]) eq "ARRAY") {
         for (my $rownum = 0; $rownum <= $#$rows; $rownum++) {
             $row = $rows->[$rownum];
             $sql .= $sql_row_prefix;
             for ($colnum = 0; $colnum <= $#$cols; $colnum++) {
                 $col = $cols->[$colnum];
+                $serializer_name = $column_defs->{$col}{serializer};
+                if ($serializer_name) {
+                    $serializer = $serializer{$serializer_name};
+                    if (!$serializer) {
+                        $serializer = $context->serializer($serializer_name);
+                        $serializer{$serializer_name} = $serializer;
+                    }
+                    if ($row->[$colnum] ne "") {
+                        $row->[$colnum] = 
$serializer->serialize($row->[$colnum]);
+                    }
+                }
                 $value = $row->[$colnum];
                 if (!defined $value) {
                     $value = "NULL";
@@ -328,7 +340,7 @@
     my ($self, $table, $cols, $rows, $options) = @_;
     $self->{error} = "";
     my ($sql, $retval, $nrows_this_insert);
-   
+
     my $dbh = $self->{dbh};
     return 0 if (!defined $dbh);
 

Reply via email to