package ReceiveACDS;
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.09';
$version = $VERSION;
$author="Richard West/Dean Hinshaw";
$date="2006-07-05";
#
# ChangeLog
# =========
#
# Version 1.09 - 2006-07-05 (DJF)
# ------------
#
# + Changed numberOfStreams to use standerdized function.
#
# Version 1.08 - 2005-12-10 (DJF)
# ------------
#
# + Now returns ignored if ACDSDTS flag is ignored.
#
# Version 1.07 - 2004-03-04 (DJF)
# ------------
#
# + Use new receive function to get response from receive spool
#
# Version 1.06 - 2002-02-20 (DJF)
# ------------
#
# + Added a findFile for database catalogue product entries as a condition on the newFile
# This is to accomodate the creation of an empty catalogue index by obssumm
#
# Version 1.05 - 2001-03-16 (DH)
# ------------
#
# + Print out version number in performAction() for
# tracking purposes.
#
# Version 1.04 - 2001-01-09 (DH)
# ------------
#
# + Add ingore option in evaluateRules
#
# Version 1.03 - 2000-12-20 (DH)
# ------------
#
# + Set instrument to 'cat' for ACDS products
#
#
# Version 1.02 - 2000-12-19 (DH)
# ------------
#
# + Add ingesting of other keywords besides FILE and CONTENT
#
# Version 1.01 - 2000-12-18 (DH)
# ------------
#
# + First production version.
#
# Declare list of instruments this module is interested in
@instList=qw(all);
# Number of streams
sub numberOfStreams
{
return 1;
}
# Rules method
sub evaluateRules {
return ignore() if ( ignored(module => 'SendACDS', stream => 1)
|| ignored(module => 'ACDSDTS', stream => 1)
) ;
;
start() if complete(module => 'ACDSDTS', stream => 1);
}
# Action method
sub performAction {
info("Module version number: $version");
# Name of ACDS keywords file
my @lines=readASCIIFile(name => "intermediate/ACDS_KEYWORDS.TXT");
# Loop over every entry in the keywords file
my ($file,$data);
foreach my $line (@lines)
{
my ($key,$value)=split(/\s*=\s*/,$line,2);
if($key eq "FILE") {
$file=$value;
$$data{$file}{'name'}=$value;
} elsif ( $key=~/(CONTENT|FORMAT|CATNAME)/ ) {
$$data{$file}{lc $key}=$value;
} elsif( $key=~/PLT_(RA|DEC|ID|ORG)/ ) {
$$data{$file}{lc "plate_$1"}=$value;
} elsif( $key=~/PLT_FILT/ ) {
$$data{$file}{'plate_filter'}=$value;
} elsif( $key=~/SRCNUM/ ) {
$$data{$file}{'src_num'}=$value;
}
}
# Fill in missing keywords
# Create database entries for newly received files
foreach my $file (values %$data)
{
my @dummy=findFile(class => 'product', instrument => 'cat', %$file);
# Spook the module name because these files must belong to the sending module
# Otherwise we will have problems on a resend
if (!@dummy)
{
my $dummy=newFile(class => 'product'
,instrument => 'cat'
, module => 'SendACDS'
,%$file
);
}
}
return success();
}
1;