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

Annotation of /FortyEightMeta/TaxStr.pm

Parent Directory Parent Directory | Revision Log Revision Log


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

1 : olson 1.2 package FortyEightMeta::TaxStr;
2 : olson 1.1
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 : olson 1.2 $DIGITS = [map { chr($_) } 33..47, 48..57, 59..64, 65..90, 91, 93..96, 97..122, 123..126];
17 : olson 1.1 }
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 : olson 1.2 sub DESTROY
36 :     {
37 :     my($self) = @_;
38 :     $self->taxstr_lookup()->finish();
39 :     $self->taxstr_insert()->finish();
40 :     $self->taxstr_update()->finish();
41 :     }
42 : olson 1.1
43 :     sub tax_name_to_id
44 :     {
45 :     my($self, $str) = @_;
46 :    
47 :     $str = '' if !defined($str);
48 :     $self->taxstr_lookup->execute($str);
49 :    
50 :     my $res = $self->taxstr_lookup->fetchrow_arrayref();
51 :     if ($res)
52 :     {
53 :     my $k = $res->[0];
54 : olson 1.2 $k =~ s/\s+$//;
55 : olson 1.1 $self->cache->{$str} = ['F', $k];
56 :     # print "F\t'$str'\t'$k'\n";
57 :     return $k;
58 :     }
59 :     else
60 :     {
61 :     if ($self->cache->{$str})
62 :     {
63 :     my $l = $self->cache->{$str};
64 :     print "XXXXX '$str': " . join("\t", map { "'$_'" } @$l), "\n";
65 :     }
66 :     $self->taxstr_insert->execute($str);
67 :    
68 : olson 1.2 #my $id = $self->dbh->{mysql_insertid};
69 :     my $id = $self->dbh->last_insert_id(undef, undef, 'tax_item', undef);
70 : olson 1.1 my $s = $self->calc->to_base($id);
71 :     $self->taxstr_update->execute($s, $id);
72 :     # print "N\t$str\t$id\t$s\n";
73 :     $self->cache->{$str} = ['N', $s, $id];
74 :    
75 :     return $s;
76 :     }
77 :     }
78 :    
79 :     1;

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3