#!/usr/bin/perl

#------------------------------------------------------------------------------
#This PERL script makes one big list for all the files found under the user supplied
#directory.
#Written by Matthew McCready
#--------------------------------------------------------------------------

use Getopt::Long;
use File::Copy;
use File::Basename;
#use Time::Piece;
use lib "/mt/apps/gpms/DateTrans/lib";
use DateTrans qw(monName monNumber timeFormat AmPmFormat dayNumbeFormat);

#use lib "/home/m/mccre004/File-Recurse-0.11/blib/lib";
#use File::Recurse;


sub usage() {
        print "Usage: $0 [-file=<file>]\n";
        print "Example:perl $0 -file=file\n";
        print " where file is the filename\n";

}
%gOptions;
&GetOptions(\%gOptions, qw(file=s) );
unless ($gOptions{file}) {
        usage();
        exit(1);
};



#Infile = $gOptions{listfile};
$file=$gOptions{file};
#chdir $directory;
$counter=0;

open JSONFILE , "<$file"  or die "Cannot open $file";
$dotLoc=index($file,".");
$baseFile=substr($file,0,$dotLoc-1);
#print "\$baseFile = $baseFile\n"; 
$outFile=$baseFile . ".xml";
print "\$outFile = $outFile\n";
open OUTXML, ">$outFile" or die "Cannot open $outFile" ;

