Expand|Select|Wrap|Line Numbers
- #!/usr/bin/perl
- use strict;
- use XML::Simple;
- use Data::Dumper;
- use File::stat;
- use Time::localtime;
- use POSIX ();
- use File::Basename;
- use File::Path qw(mkpath);
- #use Env;
- print "Content-type:text/html\r\n\r\n";
- my $sourceName = $ARGV[0];
- my $cobdate;
- my $TMPFILE;
- my $TMP_FILE;
- my $directory ;
- my $riskError;
- my $tradeError;
- my $cobdateTag;
- my $fileTypeTag;
- my $rmErrorBodyTag;
- my $bookIdTag;
- my $subBookIdTag;
- my $gbmBookRefTag;
- my $bookTag;
- my $ticketNumber;
- my $riskTypeTag;
- my $errorDescriptionTag;
- my $errorTypeTag;
- my $reg;
- my( @logLines );
- my $zipfilename;
- my $sourceSysIdTag;
- my $runLogFhnd;
- my $surfaceError;
- my $timeStamp;
- sub LDATA() { "DATA"; }
- sub LDEBUG(){ "DEBUG"; }
- sub LINFO() { "INFO"; }
- sub LWARN() { "WARN"; }
- sub LERROR(){ "ERROR"; }
- sub LFATAL(){ "FATAL"; }
- sub LSTATS(){ "STATS"; }
- sub myTRUE() { 1; }
- sub myFALSE() { 0; }
- sub mySUCCESS() { 0; }
- sub myFAIL() { 2; }
- ################################################################################
- # Logging functions.
- # Default is logging to STDOUT, but will also log to logfile if file handle
- ################################################################################
- sub logLine($$)
- {
- my( $level, $line ) = @_;
- my( $curTs ) = getCurrentDateTimeStr();
- if( $level eq LDEBUG )
- {
- printf( "%-5s: %s\n", $level, $line );
- if(defined($runLogFhnd))
- {
- my($line) = sprintf( "$$:%-5s: %s\n", $level, $line );
- print $runLogFhnd $line;
- }
- }
- else
- {
- printf( "%-5s: %s\n", $level, $line );
- if(defined($runLogFhnd))
- {
- my($line) = sprintf( "$$:%-5s: $curTs %s\n", $level, $line );
- print $runLogFhnd $line;
- }
- }
- if($level eq LFATAL)
- {
- my($package, $filename, $line) = caller;
- # printf("%5s: $curTs : Aborting due to FATAL error in '$package' around line No. : $line\n", $level);
- if(defined($runLogFhnd))
- {
- # my($line) = sprintf("$$:%5s: $curTs : Aborting due to FATAL error in '$package' around line No. : $line\n", $level);
- print $runLogFhnd $line;
- close($runLogFhnd);
- }
- exit 2;
- }
- }
- ################################################################################
- # sub getCurrentDateTimeStr
- ################################################################################
- sub getCurrentDateTimeStr()
- {
- my ($sec,$min,$hour,$day,$month,$yr19,@rest) = localtime();
- return($timeStamp);
- }
- ################################################################################
- # sub checkAndCreateDirPath
- # Go through the full dirpath..
- ################################################################################
- sub checkAndCreateDirPath($)
- {
- my $dirpath = shift;
- unless ( -d "$dirpath" )
- {
- logLine(LINFO, "checkAndCreateDirPath: Creating Dir : $dirpath");
- eval { mkpath($dirpath) };
- if ($@)
- {
- logLine(LFATAL, "checkAndCreateDirPath: Failed to create '$dirpath' : $@");
- }
- else
- {
- logLine(LINFO, "checkAndCreateDirPath: Created Dir : $dirpath");
- }
- }
- }
- ################################################################################
- ### sub checkAndCreateDirPath
- ### Go through the full dirpath..
- ##################################################################################
- sub CreateBackupFile($)
- {
- my $tmpFile=shift;
- if(-f "$tmpFile")
- {
- print "TMP file already exists";
- }else{
- print "creating a file";
- open my $OUT, '>>', $tmpFile or die "can't create tmp file '$tmpFile' : $!";
- }
- my $USER_PWD='m_o/Abcdefa321hdrgf@K_M_A';
- my $previouscob=`sqlplus -s $USER_PWD<< EOF
- set heading off;
- set pagesize 0;
- select to_char(T_MINUS_1_DATE,'YYYYMMDD') from MYRIAD_SYSTEM_DATE;
- EOF`;
- $previouscob =~ s/\s+$//;
- print "$previouscob";
- my $prev_file="/var/tmp/checkFilePresent_$previouscob.csv";
- if (-f "$prev_file"){
- unlink $prev_file;
- print "removed previos cobdate files";
- }
- }
- ##############################################
- # my $myriad_env_filepath = $ENV{`MYRIAD_HOME/common/conf/myriad.env`};
- #my $myriad_env_filepath = {'/cs/rfcs/myriad/envs/PRD/common/conf/myriad.env'};
- # my $USER_PWD = $ENV{`MYRIAD_DB_CONN`};
- #my $USER_PWD='myriad_user/user_myriad1234@PLNMY010_MYRIAD_APP';
- #my $USER_PWD='myriad_user/jHgdbfUhfzrhMF82@PZHMY010';
- my $USER_PWD='myriad_owner/Abcdefa321hdrgf@KZHMY103_MYRIAD_APP';
- $cobdate =`sqlplus -s $USER_PWD<< EOF
- set heading off;
- set pagesize 0;
- select to_char(T_ZERO_DATE,'YYYYMMDD') from MYRIAD_SYSTEM_DATE;
- EOF`;
- $cobdate =~ s/\s+$//;
- if ($sourceName eq "PrimoRisk") {
- $directory = "/cs/myrow/myriad/envs/PRD/data/archive/message/primo/riskerror/$cobdate";
- print " Directory :$directory \n";
- $riskError ="RISKERROR";
- $cobdateTag = "COB_DATE";
- $fileTypeTag = "FILE_TYPE";
- $bookIdTag = "BOOK_ID";
- $subBookIdTag ="SUB_BOOK_ID";
- $ticketNumber = "TICKET_NUMBER";
- $errorDescriptionTag = "ERROR_DESCRIPTION";
- $errorTypeTag = "ERROR_TYPE";
- $sourceSysIdTag="SOURCE_SYSTEM_ID";
- $reg ="PRIMO";
- }
- elsif ($sourceName eq "PrimoTrade") {
- $directory = "/cs/myrow/myriad/envs/PRD/data/archive/message/primo/tradeerror/$cobdate";
- $tradeError="TRADEERROR";
- $cobdateTag = "COB_DATE";
- $fileTypeTag = "FILE_TYPE";
- $bookIdTag = "BOOK_ID";
- $subBookIdTag ="SUB_BOOK_ID";
- $ticketNumber = "TICKET_NUMBER";
- $errorDescriptionTag = "ERROR_DESCRIPTION";
- $errorTypeTag = "ERROR_TYPE";
- $sourceSysIdTag="SOURCE_SYSTEM_ID";
- $reg ="PRIMO";
- }
- elsif ($sourceName eq "Jane") {
- #$directory = "/cs/myrow/myriad/envs/PRD/data/file_versions/$cobdate";
- $directory = "/cs/myrch/myriad/envs/IT3/data/file_versions/$cobdate";
- $riskError ="risk";
- $tradeError="trade";
- $surfaceError ="surface";
- }
- elsif ($sourceName eq "Giraffe") {
- $directory = "/cs/myrow/myriad/envs/PRD/data/file_versions/$cobdate";
- $riskError ="RISK";
- $tradeError="TRADE";
- $reg = "GIRAFFE";
- }
- my $logDirectory = "/cs/myrch/" . "/logs";
- # Make sure log dir exists
- checkAndCreateDirPath( $logDirectory );
- my $TMP_FILE="/var/tmp/checkFilePresent_$cobdate.csv";
- # Make sure tmp dir exists
- CreateBackupFile($TMP_FILE);
- # It generates YYYYMMDDhhmmss
- my $t = localtime;
- $timeStamp = sprintf("%04d%02d%02d_%02d-%02d-%02d",
- $t->year+1900, $t->mon + 1, $t->mday,
- $t->hour, $t->min, $t->sec );
- my $errorFileName=$sourceName.'Errors'.$timeStamp.'.html';
- $zipfilename=$sourceName.'Errors'.$timeStamp.'.zip';
- my $errorFile = $logDirectory.'/'.$errorFileName;
- my $tlogname = $sourceName.'Errors'.$timeStamp;
- my( $runLog ) = $logDirectory.'/'.$tlogname.'.log';
- open($runLogFhnd, "+>>$runLog") || logLine(LFATAL, "Failed to open '$runLog' for writing.");
- ########################################################################
- # Creating file for display error Details.
- #######u##################################################################
- open(DATA,"+>>$errorFile") || die "Couldn't open file file.txt, $!";
- print DATA "<html> <TABLE BORDER> \n ";
- print DATA "<tr><td>COB Date</td><td>FO RMS</td><td>Feed Name</td><td>Book</td><td>Sub Book</td><td>GBM BOOK REF</td><td>BOOK ID</td><td>Ticket Number</td><td>Error File Type</td><td>Error Type</td><td>Error Description</td></tr>\n";
- `chmod 777 $errorFile`;
- opendir (DIR, $directory) or exit 0;
- my $num= `cd $directory; ls *ERROR*xml*gz -o *error*xml.gz |wc -l`;
- if($num >=1){
- `cd $directory; gunzip *error*gz; gunzip *ERROR*gz`;
- }
- foreach (sort grep(/^.*\.xml$/,readdir(DIR))){
- my $file = $_;
- my $fileref= `grep $file* $TMP_FILE | wc -l`;
- if($fileref==0)
- {
- if ( $file =~ m/error/i )
- {
- logLine(LINFO, "Source Name : $sourceName ");
- logLine(LINFO, "Get File Name: $file ");
- my @words = split /_/, $file;
- my $errorListTag;
- my $errorTag;
- logLine(LINFO, "Get File first word: $words[0] ,$reg ");
- if ( $sourceName eq "Jane" && ( ( grep {$_ eq $tradeError} @words ) || (grep {$_ eq $riskError} @words )|| ( grep {$_ eq $surfaceError} @words )))
- {
- $reg = $words[0];
- logLine(LINFO, "This check is for only Jane Feed : $reg ");
- }
- if ($words[0] =~ m/$reg/)
- {
- print " regex is working $reg \n";
- if (grep {$_ eq $tradeError} @words) {
- $errorListTag="tradeErrorList";
- $errorTag="tradeError";
- logLine(LINFO, "This is Trade Error: $errorListTag ");
- }
- else
- {
- $errorListTag="rmErrorList";
- $errorTag="rmError";
- logLine(LINFO, "This is Risk/Surface Error: $errorListTag ");
- }
- my $path;
- if ($words[0] eq "GIRAFFE")
- {
- $cobdateTag = "COB_DATE";
- $fileTypeTag = "FILE_TYPE";
- $bookIdTag = "BOOK_ID";
- $subBookIdTag ="SUB_BOOK";
- $ticketNumber = "TICKET_NUMBER";
- $errorDescriptionTag = "ERROR_DESCRIPTION";
- $errorTypeTag = "ERROR_TYPE";
- $sourceSysIdTag ="SOURCE_SYSTEM_ID";
- print "This is GIRAFFE feed \n";
- $path = "$directory/$file";
- }
- elsif ($words[0] ne "PRIMO")
- {
- $cobdateTag = "cobDate";
- $fileTypeTag = "fileType";
- $bookIdTag = "book";
- $subBookIdTag ="subBook";
- $ticketNumber = "ticketNumber";
- $errorDescriptionTag = "description";
- $errorTypeTag = "errorType";
- $sourceSysIdTag = "sourceSystemCode";
- $gbmBookRefTag = "GBM_BOOK_REF";
- $bookTag = "bookId";
- logLine(LINFO, "This is for Jane: $sourceSysIdTag ");
- $path = "$directory/$file";
- }
- else
- {
- $path = "$directory/$file";
- }
- logLine(LINFO, "get File complete path: $path ");
- my $ererrorReport = XMLin($path,ForceArray=>['rmError','book','tradeError']);
- ##########################################################################
- # Reading Header Values :Cobdate and File type.
- ##########################################################################
- my $rmErrorHeaderdata=$ererrorReport->{rmErrorHeader};
- #print Dumper($rmErrorHeaderdata);
- my $cobdate=$rmErrorHeaderdata->{$cobdateTag};
- my $errorFileType=$rmErrorHeaderdata->{$fileTypeTag};
- my $forms=$rmErrorHeaderdata->{$sourceSysIdTag};
- logLine(LINFO, "get Error file details CobDate ErrorFileType Fo RMS: $cobdate $errorFileType $forms ");
- ###########################################################################
- # Reading Body values:Book,Subbook,Ticketnumber,ErrorType,ErrorDescription
- ###########################################################################
- my $rmErrorBodydata = $ererrorReport->{rmErrorBody};
- my $bookListdata = $rmErrorBodydata->{bookList};
- my $books = $bookListdata->{book};
- #print Dumper($books);
- foreach my $book (@{$bookListdata->{book}})
- {
- my $bookId = $book->{$bookIdTag};
- my $subBookId=$book->{$subBookIdTag};
- my $gbmBookRef=$book->{$gbmBookRefTag};
- my $bookRef=$book->{$bookTag};
- my $list = $book->{$errorListTag};
- my $rmErrorData = $list->{$errorTag};
- #print Dumper($rmErrorData);
- foreach my $rmErrorData (@{$list->{$errorTag}})
- {
- my $ticketNumber = $rmErrorData->{$ticketNumber};
- my $errorDesc = $rmErrorData->{$errorDescriptionTag};
- my $errorType = $rmErrorData->{$errorTypeTag};
- logLine(LINFO, "get Error file details Book: $bookId Subbook : $subBookId TicketNumber: $ticketNumber ErrorType : $errorType ");
- print DATA "<tr><td>$cobdate</td><td>$forms</td><td>$file</td><td>$bookId</td><td>$subBookId</td><td>$gbmBookRef</td><td>$bookRef</td><td>$ticketNumber</td><td>$errorFileType</td><td>$errorType</td><td>$errorDesc</td></tr>\n";
- }
- }
- #my $bakFileName=$file.".bak";
- #my $bakFile="$directory/$bakFileName";
- #`mv $path $bakFile`;
- #open(DATA,"+>>$TMP_FILE") || die "Couldn't open file, $!";
- #print DATA "$file \n ";
- #close(DATA);
- }
- }
- open(DATA1,"+>>$TMP_FILE") || die "Couldn't open file, $!";
- print DATA1 "$file \n ";
- close(DATA1);
- }
- closedir(DIR);
- `cd $directory; gzip $file`;
- }
- print DATA "</table></html>\n";
- close (DATA);
- `cd $logDirectory;zip $zipfilename $errorFileName;chmod 777 $zipfilename`;
- my $msg ='Email with ErrorDetails Attachment from Myr';
- my $addr ='d.y@gmail.com';
- `echo "" | mailx -s '$msg' -a '$logDirectory/$zipfilename' '$addr'`;
- logLine(LINFO, "Successfully sent mail to the user ");