Author: spadkins
Date: Wed Dec 20 07:46:20 2006
New Revision: 8412

Modified:
   p5ee/trunk/App-Repository/lib/App/SessionObject/RepositoryObjectSet.pm

Log:
add get_summary(), get_ext_summary(), get_repository(), get_table(), 
get_columns()

Modified: p5ee/trunk/App-Repository/lib/App/SessionObject/RepositoryObjectSet.pm
==============================================================================
--- p5ee/trunk/App-Repository/lib/App/SessionObject/RepositoryObjectSet.pm      
(original)
+++ p5ee/trunk/App-Repository/lib/App/SessionObject/RepositoryObjectSet.pm      
Wed Dec 20 07:46:20 2006
@@ -71,6 +71,8 @@
     delete $self->{unique_index};
     delete $self->{column_values};
     delete $self->{max_age_time};
+    delete $self->{ext_summary};
+    delete $self->{summary};
     &App::sub_exit() if ($App::trace);
 }
 
@@ -224,12 +226,15 @@
 ###########################################################################
 
 sub set_columns {
+    &App::sub_entry if ($App::trace);
     my ($self, $new_columns) = @_;
     $self->{columns} = $new_columns;
     $self->_clear_cache();
+    &App::sub_exit() if ($App::trace);
 }
 
 sub include_columns {
+    &App::sub_entry if ($App::trace);
     my ($self, $new_columns) = @_;
     my $columns = $self->{columns};
     if (!$columns) {
@@ -255,9 +260,37 @@
     if ($column_added) {
         $self->_clear_cache();
     }
+    &App::sub_exit() if ($App::trace);
+}
+
+sub get_repository {
+    &App::sub_entry if ($App::trace);
+    my ($self) = @_;
+    my $context = $self->{context};
+    my $repname = $self->{repository};
+    my $rep     = $context->repository($repname);
+    &App::sub_exit($rep) if ($App::trace);
+    return($rep);
+}
+
+sub get_table {
+    &App::sub_entry if ($App::trace);
+    my ($self) = @_;
+    my $table = $self->{table};
+    &App::sub_exit($table) if ($App::trace);
+    return($table);
+}
+
+sub get_columns {
+    &App::sub_entry if ($App::trace);
+    my ($self) = @_;
+    my $columns = $self->{columns};
+    &App::sub_exit($columns) if ($App::trace);
+    return($columns);
 }
 
 sub get_key_columns {
+    &App::sub_entry if ($App::trace);
     my ($self) = @_;
     my $repname = $self->{repository};
     my $context = $self->{context};
@@ -276,16 +309,19 @@
             push(@key_columns, $column);
         }
     }
+    &App::sub_exit([EMAIL PROTECTED]) if ($App::trace);
     return([EMAIL PROTECTED]);
 }
 
 sub get_column_defs {
+    &App::sub_entry if ($App::trace);
     my ($self) = @_;
     my $context     = $self->{context};
     my $repname     = $self->{repository};
     my $rep         = $context->repository($repname);
     my $table       = $self->{table} || die "table not defined";
     my $column_defs = $rep->{table}{$table}{column};
+    &App::sub_exit($column_defs) if ($App::trace);
     return($column_defs);
 }
 
@@ -361,6 +397,55 @@
     return($unique_index);
 }
 
+sub get_summary {
+    &App::sub_entry if ($App::trace);
+    my ($self, $key_columns, $options) = @_;
+    $key_columns = [] if (!$key_columns);
+    my $key_name = join(",", @$key_columns);
+
+    $self->_clear_cache_if_auto_params_changed($options) if (defined 
$self->{auto_params});
+    $self->_clear_cache_if_objects_expired($options) if ((defined 
$options->{max_age} || defined $self->{max_age}) && $self->{objects});
+
+    my $summary = $self->{summary}{$key_name};
+    if (!$summary) {
+        $summary = {};
+        my $rep          = $self->get_repository();
+        my $table        = $self->get_table();
+        my $index        = $self->get_index($key_columns);
+        my $columns      = $self->get_columns();
+        my ($objects, $ext_summaries, %options, $summarized_rows);
+        foreach my $key (keys %$index) {
+            $objects = $index->{$key};
+            $ext_summaries    = {};
+            %options          = ( ext_summaries => $ext_summaries );
+            $summarized_rows  = $rep->summarize_rows($table, $objects, 
$columns, $key_columns, \%options);
+            $self->{ext_summary}{$key_name}{$key} = $ext_summaries;
+            $summary->{$key} = $summarized_rows->[0];
+        }
+        $self->{summary}{$key_name} = $summary;
+    }
+    &App::sub_exit($summary) if ($App::trace);
+    return($summary);
+}
+
+sub get_ext_summary {
+    &App::sub_entry if ($App::trace);
+    my ($self, $key_columns, $options) = @_;
+    $key_columns = [] if (!$key_columns);
+    my $key_name = join(",", @$key_columns);
+
+    $self->_clear_cache_if_auto_params_changed($options) if (defined 
$self->{auto_params});
+    $self->_clear_cache_if_objects_expired($options) if ((defined 
$options->{max_age} || defined $self->{max_age}) && $self->{objects});
+
+    my $ext_summary = $self->{ext_summary}{$key_name};
+    if (!$ext_summary) {
+        $self->get_summary($key_columns);
+        $ext_summary = $self->{ext_summary}{$key_name};
+    }
+    &App::sub_exit($ext_summary) if ($App::trace);
+    return($ext_summary);
+}
+
 sub get_column_values {
     &App::sub_entry if ($App::trace);
     my ($self, $column, $options) = @_;

Reply via email to