#!/usr/bin/perl

$mainDir="/prodmtdata003/geo/shpgen/tigerline/fe_2013";
$zeroFile="ZeroSize.txt";
$themes="Themes.txt";
$elem="elemDistricts.txt";
$addrfeat ="addrfeat.txt";

opendir DHA, $mainDir or die "cannot open $mainDir: $!";
open Zero, ">$zeroFile";

open THM, ">$themes";
open ELEM, ">$elem";
open ADDRFEAT, ">$addrfeat";

print THM "The following files are have 0KB\n";


foreach $dir (readdir DHA){
#print "\$dir = $dir\n";
$DHAcounter++;
$newDirectory= $mainDir . "/" . $dir;
#print "\$newDirectory = $newDirectory\n";
opendir DHB, $newDirectory or  die "cannot open $newDirectory: $!";
$state =substr($dir,0,2);
$TestState="11";

foreach $file (readdir DHB){
#next unless -z $file;
$completFileName= $newDirectory . "/" . $file;

next unless -z $completFileName;
$ZeroSize[$ZeroSizeCounter]=$newDirectory;
print Zero "$completFileName\n";
$ZeroSizeCounter++;

#2013_linearwater.ea.iso.xml
$UnderLoc=index($file,"_");
$dotLoc=index($file,".");
$length=$dotLoc-$UnderLoc;
$theme=substr($file,$UnderLoc+1,$length);


if ($theme eq "elsd."){
$elemArray[$elemCounter]=$completFileName;
$elemCounter++;
}elsif ($theme eq "addrfeat."){
$addrfeatArray[$addrfeatCounter]=$completFileName;
$addrfeatCounter++;
}elsif ($theme eq "arealm."){
$arealmArray[$arealmCouter]=$completFileName;
$arealmCouter++;
}elsif($theme eq "areawater."){
$areawaterArray[$areawaterCounter]=$completFileName;
$areawaterCounter++;
}elsif ($theme eq "bg."){
$bgArray[$bgCounter]=$completFileName;
$bgCounter++;
}elsif($theme eq "cousub."){
$cousubArray[$cousubCounter]=$completFileName;
$cousubCounter++;
}elsif($theme eq "edges."){
$edgesArray[$edgesCounter]=$completFileName;
}elsif($theme eq "elsd."){
$elsdArray[$elsdCounter]=$completFileName;
$elsdCounter++;
}elsif($theme eq "faces."){
$facesArray[$facesCounter]=$completFileName;
$facesCounter++;
}elsif($theme eq "facesah."){
$facesahArray[$facesahCounter]=$completFileName;
$facesahCounter++;
}elsif($theme eq "facesal."){
$facesalArray[$facesalCounter]=$completFileName;
$facesalCounter++;
}elsif($theme eq "featnames."){
$featnamesArray[$featnamesCounter]=$completFileName;
$featnamesCounter++;
}elsif($theme eq "linearwater."){
$linearwaterArray[$linearwaterCounter]=$completFileName;
$linearwaterCounter++;
}elsif($theme eq "otherid."){
$otheridArray[$otheridCounter]=$completFileName;
$otheridCounter++;
}elsif($theme eq "place."){
$placeArray[$placeCounter]=$completFileName;
$placeCounter++;
}elsif($theme eq "pointlm."){
$pointlmArray[$pointlmCounter]=$completFileName;
$pointlmCounter++;
}elsif($theme eq "prisecroads."){
$prisecroadsArray[$prisecroadsCounter]=$completFileName;
$prisecroadsCounter++;
}elsif($theme eq "puma10."){
$puma10Array[$puma10Counter]=$completFileName;
$puma10Counter++;
}elsif($theme eq "roads."){
$roadsArray[$roadsCounter]=$completFileName;
$roadsCounter++;
}elsif($theme eq "scsd."){
$scsdArray[$scsdCounter]=$completFileName;
$scsdCounter++;
}elsif($theme eq "sldl."){
$sldlArray[$sldlCounter]=$completFileName;
$sldlCounter++;
}elsif($theme eq "sldu."){
$slduArray[$slduCounter]=$completFileName;
$slduCounter++;
}elsif($theme eq "tabblock."){
$tabblockArray[$tabblockCounter]=$completFileName;
$tabblockCounter++;
}elsif($theme eq "tract."){
$tractArray[$tractCounter]=$completFileName;
$tractCounter++;
}elsif($theme eq "unsd."){
$unsdArray[$unsdCounter]=$completFileName;
$unsdCounter++;
}else{
$unknown[$unknownCounter]=$completFileName;
$unknownCounter++;
};

};
};

