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

Annotation of /FortyEight/ImportJob.pm

Parent Directory Parent Directory | Revision Log Revision Log


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

1 : olson 1.1
2 :     #
3 :     # Module to wrap an import job directory.
4 :     #
5 :    
6 :     package ImportJob;
7 :    
8 :     use FIG;
9 :     use FIGV;
10 :     use GenomeMeta;
11 :     use DBMaster;
12 :     use Mail::Mailer;
13 :     use File::Basename;
14 :    
15 :     use DirHandle;
16 :     use strict;
17 :    
18 :     use SOAP::Lite;
19 :    
20 :     use FIG_Config;
21 :    
22 :     sub all_jobs
23 :     {
24 :     my @jobs;
25 :    
26 :     my $dh = new DirHandle($FIG_Config::import_jobs);
27 :    
28 :     while (defined($_ = $dh->read()))
29 :     {
30 :     next unless /^\d+$/;
31 :    
32 :     my $job = ImportJob->new($_);
33 :     if ($job)
34 :     {
35 :     push(@jobs, $job);
36 :     }
37 :     }
38 :     return sort { $a->id <=> $b->id } @jobs;
39 :     }
40 :    
41 :     #
42 :     # create new job directory on disk
43 :     # data is a hash reference
44 :     #
45 :     sub create_new_job
46 :     {
47 :     my ($class, $data) = @_;
48 :    
49 :     my $jobs_dir = $FIG_Config::import_jobs;
50 :    
51 :     # init job counter if necessary
52 :     umask 0000;
53 :     unless (-f "$jobs_dir/JOBCOUNTER") {
54 :     open(FH, ">$jobs_dir/JOBCOUNTER") or die "could not create jobcounter file: $!\n";
55 :     print FH "000\n";
56 :     close FH;
57 :     }
58 :    
59 :     # get new job id from job counter
60 :     open(FH, "$jobs_dir/JOBCOUNTER") or die "could not open jobcounter file: $!\n";
61 :     my $jobnumber = <FH>;
62 :     chomp $jobnumber;
63 :     $jobnumber = sprintf("%03d", $jobnumber + 1);
64 :     close FH;
65 :     while (-d $jobs_dir.'/'.$jobnumber)
66 :     {
67 :     $jobnumber = sprintf("%03d", $jobnumber + 1);
68 :     }
69 :    
70 :     # create job directory
71 :     my $job_dir = $jobs_dir.'/'.$jobnumber;
72 :     mkdir $job_dir;
73 :     open(FH, ">$jobs_dir/JOBCOUNTER") or die "could not write to jobcounter file: $!\n";
74 :     print FH $jobnumber;
75 :     close FH;
76 :    
77 :     unless (-d $job_dir) {
78 :     return (undef, 'The job directory could not be created.');
79 :     }
80 :    
81 :     # create metadata files
82 :     my $meta_id = "import_$jobnumber";
83 :    
84 :     my $meta = new GenomeMeta($meta_id, "$job_dir/meta.xml");
85 :    
86 :     open(FH, ">" . $job_dir . "/ACTIVE") or die "cannot open ACTIVE file in $job_dir: $!\n";
87 :     close(FH);
88 :    
89 :     return ($jobnumber,'');
90 :     }
91 :    
92 :    
93 :     #
94 :     # load existing Job
95 :     #
96 :     sub new
97 :     {
98 :     my($class, $job_id) = @_;
99 :    
100 :    
101 :     my $dir;
102 :     if ($job_id =~ /^\d+$/)
103 :     {
104 :     $dir = "$FIG_Config::import_jobs/$job_id";
105 :     }
106 :     else
107 :     {
108 :     $dir = $job_id;
109 :     $job_id = basename($dir);
110 :     }
111 :    
112 :     return if (! -d $dir);
113 :    
114 :     my $self = {
115 :     id => $job_id,
116 :     dir => $dir,
117 :     };
118 :     $self = bless $self, $class;
119 :     $self->init();
120 :     return $self;
121 :     }
122 :    
123 :     sub init
124 :     {
125 :     my($self) = @_;
126 :    
127 :     my $dir = $self->{dir};
128 :    
129 :     $self->{meta} = new GenomeMeta(undef, "$dir/meta.xml");
130 :     }
131 :    
132 :     sub dir { return $_[0]->{dir}; }
133 :     sub id { return $_[0]->{id}; }
134 :     sub meta { return $_[0]->{meta}; }
135 :    
136 :    
137 :     1;

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3