[Bio] / FortyEightMeta / TaxStr.pm Repository:
ViewVC logotype

Annotation of /FortyEightMeta/TaxStr.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (view) (download) (as text)

1 : olson 1.1 package TaxStr;
2 :    
3 :     #
4 :     # Simple module to wrap up the tax string manipulation routines.
5 :     #
6 :    
7 :     use strict;
8 :     use base 'Class::Accessor';
9 :     use Math::BaseCalc;
10 :     use Data::Dumper;
11 :    
12 :     __PACKAGE__->mk_accessors(qw(dbh taxstr_lookup taxstr_insert taxstr_update calc cache));
13 :    
14 :     our $DIGITS;
15 :     BEGIN {
16 :     $DIGITS = [map { chr($_) } 33..47, 48..57, 59..64, 65..90, 91..96, 97..122, 123..126];
17 :     }
18 :    
19 :     sub new
20 :     {
21 :     my($class, $dbh) = @_;
22 :    
23 :     my $self= {
24 :     dbh => $dbh,
25 :     calc => new Math::BaseCalc(digits => $DIGITS),
26 :     taxstr_lookup => $dbh->prepare(qq(SELECT dbkey FROM tax_item WHERE str = ?)),
27 :     taxstr_insert => $dbh->prepare(qq(INSERT INTO tax_item (str) VALUES (?))),
28 :     taxstr_update => $dbh->prepare(qq(UPDATE tax_item SET dbkey = ? WHERE id = ?)),
29 :     cache => {},
30 :     };
31 :    
32 :     return bless $self, $class;
33 :     }
34 :    
35 :    
36 :     sub tax_name_to_id
37 :     {
38 :     my($self, $str) = @_;
39 :    
40 :     $str = '' if !defined($str);
41 :     $self->taxstr_lookup->execute($str);
42 :    
43 :     my $res = $self->taxstr_lookup->fetchrow_arrayref();
44 :     if ($res)
45 :     {
46 :     my $k = $res->[0];
47 :     $self->cache->{$str} = ['F', $k];
48 :     # print "F\t'$str'\t'$k'\n";
49 :     return $k;
50 :     }
51 :     else
52 :     {
53 :     if ($self->cache->{$str})
54 :     {
55 :     my $l = $self->cache->{$str};
56 :     print "XXXXX '$str': " . join("\t", map { "'$_'" } @$l), "\n";
57 :     }
58 :     $self->taxstr_insert->execute($str);
59 :    
60 :     my $id = $self->dbh->{mysql_insertid};
61 :     my $s = $self->calc->to_base($id);
62 :     $self->taxstr_update->execute($s, $id);
63 :     # print "N\t$str\t$id\t$s\n";
64 :     $self->cache->{$str} = ['N', $s, $id];
65 :    
66 :     return $s;
67 :     }
68 :     }
69 :    
70 :     1;

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3