|
From: <mjd...@us...> - 2009-11-04 00:20:55
|
Revision: 236
http://treebase.svn.sourceforge.net/treebase/?rev=236&view=rev
Author: mjdominus
Date: 2009-11-04 00:19:56 +0000 (Wed, 04 Nov 2009)
Log Message:
-----------
Added special case handling for STUDY_NEXUSFILE lob fields
Modified Paths:
--------------
trunk/treebase-core/src/main/perl/lib/CIPRES/TreeBase/RecDumper.pm
Modified: trunk/treebase-core/src/main/perl/lib/CIPRES/TreeBase/RecDumper.pm
===================================================================
--- trunk/treebase-core/src/main/perl/lib/CIPRES/TreeBase/RecDumper.pm 2009-11-02 23:05:22 UTC (rev 235)
+++ trunk/treebase-core/src/main/perl/lib/CIPRES/TreeBase/RecDumper.pm 2009-11-04 00:19:56 UTC (rev 236)
@@ -1,5 +1,7 @@
package CIPRES::TreeBase::RecDumper;
use Carp 'croak';
+use File::Temp qw(tempfile);
+use strict;
# XXX LOB fields should be removed from fieldlist and handled separately
sub new {
@@ -49,29 +51,26 @@
and croak("rec: too many items (expected $self->{X})");
@_ < @{$self->{F}}
and croak("rec: too few items (expected $self->{X})");
-
- @_ = $self->quote_data(@_);
my @values;
if ( $self->{'N'} ne 'STUDY_NEXUSFILE' ) {
- @values = @_;
+ @values = $self->quote_data(@_);
}
else {
+ my ( %record, $dir, $path );
+ eval {
my @fields = @{$self->{F}};
- my ( $dir, $path ) = ( $self->{'D'} );
- for my $i ( 0 .. $#fields ) {
- if ( uc $fields[$i] eq 'ID' ) {
- $path = "$dir/".$_[$i];
- }
- if ( uc $fields[$i] ne 'NEXUS' ) {
- push @values, $_[$i];
- }
- else {
- open my $nexfh, '>', $path or croak $!;
- print $nexfh $_[$i];
- close $nexfh;
- push @values, "lo_import('$path')";
- }
- }
+ %record = map { $fields[$_] => $_[$_] } ( 0 .. $#fields );
+# $dir = $self->{'D'} . '/' . $record{STUDY_ID};
+# mkdir $dir if not -d $dir;
+# $path = $dir . '/' . $record{FILENAME};
+ my ( $fh, $filename ) = tempfile( DIR => $self->{'D'} );
+ @values = ( $self->quote_data($record{STUDY_ID}), "lo_import('$filename')", $self->quote_data($record{FILENAME}) );
+# open my $nexfh, '>', $path or croak $!;
+ print $fh substr( $record{NEXUS}, 1, length($record{NEXUS}) - 2 );
+ close $fh;
+ system('gzip','-9',$filename);
+ };
+ warn 'dir: ', $dir, ' path: ', $path, ' file: ', $record{FILENAME}, ' id: ', $record{STUDY_ID}, ' msg: ', $@ if $@;
}
my $values = join ", ", @values;
my $insert = $self->{'PREFIX'} . $values . $self->{'SUFFIX'};
@@ -81,6 +80,7 @@
# Format metadata into a create statement and return (or write) the result
sub dump_create {
+ my $self = shift;
my $create = qq{CREATE TABLE "$self->{'N'}";\n};
return print {$self->{'OUT'}} $create if $self->{'OUT'};
return $create;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|