#/mtdata001/geo/gpms/input/fgdc
$copyDirectory="/mtdata001/geo/gpms/input/fgdc";

sub moveFiles{
$fileToBeMoved=$_[0];
$subTheme=$_[1];
$locLastDash=rindex($fileToBeMoved,"/");
$FullDirectory=substr($fileToBeMoved,0,$locLastDash);
$SecLastDash=rindex($FullDirectory,"/");
$targetState=substr($FullDirectory,$SecLastDash+1,2);
$StateCounty=substr($FullDirectory,$SecLastDash+1);
#tl_2013_01001_edges.shp.xml
$fileToBeCopied= "tl_2013_" . $StateCounty . "_" . $subTheme . ".shp.xml";
$FullfileToBeCopied = $FullDirectory . "/" . $fileToBeCopied;
$copyStateDir = "state" . $targetState;
$FullcopyDirectory = $copyDirectory . "/" . $copyStateDir;

#print "\$FullDirectory = $FullDirectory\n";
#print "\$fileToBeMoved = $fileToBeMoved\n";
#print "\$FullDirectory = $FullDirectory\n";
#print "\$targetState = $targetState\n";
#print "\$fileToBeCopied = $fileToBeCopied\n";
#/prodmtdata003/geo/shpgen/tigerline/fe_2013/48135/2013_areawater.ea.iso.xml
if ($targetState == $TestState){
#system "cp $FullfileToBeCopied $FullcopyDirectory";
$newDirectory = $FullcopyDirectory . "/" . $StateCounty;
if (-e $newDirectory){
}else{
system "mkdir $newDirectory";
};
system "cp $FullfileToBeCopied $newDirectory";
};
};



sub moveFilesDBF{
$fileToBeMoved=$_[0];
$subTheme=$_[1];
$locLastDash=rindex($fileToBeMoved,"/");
$FullDirectory=substr($fileToBeMoved,0,$locLastDash);
$SecLastDash=rindex($FullDirectory,"/");
$targetState=substr($FullDirectory,$SecLastDash+1,2);
$StateCounty=substr($FullDirectory,$SecLastDash+1);
#tl_2013_01001_edges.shp.xml
$fileToBeCopied= "tl_2013_" . $StateCounty . "_" . $subTheme . ".dbf.xml";
$FullfileToBeCopied = $FullDirectory . "/" . $fileToBeCopied;
$copyStateDir = "state" . $targetState;
$FullcopyDirectory = $copyDirectory . "/" . $copyStateDir;

#print "\$FullDirectory = $FullDirectory\n";
#print "\$fileToBeMoved = $fileToBeMoved\n";
#print "\$FullDirectory = $FullDirectory\n";
#print "\$targetState = $targetState\n";
#print "\$fileToBeCopied = $fileToBeCopied\n";
#/prodmtdata003/geo/shpgen/tigerline/fe_2013/48135/2013_areawater.ea.iso.xml
if ($targetState == $TestState){
#ystem "cp $FullfileToBeCopied $FullcopyDirectory";
$newDirectory = $FullcopyDirectory . "/" . $StateCounty;
if (-e $newDirectory){
}else{
system "mkdir $newDirectory";
};
system "cp $FullfileToBeCopied $newDirectory";
};
};




if ($elemCounter >0){
print THM "Missing Elementary School District Files\n";
foreach $elemArray (@elemArray){
print THM "$THMCounter: $elemArray\n";
$THMCounter++;

&moveFiles($elemArray,'elem');
#locLastDash=rindex($elemArray,"/");
#fullDirectory=substr($elemArray,0,
};
};

