File Coverage

blib/lib/ODS/Storage/Base.pm
Criterion Covered Total %
statement 29 31 93.5
branch 7 10 70.0
condition 5 10 50.0
subroutine 5 5 100.0
pod 0 3 0.0
total 46 59 77.9


line stmt bran cond sub pod time code
1             package ODS::Storage::Base;
2              
3 2     2   802 use YAOO;
  2         4  
  2         8  
4              
5 2     2   1240 use ODS::Iterator;
  2         4  
  2         683  
6              
7             auto_build;
8              
9             has table => isa(object);
10              
11             sub connect {
12 4     4 0 18 my ($self, @params) = @_;
13 4         12 $self = $self->new(@params);
14 4         212 return $self;
15             }
16              
17             sub into_rows {
18 8     8 0 16 my ($self, $data, $inflated) = @_;
19              
20 8 100 66     46 $data = $self->parse_data_format($data)
21             if (not ref $data and $self->can('parse_data_format'));
22              
23 8 100       73 if (ref $data eq 'ARRAY') {
    50          
24 4         7 my @rows;
25 4         12 for my $row ( @{ $data } ) {
  4         9  
26 8   50     35 push @rows, $self->table->row_class->new(
27             table => $self->table,
28             data => $row,
29             inflated => $inflated || 0
30             );
31             }
32 4         21 $self->table->rows(\@rows);
33              
34 4         95 return ODS::Iterator->new(table => $self->table);
35             } elsif (ref $data eq 'HASH') {
36 4   50     9 return $self->table->row_class->new(
37             table => $self->table,
38             data => $data,
39             inflated => $inflated || 0
40             );
41             }
42              
43 0         0 return undef;
44             }
45              
46             sub into_storage {
47 12     12 0 19 my ($self, $all) = @_;
48              
49 12         14 my $data;
50 12 50       21 if ($all) {
51 12         12 for my $row (@{ $self->table->rows }) {
  12         23  
52 44         162 my $val = $row->store_row();
53 44         55 push @{$data}, $val;
  44         86  
54             }
55             } else {
56 0         0 $data = $self->table->rows->[-1]->store_row();
57             }
58              
59 12 50 33     72 $data = $self->stringify_data_format($data)
60             if (ref $data and $self->can('stringify_data_format'));
61              
62 12         157 return $data;
63             }
64              
65             1;
66