[Bio] / Sprout / CustomAttributes.pm Repository:
ViewVC logotype

Diff of /Sprout/CustomAttributes.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.25, Sun May 6 10:16:52 2007 UTC revision 1.27, Sun Sep 30 03:46:30 2007 UTC
# Line 9  Line 9 
9      use Tracer;      use Tracer;
10      use ERDBLoad;      use ERDBLoad;
11      use Stats;      use Stats;
12        use Time::HiRes;
13    
14  =head1 Custom SEED Attribute Manager  =head1 Custom SEED Attribute Manager
15    
# Line 437  Line 438 
438      my ($self, $fileName, %options) = @_;      my ($self, $fileName, %options) = @_;
439      # Declare the return variable.      # Declare the return variable.
440      my $retVal = Stats->new('keys', 'values');      my $retVal = Stats->new('keys', 'values');
441        # Initialize the timers.
442        my ($insertTime, $eraseTime, $archiveTime) = (0, 0, 0);
443      # Check for append mode.      # Check for append mode.
444      my $append = ($options{append} ? 1 : 0);      my $append = ($options{append} ? 1 : 0);
445      # Create a hash of key names found.      # Create a hash of key names found.
# Line 473  Line 476 
476              }              }
477              # Archive the line (if necessary).              # Archive the line (if necessary).
478              if (defined $ah) {              if (defined $ah) {
479                    my $startTime = time();
480                  Tracer::PutLine($ah, [$id, $key, @values]);                  Tracer::PutLine($ah, [$id, $key, @values]);
481                    $archiveTime += time() - $startTime;
482              }              }
483              # Do some validation.              # Do some validation.
484              if (! $id) {              if (! $id) {
# Line 505  Line 510 
510                          $retVal->Add(keys => 1);                          $retVal->Add(keys => 1);
511                          # If this is NOT append mode, erase the key.                          # If this is NOT append mode, erase the key.
512                          if (! $append) {                          if (! $append) {
513                                my $startTime = time();
514                              $self->EraseAttribute($realKey);                              $self->EraseAttribute($realKey);
515                                $eraseTime += time() - $startTime;
516                                Trace("Attribute $realKey erased.") if T(3);
517                          }                          }
518                      }                      }
519                      Trace("Key $realKey found.") if T(3);                      Trace("Key $realKey found.") if T(3);
520                  }                  }
521                  # Everything is all set up, so add the value.                  # Everything is all set up, so add the value.
522                    my $startTime = time();
523                  $self->AddAttribute($id, $key, @values);                  $self->AddAttribute($id, $key, @values);
524                    $insertTime += time() - $startTime;
525                  my $progress = $retVal->Add(values => 1);                  my $progress = $retVal->Add(values => 1);
526                  Trace("$progress values loaded.") if T(3) && ($progress % 1000 == 0);                  Trace("$progress values loaded.") if T(3) && ($progress % 1000 == 0);
527              }              }
528          }          }
529            $retVal->Add(eraseTime  =>  $eraseTime);
530            $retVal->Add(insertTime =>  $insertTime);
531            $retVal->Add(archiveTime => $archiveTime);
532      };      };
533      # Check for an error.      # Check for an error.
534      if ($@) {      if ($@) {
# Line 1835  Line 1848 
1848      if ($idValue =~ /^([A-Za-z]+):(.+)/) {      if ($idValue =~ /^([A-Za-z]+):(.+)/) {
1849          # Here we have a typed ID.          # Here we have a typed ID.
1850          ($type, $id) = ($1, $2);          ($type, $id) = ($1, $2);
1851            # Fix the case sensitivity on PDB IDs.
1852            if ($type eq 'PDB') { $id = lc $id; }
1853      } elsif ($idValue =~ /fig\|/) {      } elsif ($idValue =~ /fig\|/) {
1854          # Here we have a feature ID.          # Here we have a feature ID.
1855          ($type, $id) = (Feature => $idValue);          ($type, $id) = (Feature => $idValue);
# Line 2009  Line 2024 
2024      return $retVal;      return $retVal;
2025  }  }
2026    
2027    
2028    =head3 AttributeTable
2029    
2030    C<< my $tableHtml = CustomAttributes::AttributeTable($cgi, @attrList); >>
2031    
2032    Format the attribute data into an HTML table.
2033    
2034    =over 4
2035    
2036    =item cgi
2037    
2038    CGI query object used to generate the HTML
2039    
2040    =item attrList
2041    
2042    List of attribute results, in the format returned by the L</GetAttributes> or
2043    L</QueryAttributes> methods.
2044    
2045    =item RETURN
2046    
2047    Returns an HTML table displaying the attribute keys and values.
2048    
2049    =back
2050    
2051    =cut
2052    
2053    sub AttributeTable {
2054        # Get the parameters.
2055        my ($cgi, @attrList) = @_;
2056        # Accumulate the table rows.
2057        my @html = ();
2058        for my $attrData (@attrList) {
2059            # Format the object ID and key.
2060            my @columns = map { CGI::escapeHTML($_) } @{$attrData}[0,1];
2061            # Now we format the values. These remain unchanged unless one of them is a URL.
2062            my $lastValue = scalar(@{$attrData}) - 1;
2063            push @columns, map { $_ =~ /^http:/ ? $cgi->a({ href => $_ }, $_) : $_ } @{$attrData}[2 .. $lastValue];
2064            # Assemble the values into a table row.
2065            push @html, $cgi->Tr($cgi->td(\@columns));
2066        }
2067        # Format the table in the return variable.
2068        my $retVal = $cgi->table({ border => 2 }, $cgi->Tr($cgi->th(['Object', 'Key', 'Values'])), @html);
2069        # Return it.
2070        return $retVal;
2071    }
2072  1;  1;

Legend:
Removed from v.1.25  
changed lines
  Added in v.1.27

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3