if ($addrfeatCounter >0){
print THM "Missing Address Feature Files\n";
foreach $addrfeatArray (@addrfeatArray){
print THM "$THMCounter: $addrfeatArray\n";
$THMCounter++;

&moveFiles($addrfeatArray,'addrfeat');
};
};

if ($arealmCouter >0){
print THM "Missing Area Landmark Files\n";
foreach $arealmArray (@arealmArray){
print THM "$THMCounter:$arealmArray\n";
$THMCounter++;
&moveFiles($arealmArray,'arealm');
};
};

if ($areawaterCounter>0){
print THM "Missing Area Water Files\n";

foreach $areawaterArray (@areawaterArray){
print THM "$THMCounter:$areawaterArray\n";
$THMCounter++;
&moveFiles($areawaterArray ,'areawater');
}
}

if ($bgCounter>0){
print THM "Missing Block Group Files\n";
foreach $bgArray (@$bgArray){
print THM "$THMCounter:$bgArray\n";
$THMCounter++;
&moveFiles($bgArray,'bg');
};
};


if ($cousubCounter>0){
print THM "Missing County Subdivision Files\n";
foreach $cousubArray (@cousubArray){
print THM "$THMCounter:$cousubArray\n";
$THMCounter++;
&moveFiles($cousubArray,'cousub');
};
};

if ($edgesCounter>0){
print THM "Missing edges files\n";
foreach $edgesArray (@edgesArray){
print THM "$THMCounter:$edgesArray\n";
$THMCounter++;
&moveFiles($edgesArray,'edges');
};
};

if ($facesCounter>0){
print THM "Missing Faces Files\n";
foreach $facesArray (@facesArray){
print THM "$THMCounter:$facesArray\n";
$THMCounter++;
&moveFiles($facesArray,'faces');
};
};

if ($facesahCounter >0){
print THM "Missing Faces Area Hydrograpohy\n";
foreach $facesahArray (@facesahArray){
print THM "$THMCounter:$facesahArray\n";
$THMCounter++;
&moveFilesDBF($facesahArray,'facesah');
};
};

if ($facesalCounter>0){
print THM "Missing Faces Area Landmark\n";
foreach $facesalArray (@facesalArray){
print THM "$THMCounter:$facesalArray\n";
$THMCounter++;
&moveFiles($facesalArray, '$facesal');
};
};

if ($featnamesCounter>0){
print THM "Missing Feature Name\n";
foreach $featnamesArray (@featnamesCounter){
print THM "$THMCounter:$featnamesArray\n";
$THMCounter++;
&moveFiles($featnamesArray, 'featnames');
};
};

if ($linearwaterCounter>0){
print THM "Missing Linear Water File\n";
foreach $linearwaterArray(@linearwaterArray){
print THM "$THMCounter:$linearwaterArray\n";
$THMCounter++;
&moveFiles($linearwaterArray,'linearwater');
};
};

if ($otheridCounter>0){
print THM "Missing Other Id files\n";
foreach $otheridArray (@otheridArray){
print THM "$THMCounter:$otheridCounter\n";
$THMCounter++;
&moveFilesDBF($otheridArray,'otherid');
};
};

if ($placeCounter>0){
print THM "Missing Place Files\n";
foreach $placeArray (@placeArray){ 
print THM "$THMCounter:$placeArray\n";
$THMCounter++;
&moveFiles($placeArray,'place');

};
};

if ($pointlmCounter >0){
print THM "Missing Point Landmark Files\n";
foreach $pointlmArray (@pointlmArray){
print THM "$THMCounter: $pointlmArray \n";
$THMCounter++;
&moveFiles($pointlmArray,'pointlm');
};
};

if ($prisecroadsCounter>0){
print THM "Missing Primary Secondary Roads Files\n";
foreach $prisecroadsArray (@prisecroadsArray){
print THM "$THMCounter:$prisecroadsArray\n";
$THMCounter++;
&moveFiles($prisecroadsArray,'prisecroads');
};
};

if ($puma10Counter>0){
print THM "Missing Puma 10 Files\n";
foreach $puma10Array (@puma10Array){
print THM "$THMCounter:$puma10Array\n";
$THMCounter++;
&moveFiles($puma10Array,'puma10');
};
};

