package Deliver; use strict; use English; use Carp; use vars qw(@ISA $VERSION $name $author $date $version @instList $numberOfStreams); @ISA = qw(Module); use ModuleResources; # Declare identity, version, author, date, etc. $name = __PACKAGE__; $VERSION = '1.11'; $version = $VERSION; $author="Dean Hinshaw,Duncan John Fyfe,Ed Chapin"; $date="2013-06-11"; # # ChangeLog # ========= # # Version 1.11 - 2013-06-11 (EC) # ------------ # # + Merge changes from SOC version. # + This version includes for the first time the changes made to this module in # slew pipeline. # # Version 1.10 - 2006-08-15 (DJF) # ------------ # # + Change to find release note via value provided by configuration file. # + Changed to look for screening report in intermediate directory. # # Version 1.09 - 2005-12-15 (DJF) # ------------ # # + Change evaluteRules to take account of new ReceiveDPSS module # + Remove call to duplicateCheck. This is no longer possible # within a sequence as it doesn't have access to a pipeline level database # # Version 1.08 - 2004-04-15 (DJF) # ------------ # # + evaluate conditions were calling start() rather than returning start(). # # Version 1.07 - 2004-03-24 (DJF) # ------------ # # + Removed delivery and sending of delivery email from this module. # An external delivery program can monitor the Delivery flag for completeness # and use that as a flag for delivery. # The pertinent files are: # The product set product/PIPE_SSCXSS_D__??????????___00000.XMM # The TDF file PIPE_SSCXSS_D__??????????___00000.TDF # The delivery email = intermediate/Deliver-all-1-PPS_delivery_email_message-X0000000000.ascii # # Version 1.06 - 2004-03-23 (DJF) # ------------ # # + deliverProductSet does not return a value. Removed test for a value. # # Version 1.05 - 2004-03-04 (DJF) # ------------ # # + hanged sendXFTS to deliverProductSet which will put files in delivery spool. # + Added conditional deliver() function to make delivery # a pipeline configuration parameter # Version 1.04 - 2003-09-01 (DJF) # ------------ # # + Made delivery note recipients not hardwired into module. # Now retrieved with call to ModuleResources::deliveryNoteRecipients # # Version 1.03 - 2002-02-18 (DH) # ------------ # # + Add duplicateCheck() call, to see if this obs is running elsewhere # in either of the production pipelines. # # Version 1.02 - 2001-12-18 (DH) # ------------ # # + Change email list for sending delivery note to send to xmmdoc # and cgabriel. # + Minor re-format of the delivery note. # # Version 1.01 - 2001-10-09 (DH) # ------------ # # + First production version. # # Declare list of instruments this module is interested in @instList=qw(all); # Number of streams $numberOfStreams=1; # Rules method sub evaluateRules { return ignore() if ( ignored(module => 'ReceiveDPSS', stream => 1) ) ; return start() if ( complete(module => 'ReceiveDPSS', stream => 1) ); } # Action method sub performAction { info("Module version number: $version"); # Check that this observation is not processing elsewhere #duplicateCheck(); # Build the PPS message file my $indexFile=findFile(class => 'product', instrument => 'ob', content => 'PPS product index'); my $fileInf=fileInfo(class => 'product', name => $indexFile); my $obs = getObservationProperties(); my $obs_id = $$obs{obs_id}; $obs_id =~ s/\..*//; my @message; my $title = "Delivery Note for Observation - $$obs{orbit}/$obs_id ($$obs{object})"; push @message, "\n $title\n"; push @message, " ===============================================================\n\n"; push @message, "XFTS Delivery Date to SOC : ", scalar localtime, "\n\n"; push @message, "1 PCMS Processing\n"; push @message, "-----------------\n\n"; push @message , &findFullReleaseNote(); my $scrnreport = "screening/dpss_log_$$fileInf{'sequence'}.txt"; push @message, "\n2 Data Product Screening Report"; push @message, "\n-------------------------------\n\n"; if ( -f $scrnreport ) { push @message, join("\n", readASCIIFile( name=>$scrnreport )), "\n"; } else { push @message , "No data product screening report currently available.\n"; } my $messageFile=newFile(class => 'product' ,content => 'PPS RUN MESSAGE' ,'format' => 'ASCII' ); writeASCIIFile(name=>$messageFile, text=> \@message); insertRunMessage(message => $messageFile); # Construct and send delivery email my @email; push @email, "From: pcms\@sciops.esa.int\n"; push @email, "Subject: $title\n"; push @email, @message; my $emailFile=newFile(class => 'intermediate' ,content => 'PPS delivery email message' ,'format' => 'ASCII' ); writeASCIIFile(name=>$emailFile, text=>\@email); sequenceComplete(); return success(); } 1;