system "cnmod 777 $outFile";
while (<JSONFILE>){
#print "\$_ = $_\n\n";
$line = $_;
#if ($line eq "{"){
#$line =~ /{/
if($line =~ /{/){
$bracketCounter++;
#print "\$bracketCounter = $bracketCounter\n"; 
if ($bracketCounter == 1){
print OUTXML  "<RESTJSON>\n";
print OUTXML  "<FileID>$outFile</FileID>\n";
#$date=`date`;
#my $date =localtime->strftime('%m/%d/%Y');
my $now=`date`;
$mon=substr($now,4,3);

$finalMonth=&monNumber($mon);

$day=substr($now,8,2);
$year=substr($now,24);
$date = $year . $finalMonth . $day;

print OUTXML  "<Date>$date</Date>\n";

}#if ($bracketCounter == 1){


#"layers": [
}elsif($line =~ /layers/){
$layeron="yes";
print OUTXML  "<layers>\n"

#tables
}elsif($line =~/tables/){
if ($ACS2015 eq "yes"){

print OUTXML"<!-- acs 2015 -->\n";
print OUTXML "</SubLayerInfo>\n";
print OUTXML "</LayerInfo>\n";
print OUTXML  "</layers>\n";
print OUTXML "<tables/> \n";
$finishedeLayers="yes";
$ACS2015 ="no";
print "tables ACS2015-------------------------\n\n";

}else{
print OUTXML"<!-- tables -->\n";
print OUTXML "</LayerInfo>\n";
print OUTXML  "</layers>\n";
print OUTXML "<tables/>\n";
$finishedeLayers="yes";
print "tables regular----------------------------------\n\n";
};
#wkid
}elsif($line =~/wkid/){
$semiColonLoc= index($line,":");

$tag=substr($line,0,$semiColonLoc-1);
$tag=substr($line,0,$semiColonLoc-1);
$quoteLoc=index($tag,"\"");
$finalTag=substr($tag,$quoteLoc+1);
#
$value=substr($line,$semiColonLoc+1);
$commaLoc=index($value,",");
$finalValue=substr($value,0,$commaLoc);
#
#print "---------------------------------------------\n";
#print "\$line = $line\n";
#print "\$tag = $tag\n";
#print "\$finalTag = $finalTag\n";
#print "\$value = $value\n";
#print "\$finalValue = $finalValue\n";
#print "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n\n";
$outLine= "<" . $finalTag . ">" . $finalValue . "</" . $finalTag . ">";
print OUTXML "$outLine\n";

#latestWkid
#
}elsif($line =~/latestWkid/){
$semiColonLoc= index($line,":");

$tag=substr($line,0,$semiColonLoc-1);
$tag=substr($line,0,$semiColonLoc-1);
$quoteLoc=index($tag,"\"");
$finalTag=substr($tag,$quoteLoc+1);
#
#$value=substr($line,$semiColonLoc+1);
#$commaLoc=index($value,",");
#$finalValue=substr($value,0,$commaLoc);
##
##print "---------------------------------------------\n";
##print ":q\$line = $line\n";
##print "\$tag = $tag\n";
##print "\$finalTag = $finalTag\n";
##print "\$value = $value\n";
##print "\$finalValue = $finalValue\n";
##print "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n\n";
$outLine= "<" . $finalTag . ">" . $finalValue . "</" . $finalTag . ">";
print OUTXML "$outLine\n";
#units
}elsif($line =~/units/){
$semiColonLoc= index($line,":");

$tag=substr($line,0,$semiColonLoc-1);
$tag=substr($line,0,$semiColonLoc-1);
$quoteLoc=index($tag,"\"");
$finalTag=substr($tag,$quoteLoc+1);
$value=substr($line,$semiColonLoc+1);
$commaLoc=index($value,",");
$finalValue=substr($value,0,$commaLoc);
print OUTXML"<!-- check kere!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->\n";
$outLine= "<" . $finalTag . ">" . $finalValue . "</" . $finalTag . ">";
print OUTXML "$outLine\n";

}elsif($line =~/id/){
$semiColonLoc= index($line,":");
$tag=substr($line,0,$semiColonLoc-1);
$quoteLoc=index($tag,"\"");
$finalTag=substr($tag,$quoteLoc+1);

$value=substr($line,$semiColonLoc+1);
$commaLoc=index($value,",");
$finalValue=substr($value,0,$commaLoc);


if ($line  =~/maxImageWidth/){
$outLine= "<" . $finalTag . ">" . $finalValue . "</" . $finalTag . ">";
}elsif($ACS2016 eq "yes"){
}elsif($ACS2015 eq "yes"){
}else{
$outLine= "<" . $finalTag . ">" . $finalValue . "</" . $finalTag . ">";
print OUTXML "<LayerInfo>\n";
};

}elsif($line =~/mapName/){
#$ACS2016="yes";
$semiColonLoc= index($line,":");
$tag=substr($line,0,$semiColonLoc-1);
$quoteLoc=index($tag,"\"");
$finalTag=substr($tag,$quoteLoc+1);

$value=substr($line,$semiColonLoc+1);
$commaLoc=rindex($value,",");
$quoteLoc = index($value,"\"");
$lastQouteLoc=rindex($value,"\"");
$finalValue=substr($value,$quoteLoc+1,$lastQouteLoc-2);

$outLine= "<" . $finalTag . ">" . $finalValue . "</" . $finalTag . ">";
print OUTXML "$outLine\n"

}elsif($line =~/description/){
#$ACS2016="yes";
$semiColonLoc= index($line,":");
$tag=substr($line,0,$semiColonLoc-1);
$quoteLoc=index($tag,"\"");
$finalTag=substr($tag,$quoteLoc+1);

$value=substr($line,$semiColonLoc+1);
$commaLoc=rindex($value,",");
$quoteLoc = index($value,"\"");
$lastQouteLoc=rindex($value,"\"");
$finalValue=substr($value,$quoteLoc+1,$lastQouteLoc-2);

$outLine= "<" . $finalTag . ">" . $finalValue . "</" . $finalTag . ">";
print OUTXML "$outLine\n"


}elsif($line =~/ACS 2016/){
print "dealing with ACS 2016\n";
$ACS2016="yes";
$semiColonLoc= index($line,":");
$tag=substr($line,0,$semiColonLoc-1);
$quoteLoc=index($tag,"\"");
$finalTag=substr($tag,$quoteLoc+1);

$value=substr($line,$semiColonLoc+1);
$commaLoc=index($value,",");
$quoteLoc = index($value,"\"");
$lastQouteLoc=rindex($value,"\"");
$finalValue=substr($value,$quoteLoc+1,$lastQouteLoc-2);
print "\$line = $line\n";
print "\$quoteLoc = $quoteLoc\n";
print "\$lastQouteLoc = $lastQouteLoc\n";
$outLine= "<" . $finalTag . ">" . $finalValue . "</" . $finalTag . ">";
print "\$outLine = $outLine\n";
print OUTXML "$outLine\n";
print "\n\n\n";

}elsif($line =~/ACS 2015/){
print "dealing with ACS 2015\n";
print OUTXML "</SubLayerInfo>\n";
print OUTXML "</LayerInfo>\n";
print OUTXML "<LayerInfo>\n";
$ACS2016="no";
$ACS2015="yes";

$semiColonLoc= index($line,":");
$tag=substr($line,0,$semiColonLoc-1);
$quoteLoc=index($tag,"\"");
$finalTag=substr($tag,$quoteLoc+1);



$value=substr($line,$semiColonLoc+1);
$commaLoc=index($value,",");
$quoteLoc = index($value,"\"");
$lastQouteLoc=rindex($value,"\"");
$finalValue=substr($value,$quoteLoc+1,$lastQouteLoc-2);
#print "\$quoteLoc = $quoteLoc\n";
#print "\$lastQouteLoc = $lastQouteLoc\n";
$outLine= "<" . $finalTag . ">" . $finalValue . "</" . $finalTag . ">";
print OUTXML "$outLine\n"


}elsif($line =~/name/){
$semiColonLoc= index($line,":");
$tag=substr($line,0,$semiColonLoc-1);
$quoteLoc=index($tag,"\"");
$finalTag=substr($tag,$quoteLoc+1);

if ($ACS2016 eq "yes"){

}else{
$value=substr($line,$semiColonLoc+1);
$commaLoc=index($value,",");
$quoteLoc = index($value,"\"");
$lastQouteLoc=rindex($value,"\"");
$finalValue=substr($value,$quoteLoc+1,$lastQouteLoc-2);
##print "\$quoteLoc = $quoteLoc\n";
##print "\$lastQouteLoc = $lastQouteLoc\n";
$outLine= "<" . $finalTag . ">" . $finalValue . "</" . $finalTag . ">";
print OUTXML "$outLine\n";
};





#maxScale
}elsif($line =~/maxScale/){
$semiColonLoc= index($line,":");
$tag=substr($line,0,$semiColonLoc-1);
$quoteLoc=index($tag,"\"");
$finalTag=substr($tag,$quoteLoc+1);
#print "\$ACS2016 = $ACS2016 (maxscale)\n";
$value=substr($line,$semiColonLoc+1);
$commaLoc=index($value,",");
$finalValue=substr($value,0,$commaLoc);

$outLine= "<" . $finalTag . ">" . $finalValue . "</" . $finalTag . ">";
print OUTXML "$outLine\n";
if ($finishedeLayers ne "yes"){#dealing with the tables. If the tables variable has been reached, do not put the end tag
#print OUTXML "</LayerInfo>\n";
#print "finished the layers!!!!!!!!!!!!!!!!!!!!!!\n";

if($ACS2016 eq "yes"){
$ACS2016Counter++;

#print "dealing with ACS 2016 in th maxScale!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n";
if ($ACS2016Counter >1){
print OUTXML "</SubLayerInfo>\n";
print OUTXML "<SubLayerInfo>\n";
}else{
print OUTXML "<SubLayerInfo>\n";
};

}elsif($ACS2015 eq "yes"){
$ACS2015Counter++;

if ($ACS2015Counter >1){
print OUTXML "</SubLayerInfo>\n";
print OUTXML "<SubLayerInfo>\n";
}else{
print OUTXML "<SubLayerInfo>\n";
};
}else{
print OUTXML "</LayerInfo>\n";
#print "finished the layers!!!!!!!!!!!!!!!!!!!!!!\n";


};


}else{
print "finished with the layers\n";
};

#maxImageWidth
}elsif($line =~/maxImageWidth/){
print "\naaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n";
print "dealing with maxImageWidth\n";
print "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\n\n";

$semiColonLoc= index($line,":");
$tag=substr($line,0,$semiColonLoc-1);
$quoteLoc=index($tag,"\"");
$finalTag=substr($tag,$quoteLoc+1);

$value=substr($line,$semiColonLoc+1);
$commaLoc=index($value,",");
$finalValue=substr($value,0,$commaLoc);
print OUTXML"<!-- check kere!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->\n";
print "<!-- check kere!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->\n";
$outLine= "<" . $finalTag . ">" . $finalValue . "</" . $finalTag . ">";
print OUTXML "$outLine\n";
#print OUTXML "</LayerInfo>\n";

}elsif($line =~/maxImageHeight/){
print "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n";
print "dealing with maxImageHeight\n";
print "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\n\n";

$semiColonLoc= index($line,":");
$tag=substr($line,0,$semiColonLoc-1);
$quoteLoc=index($tag,"\"");
$finalTag=substr($tag,$quoteLoc+1);


$value=substr($line,$semiColonLoc+1);
$commaLoc=index($value,",");
$finalValue=substr($value,0,$commaLoc);
print OUTXML"<!-- check kere!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->\n";
print "<!-- check kere!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->\n";
$outLine= "<" . $finalTag . ">" . $finalValue . "</" . $finalTag . ">";
print OUTXML "$outLine\n";


}elsif($line =~ /:/){ 
$semiColonLoc= index($line,":");

#$tag=substr($line,0,$semiColonLoc-1);
$tag=substr($line,0,$semiColonLoc-1);
$quoteLoc=index($tag,"\"");
$finalTag=substr($tag,$quoteLoc+1);

$value=substr($line,$semiColonLoc+1);
$commaLoc=index($value,",");
$finalValue=substr($value,0,$commaLoc);

#print "---------------------------------------------\n";
#print "\$line = $line\n";
#print "\$tag = $tag\n";
#print "\$finalTag = $finalTag\n";
#print "\$value = $value\n";
#print "\$finalValue = $finalValue\n";
#print "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n\n";
$outLine= "<" . $finalTag . ">" . $finalValue . "</" . $finalTag . ">";
print OUTXML "$outLine\n";


};#if ($line eq "{"){






};#hile (<JSONFILE>){	

print OUTXML  "</RESTJSON>";
