[Bio] / FortyEight / ImportJob.pm Repository:
ViewVC logotype

View of /FortyEight/ImportJob.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (download) (as text) (annotate)
Wed Sep 5 21:42:11 2007 UTC (12 years, 2 months ago) by olson
Branch: MAIN
CVS Tags: mgrast_dev_08112011, rast_rel_2009_05_18, mgrast_dev_08022011, rast_rel_2014_0912, rast_rel_2008_06_18, rast_rel_2008_06_16, mgrast_dev_05262011, rast_rel_2008_12_18, mgrast_dev_04082011, rast_rel_2008_07_21, rast_rel_2010_0928, rast_2008_0924, mgrast_version_3_2, mgrast_dev_12152011, rast_rel_2008_04_23, mgrast_dev_06072011, rast_rel_2008_09_30, rast_rel_2009_0925, rast_rel_2010_0526, rast_rel_2014_0729, mgrast_dev_02212011, rast_rel_2010_1206, mgrast_release_3_0, mgrast_dev_03252011, rast_rel_2010_0118, mgrast_rel_2008_0924, mgrast_rel_2008_1110_v2, rast_rel_2009_02_05, rast_rel_2011_0119, mgrast_rel_2008_0625, mgrast_release_3_0_4, mgrast_release_3_0_2, mgrast_release_3_0_3, mgrast_release_3_0_1, mgrast_dev_03312011, mgrast_release_3_1_2, mgrast_release_3_1_1, mgrast_release_3_1_0, mgrast_dev_04132011, rast_rel_2008_10_09, mgrast_dev_04012011, rast_release_2008_09_29, mgrast_rel_2008_0806, mgrast_rel_2008_0923, mgrast_rel_2008_0919, rast_rel_2009_07_09, rast_rel_2010_0827, mgrast_rel_2008_1110, myrast_33, rast_rel_2011_0928, rast_rel_2008_09_29, mgrast_rel_2008_0917, rast_rel_2008_10_29, mgrast_dev_04052011, mgrast_dev_02222011, rast_rel_2009_03_26, mgrast_dev_10262011, rast_rel_2008_11_24, rast_rel_2008_08_07, HEAD
new file

#
# Module to wrap an import job directory.
#

package ImportJob;

use FIG;
use FIGV;
use GenomeMeta;
use DBMaster;
use Mail::Mailer;
use File::Basename;

use DirHandle;
use strict;

use SOAP::Lite;

use FIG_Config;

sub all_jobs
{
    my @jobs;

    my $dh = new DirHandle($FIG_Config::import_jobs);

    while (defined($_ = $dh->read()))
    {
	next unless /^\d+$/;

	my $job = ImportJob->new($_);
	if ($job)
	{
	    push(@jobs, $job);
	}
    }
    return sort { $a->id <=> $b->id } @jobs;
}

#
# create new job directory on disk
# data is a hash reference 
#
sub create_new_job
{
    my ($class, $data) = @_;
    
    my $jobs_dir = $FIG_Config::import_jobs;
    
    # init job counter if necessary
    umask 0000;
    unless (-f "$jobs_dir/JOBCOUNTER") {
	open(FH, ">$jobs_dir/JOBCOUNTER") or die "could not create jobcounter file: $!\n";
	print FH "000\n";
	close FH;
    }
    
    # get new job id from job counter
    open(FH, "$jobs_dir/JOBCOUNTER") or die "could not open jobcounter file: $!\n";
    my $jobnumber = <FH>;
    chomp $jobnumber;
    $jobnumber = sprintf("%03d", $jobnumber + 1);
    close FH;
    while (-d $jobs_dir.'/'.$jobnumber)
    {
	$jobnumber = sprintf("%03d", $jobnumber + 1);
    }

    # create job directory
    my $job_dir = $jobs_dir.'/'.$jobnumber;
    mkdir $job_dir;
    open(FH, ">$jobs_dir/JOBCOUNTER") or die "could not write to jobcounter file: $!\n";
    print FH $jobnumber;
    close FH;
    
    unless (-d $job_dir) {
	return (undef, 'The job directory could not be created.');
    }

    # create metadata files  
    my $meta_id = "import_$jobnumber";
    
    my $meta = new GenomeMeta($meta_id, "$job_dir/meta.xml");
    
    open(FH, ">" . $job_dir . "/ACTIVE") or die "cannot open ACTIVE file in $job_dir: $!\n";
    close(FH);
  
  return ($jobnumber,'');
}


#
# load existing Job 
# 
sub new
{
    my($class, $job_id) = @_;


    my $dir;
    if ($job_id =~ /^\d+$/)
    {
	$dir = "$FIG_Config::import_jobs/$job_id";
    }
    else
    {
	$dir = $job_id;
	$job_id = basename($dir);
    }

    return if (! -d $dir);

    my $self = {
	id => $job_id,
	dir => $dir,
    };
    $self = bless $self, $class;
    $self->init();
    return $self;
}

sub init
{
    my($self) = @_;

    my $dir = $self->{dir};

    $self->{meta} = new GenomeMeta(undef, "$dir/meta.xml");
}

sub dir { return $_[0]->{dir}; }
sub id { return $_[0]->{id}; }
sub meta { return $_[0]->{meta}; }


1;

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3