#!/usr/bin/perl	-w

use strict;

my $Version= "2.0";
use strict;
use Getopt::Std;
use vars qw(%opts);
use Data::Dumper;

$| = 10;	# no buffering

getopts('j:s:q:v', \%opts); 
print STDERR "\n$0 version $Version\n\n" and exit 0 if $Version and $opts{v};

my $date=`date +%Y%m%d:%H`;
chomp $date;

#print Dumper(\%opts);

if(!defined $opts{s})
{
&usage;
}

if(!defined $opts{j})
{
$opts{j}="%";
}

my $reg_ex_auto=$opts{j};
my $attr=$opts{s};
my $orig_attr=$attr;
$opts{q}=1 if(exists $opts{q});

#print Dumper(\%opts);

$attr=~ s/\./\\./g;
$attr=~ s/\*/\.\*/g;
$attr=~ s/\%/\.\*/g;

my $header_str;
my $tailer_str="# ==T--H--E--#--E--N--D==";

print STDERR "$0 Version $Version\n\n";
print "\nAutosys Job/Regular Expression : $reg_ex_auto\n";
print "Attribute to Search from jils  : $orig_attr\n";
	if($opts{'q'})
	{
	print "Autosys JILs used for Search   : YES\n\n";
	$header_str="# $date JOB: $reg_ex_auto JIL: YES\n";
	}
	else
	{
	print "Autosys JILs used for Search   : NO\n\n";
	$header_str="# $date JOB: $reg_ex_auto JIL: NO\n";
	}

my $auto_inp;

my $auto_input_file="$ENV{'HOME'}/AUTOINPUT";
my $latest_input=0;
my ($first_line,$last_line); 
	if(-f $auto_input_file)
	{

		unless(-r $auto_input_file)
		{
		print "$auto_input_file is Not Accessible.\n\n";
		exit(1);
		}
=head
	open (CHECK,$auto_input_file)|| die "Can't Open for Check Header :$auto_input_file :$!\n";
	my $c=1;


		while(<CHECK>)
		{
		my $line=$_;
			if($c==1)
			{
				if($line eq $header_str)
				{
				$latest_input=1;
				}
				else
				{
				$latest_input=0;
				}
			}
		last;
		$c++;
		}
	close CHECK;
	}
=cut

	$first_line=`head -1 $auto_input_file`;
	$last_line=`tail -1 $auto_input_file`;

		if($first_line eq $header_str && $last_line eq $tailer_str)
		{
		$latest_input=1;
		}
	}
	

	if(!$latest_input)
	{
	print STDERR "Searching in Autosys, Please Wait...";

		if($opts{'q'})
		{
		$auto_inp=`autorep -J $reg_ex_auto -q`;
		}
		else
		{
		$auto_inp=`autorep -J $reg_ex_auto -w`;
		}

	open (WW,">$auto_input_file")|| die "Can't Open for Write :$auto_input_file :$!\n";
	print WW $header_str;
	print WW $auto_inp;
	print WW $tailer_str;
	print STDERR "\rGetting Autosys JIL(s) for \"$reg_ex_auto\" Completed...\n\n";
	close WW;
	}
	else
	{
	print STDERR "Serching in $auto_input_file : $first_line\n\n";
	}

#####################################################################

my ($nul,$val)=split(/\s+/,`wc -l $auto_input_file`);
##print	"==$val==\n";

	if($val==0)
	{
	print STDERR "\nNo Search Result Found for : $reg_ex_auto\n";
	#&usage;
	exit(0);
	}

$/=undef;
open(RR,$auto_input_file) || die "Can't Open for Read :$auto_input_file:$!\n";
my $res_j=<RR>;
my ($line1,$res)=split(/\n/,$res_j,2);

#print "----$line1---\n";
close RR;

my @jobs;
	if(defined $opts{q})
	{
	@jobs=split(/insert_job/, $res);
	}
	else
	{
	@jobs=split(/\n/, $res);
	}

#print STDERR "Generating Search Results using JILs	for	\"$attr\"...\n";
my $found=0;
	foreach my $job (@jobs)
	{
	my @eachjobs=split(/\n/,$job);
	my $count=0;
	my $job_name;
	my $results;
	
		if(defined $opts{q})
		{
		my $fst_line=shift(@eachjobs);
		$fst_line="insert_job".$fst_line;
		unshift(@eachjobs,$fst_line);
		}
	my $jr;
	my  $jr_flg=0;
		foreach	my $eachline (@eachjobs)
		{
			next if($eachline=~ /\/\*/);
			next if($eachline=~ /$tailer_str/);
			#print "==$eachline==\n";
			if($count==0)
			{
				if($eachline=~/insert_job:\s+(.+)\s+job_type/)
				{
				$job_name=&trim($1);
				}
			}
			if(!defined	$opts{q})
			{
				if($eachline=~/^(.+?)\s+(\d\d\/\d\d\/\d{4}|---)/g)
				{
				$job_name=&trim($1);
				}
				
			}
			#print "--$job_name++\n";
			#$jr=`autorep -J $job_name -w`;
			
			if($eachline=~/$attr/i)
			{
			$jr=&trim(`autorep -J $job_name -w | head -5 | tail -1`);
			$eachline=&trim($eachline);
				if($opts{'q'} && $jr_flg==0)
				{
				$jr=~ s/\s{5,}/        /g;
				$results .="$jr\n";
				$jr_flg=1;
				}
			$eachline=~ s/\s{5,}/        /g;
			$results .="\t$eachline\n";
			}	
			$count++;
		}
		
		
		if(defined $results && $results ne "")
		{
		$found++;
			if($opts{'q'})
			{
			#$results="--$found\. $job_name\n$results\n";
			$results="$found\. $results\n";
			}
			else
			{
			$results="$found\. $job_name\n$results\n";
			}
		print $results;
		}
	}
print STDERR "Generating Search Results using JIL(s) for \"$orig_attr\" Completed.\n";
print STDERR "$found Search Result(s) Found...\n\n";

###################### SUBROUTINE :	trim ()##########################
#removes prefix	and	postfixed space/newline/tab	from input string
sub trim
{
my ($str)=@_;
return undef unless(defined	$str);
$str=~s/^\s+|\s+$//g;
return $str;
}

sub usage
{
print STDERR qq(
USAGE: aws -j %Autosys_Job% OR Job_Name -s "key word" -q
          -j Regular Expresion of Autosys jobs (Ex: c_arcs%) OR job name (Optional)
          -s Attribute (key word) to search from Autosys [Jobs/JIL(s)].(Mendatory)
          -q Search the key word from JIL(s) for specified job(s). (Optional)
          -v version

);
exit(0);
}