if ($roadsCounter>0){
print THM "Missing Roads Files\n";
foreach $roadsArray (@roadsArray){
print THM "$THMCounter:$roadsArray\n";
$THMCounter++;
&moveFiles($roadsArray,'roads');
};
};

if ($scsdCounter>0){
print THM "Missing Secondary School District Files\n";
foreach $scsdArray (@scsdArray){
print THM "$THMCounter:$scsdArray\n";
$THMCounter++;
&moveFiles($scsdArray,'scsd');
};
};

if ($sldlCounter>0){
print THM "Missing State Legislative District Lower Files\n";
foreach $sldlArray (@sldlArray){
print THM "$THMCounter:$sldlArray\n";
$THMCounter++;
&moveFiles($sldlArray,'sldl');
};
};

if ($placeCounter>0){
print THM "Missing Places Files\n";
foreach $placeArray (@placeArray){
print THM "$THMCounter:$placeArray\n";
$THMCounter++;
&moveFiles($placeArray,'place');
};
};

if ($pointlmCounter>0){
print THM "Missing Point Landmark Files\n";
foreach $pointlmArray (@pointlmArray){
print THM "$THMCounter:$pointlmArray\n";
$THMCounter++;
&moveFiles($pointlmArray, 'pointlm');
};
};

if ($prisecroadsCounter>0){
print THM "Missing Primary Secondary Roads\n";
foreach $prisecroadsArray (@prisecroadsArray ){
print THM "$THMCounter:$prisecroadsArray\n";
$THMCounter++;
&moveFiles($prisecroadsArray,'prisecroads');
};
};

#f ($puma10Counter>0){
#rint THM "Missing Puma 10 Files\n";

#foreach $puma10Array (@puma10Array){
#print THM "$THMCounter:$puma10Array\n";
#$THMCounter++;
#&moveFiles(
#};
#};

#if ($roadsCounter>0){
#print THM "Missing Roads Files\n";
#foreach $roadsArray (@roadsArray){
#print THM "$THMCounter:$roadsArray\n";
#$THMCounter++;
#};
#};

#if ($scsdCounter>0){
#print THM "Missing Secondary School Districts\n";
#foreach $scsdArray (@scsdArray){
#print THM "$THMCounter:$scsdArray\n";
#$THMCounter++;
#};
#};

#if ($sldlCounter>0){
#print THM "Missing State Legislative Districts (lower)";
#foreach $sldlArray (@sldlArray){
#print THM "$THMCounter:$sldlArray\n";
#$THMCounter++;
#};
#};

if ($slduCounter>0){
print THM "Missing State Legislative Districts (upper)";
foreach $slduArray (@slduArray){
print THM "$THMCounter:$slduArray\n";
$THMCounter++;
&moveFiles($slduArray, 'sldu');
};
};

if ($tabblockCounter>0){
print THM "Missing Tabulation Block\n";
foreach $tabblockArray (@tabblockArray){
print THM "$THMCounter:$tabblockArray\n";
$THMCounter++;
&moveFiles($tabblockArray, 'tabblock');
};
};

if ($tractCounter>0){
print THM "Missing tract files\n";
foreach $tractArray (@tractArray){
print THM "$THMCounter:$tractArray\n";
$THMCounter++;
&moveFiles($tractArray,'tract');
};
};

if ($unsdCounter>0){
print THM "Missing Unified School Districts\n";
foreach $unsdArray (@unsdArray){
print THM "$THMCounter:$unsdArray\n";
$THMCounter++;
&moveFiles($unsdArray,'unsd');
};
};




@ZeroSize = sort @ZeroSize;
$DirList = "DirectoryList.txt";
open DIRL, ">$DirList";

foreach $ZeroSize (@ZeroSize){
if ($ZeroSize ne $prev){
print DIRL "$ZeroSize  ($prevCounter)\n";
$prev = $ZeroSize;
$prevCounter=1;
}else{
$prevCounter++;
};
};



close DIRL;

print "There are $DHAcounter directories in $mainDir. In these directories, $ZeroSizeCounter have zero size\n";
