GBrowse
view release on metacpan or search on metacpan
lib/Bio/Graphics/Browser2/UserTracks.pm view on Meta::CPAN
package Bio::Graphics::Browser2::UserTracks;
# $Id$
use strict;
use Bio::Graphics::Browser2::DataSource;
use Bio::Graphics::Browser2::DataLoader;
use Bio::Graphics::Browser2::UserTracks::Filesystem;
use Bio::Graphics::Browser2::UserTracks::Database;
use File::Spec;
use File::Basename 'basename';
use File::Path 'mkpath','rmtree';
use File::Copy 'move';
use IO::File;
use IO::String;
use File::Temp 'tempdir';
use POSIX ();
use Carp qw(croak cluck);
use CGI 'param';
use Data::Dumper;
use constant DEBUG => 0;
my $HASBIGWIG;
# The intent of this is to provide a single unified interface for
# managing a user's uploaded and shared tracks.
# BUG: It's still kind of screwy: there seem to be filesystem
# traversal methods in the parent class which should not be here.
# class methods
sub busy_file_name { 'BUSY' }
sub status_file_name { 'STATUS' }
sub imported_file_name { 'IMPORTED' }
sub mirrored_file_name { 'MIRRORED' }
sub sources_dir_name { 'SOURCES' }
sub new {
my $class = shift;
my ($data_source,$session) = @_;
my $globals = $data_source->globals;
my $uploadsid = $session->uploadsid;
my $backend = $globals->user_account_db;
my $user_accounts = $globals->user_accounts;
my $implementer;
if ($backend && $backend =~ /db/i && $user_accounts) {
$implementer = 'Bio::Graphics::Browser2::UserTracks::Database';
} else {
$implementer = 'Bio::Graphics::Browser2::UserTracks::Filesystem';
}
my $self = $implementer->_new($data_source, $globals, $uploadsid, $session);
$self->is_admin(1) if $class->admin;
$self->create_track_lookup;
return $self;
}
sub _new {
my $class = shift;
my ($data_source, $globals, $uploadsid, $session) = @_;
my $self = bless {
config => $data_source,
uploadsid => $uploadsid,
globals => $globals,
session => $session,
data_source => $data_source->name,
}, ref $class || $class;
return $self;
}
##### CLASS METHOD #####
sub admin {0}
########################
sub uploadsid {shift->{uploadsid}}
sub session {shift->{session}}
sub sessionid {shift->session->id}
sub page_settings {
my $self = shift;
return $self->{'.page_settings'} ||= $self->session->page_settings;
}
sub database {
my $self = shift;
return $self->isa('Bio::Graphics::Browser2::UserTracks::Database');
}
sub globals {shift->{globals} }
sub data_source {shift->{config} }
sub datasource_name {shift->{data_source} }
( run in 1.035 second using v1.01-cache-2.11-cpan-600a1bdf6e4 )