cvsuser     02/07/12 14:06:58

  Modified:    P5EEx/Blue/P5EEx/Blue Repository.pm
  Log:
  did some work on store_rows() to allocate ID's automatically (still needs more work)
  
  Revision  Changes    Path
  1.17      +35 -6     p5ee/P5EEx/Blue/P5EEx/Blue/Repository.pm
  
  Index: Repository.pm
  ===================================================================
  RCS file: /cvs/public/p5ee/P5EEx/Blue/P5EEx/Blue/Repository.pm,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -w -r1.16 -r1.17
  --- Repository.pm     18 Jun 2002 21:15:44 -0000      1.16
  +++ Repository.pm     12 Jul 2002 21:06:58 -0000      1.17
  @@ -1,6 +1,6 @@
   
   #############################################################################
  -## $Id: Repository.pm,v 1.16 2002/06/18 21:15:44 spadkins Exp $
  +## $Id: Repository.pm,v 1.17 2002/07/12 21:06:58 spadkins Exp $
   #############################################################################
   
   package P5EEx::Blue::Repository;
  @@ -1173,7 +1173,7 @@
   # $ok = $rep->store_row  ($table, \@cols, \@row, \@keycolidx, $update_first);
   sub store_row {
       my ($self, $table, $cols, $row, $keycolidx, $update_first) = @_;
  -    my ($nrows);
  +    my ($nrows, $error);
   
       $self->{context}->dbgprint(
           "store_row($table,\n   [",
  @@ -1193,10 +1193,11 @@
       }
       else {
           $nrows = $self->insert_row($table,$cols,$row);
  -        #print "store_row(): INSERT: ", $self->error(), "\n", $self->{sql}, "\n";
  -        if (!$nrows) {
  +        $error = $self->error();
  +        print "store_row(): INSERT: ", $self->error(), "\n", $self->{sql}, "\n";
  +        if (!$nrows && $error =~ /duplicate/i) {
               $nrows = $self->update_row($table,$cols,$row,$keycolidx);
  -            #print "store_row(): UPDATE: ", $self->error(), "\n", $self->{sql}, 
"\n";
  +            print "store_row(): UPDATE: ", $self->error(), "\n", $self->{sql}, "\n";
           }
       }
       $self->{numrows} = $nrows;
  @@ -1243,7 +1244,35 @@
   # $nrows = $rep->store_rows ($table, \@cols, \@rows, \@keycolidx, $update_first);
   sub store_rows {
       my ($self, $table, $cols, $rows, $keycolidx, $update_first) = @_;
  -    my ($row, $ok, $nrows);
  +    my ($row, $ok, $nrows, $colnum, $column, $rownum, $tabledef, $value);
  +    my ($id, @ids, $id_count);
  +    $tabledef = $self->{table}{$table};
  +    if ($tabledef->{set_defaults}) {
  +        for ($colnum = 0; $colnum <= $#$cols; $colnum++) {
  +            $column = $cols->[$colnum];
  +            if ($tabledef->{prikey} && $tabledef->{prikey} eq $column &&
  +                $tabledef->{column}{$column}{auto_id}) {
  +                $id_count = 0;
  +                for ($rownum = 0; $rownum <= $#$rows; $rownum++) {
  +                    $id_count++ if (!$rows->[$rownum][$colnum]);
  +                }
  +                @ids = $self->get_new_ids($table, $id_count);
  +                for ($rownum = 0; $rownum <= $#$rows; $rownum++) {
  +                    if (!$rows->[$rownum][$colnum]) {
  +                        $rows->[$rownum][$colnum] = shift @ids;
  +                    }
  +                }
  +            }
  +            elsif (defined $tabledef->{column}{$column}{default}) {
  +                $value = $tabledef->{column}{$column}{default};
  +                for ($rownum = 0; $rownum <= $#$rows; $rownum++) {
  +                    if (!defined $rows->[$rownum][$colnum]) {
  +                        $rows->[$rownum][$colnum] = $value;
  +                    }
  +                }
  +            }
  +        }
  +    }
       $nrows = 0;
       foreach $row (@$rows) {
           $ok = $self->store_row ($table, $cols, $row, $keycolidx, $update_first);
  
  
  


Reply via email to