cvs commit: p5ee/App-Repository/lib/App Repository.pm

[email protected] (Stephen Adkins)
Newsgroups perl.cvs.p5ee
Message-ID <[email protected]>
cvsuser     05/01/07 05:36:56

  Modified:    App-Repository/lib/App Repository.pm
  Log:
  get_hash_of_hashes_by_key(), get_hash_of_values_by_key()
  
  Revision  Changes    Path
  1.18      +105 -27   p5ee/App-Repository/lib/App/Repository.pm
  
  Index: Repository.pm
  ===================================================================
  RCS file: /cvs/public/p5ee/App-Repository/lib/App/Repository.pm,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- Repository.pm	1 Dec 2004 20:19:49 -0000	1.17
  +++ Repository.pm	7 Jan 2005 13:36:56 -0000	1.18
  @@ -1,6 +1,6 @@
   
   #############################################################################
  -## $Id: Repository.pm,v 1.17 2004/12/01 20:19:49 spadkins Exp $
  +## $Id: Repository.pm,v 1.18 2005/01/07 13:36:56 spadkins Exp $
   #############################################################################
   
   package App::Repository;
  @@ -853,9 +853,9 @@
       my ($self, $table, $params, $cols, $options) = @_;
       $cols = [] if (!$cols);
       my $row = $self->get_row($table, $params, $cols, $options);
  -    my $hash = {};
  -    my ($col, $value);
  +    my ($hash, $col, $value);
       if ($row && $#$row > -1) {
  +        $hash = {};
           for (my $idx = 0; $idx <= $#$cols; $idx++) {
               $col = $cols->[$idx];
               $value = $row->[$idx];
  @@ -957,33 +957,35 @@
       else {
           $object = $self->get_hash($table, $params, $cols, $options);
       }
  -    $object->{_repository} = $self;
  -    $object->{_table} = $table;
  -    bless $object, $class;
  -    if (!ref($params)) {
  -        $object->{_key} = $params;
  -    }
  -    else {
  -        my $primary_key = $tabledef->{primary_key};
  -        $primary_key = [$primary_key] if (ref($primary_key) eq "");
  -        my ($key);
  -        if ($primary_key) {
  -            $key = undef;
  -            foreach my $column (@$primary_key) {
  -                if (defined $object->{$column}) {
  -                    if (defined $key) {
  -                        $key .= "," . $object->{$column};
  +    if ($object) {
  +        $object->{_repository} = $self;
  +        $object->{_table} = $table;
  +        bless $object, $class;
  +        if (!ref($params)) {
  +            $object->{_key} = $params;
  +        }
  +        else {
  +            my $primary_key = $tabledef->{primary_key};
  +            $primary_key = [$primary_key] if (ref($primary_key) eq "");
  +            my ($key);
  +            if ($primary_key) {
  +                $key = undef;
  +                foreach my $column (@$primary_key) {
  +                    if (defined $object->{$column}) {
  +                        if (defined $key) {
  +                            $key .= "," . $object->{$column};
  +                        }
  +                        else {
  +                            $key = $object->{$column};
  +                        }
                       }
                       else {
  -                        $key = $object->{$column};
  +                        $key = undef;
  +                        last;
                       }
                   }
  -                else {
  -                    $key = undef;
  -                    last;
  -                }
  +                $object->{_key} = $key if (defined $key);
               }
  -            $object->{_key} = $key if (defined $key);
           }
       }
       &App::sub_exit($object) if ($App::trace);
  @@ -1056,6 +1058,82 @@
   }
   
   #############################################################################
  +# get_hash_of_values_by_key()
  +#############################################################################
  +
  +=head2 get_hash_of_values_by_key()
  +
  +    * Signature: $hashes = $rep->get_hash_of_values_by_key ($table, $params, $valuecol, $keycol, $options);
  +    * Param:     $table        string
  +    * Param:     $params       undef,HASH
  +    * Param:     $valuecol     string
  +    * Param:     $keycol       string
  +    * Param:     $options      undef,HASH
  +    * Return:    $hash         HASH
  +    * Throws:    App::Exception::Repository
  +    * Since:     0.50
  +
  +    Sample Usage:
  +
  +    $hash = $rep->get_hash_of_values_by_key ($table, \%params, $valuecol, $keycol, \%options);
  +
  +tbd.
  +
  +=cut
  +
  +sub get_hash_of_values_by_key {
  +    &App::sub_entry if ($App::trace);
  +    my ($self, $table, $params, $valuecol, $keycol, $options) = @_;
  +    my $rows = $self->get_rows($table, $params, [$keycol, $valuecol], $options);
  +    my $hash = {};
  +    if ($rows && $#$rows > -1) {
  +        foreach my $row (@$rows) {
  +            $hash->{$row->[0]} = $row->[1];
  +        }
  +    }
  +    &App::sub_exit($hash) if ($App::trace);
  +    return($hash);
  +}
  +
  +#############################################################################
  +# get_hash_of_hashes_by_key()
  +#############################################################################
  +
  +=head2 get_hash_of_hashes_by_key()
  +
  +    * Signature: $hashes = $rep->get_hash_of_hashes_by_key ($table, $params, $cols, $keycol, $options);
  +    * Param:     $table        string
  +    * Param:     $params       undef,HASH
  +    * Param:     $cols         ARRAY
  +    * Param:     $keycol       string
  +    * Param:     $options      undef,HASH
  +    * Return:    $hash         HASH
  +    * Throws:    App::Exception::Repository
  +    * Since:     0.50
  +
  +    Sample Usage:
  +
  +    $hash = $rep->get_hash_of_hashes_by_key ($table, \%params, $cols, $keycol, \%options);
  +
  +tbd.
  +
  +=cut
  +
  +sub get_hash_of_hashes_by_key {
  +    &App::sub_entry if ($App::trace);
  +    my ($self, $table, $params, $cols, $keycol, $options) = @_;
  +    my $hashes = $self->get_hashes($table, $params, $cols, $options);
  +    my $hash_of_hashes = {};
  +    if ($hashes && $#$hashes > -1) {
  +        foreach my $hash (@$hashes) {
  +            $hash_of_hashes->{$hash->{$keycol}} = $hash;
  +        }
  +    }
  +    &App::sub_exit($hash_of_hashes) if ($App::trace);
  +    return($hash_of_hashes);
  +}
  +
  +#############################################################################
   # set_hash()
   #############################################################################
   
  @@ -2342,7 +2420,7 @@
           $table_def->{name} = $table;
           if (! $table_def->{label}) {
               $label = $table;
  -            if ($self->{autolabel}) {
  +            if ($self->{auto_label}) {
                   $label = lc($label);
                   $label =~ s/^([a-z])/uc($1)/e;
                   $label =~ s/(_[a-z])/uc($1)/eg;
  @@ -2499,7 +2577,7 @@
           $column_def->{name} = $column;
           if (! $column_def->{label}) {
               $label = $column;
  -            if ($self->{autolabel}) {
  +            if ($self->{auto_label}) {
                   $label = lc($label);
                   $label =~ s/^([a-z])/uc($1)/e;
                   $label =~ s/(_[a-z])/uc($1)/eg;
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.